pdfkit 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.yarn/install-state.gz +0 -0
- package/CHANGELOG.md +15 -2
- package/js/pdfkit.es.js +270 -263
- package/js/pdfkit.es.js.map +1 -1
- package/js/pdfkit.js +194 -99
- package/js/pdfkit.js.map +1 -1
- package/js/pdfkit.standalone.js +351 -294
- package/js/virtual-fs.js +1 -3
- package/package.json +24 -34
- package/rollup.config.mjs +124 -0
- package/types/jest.custom-matchers.d.ts +8 -8
- package/vitest.config.js +11 -0
package/js/pdfkit.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdfkit.es.js","sources":["../lib/abstract_reference.js","../lib/tree.js","../lib/spotcolor.js","../lib/object.js","../lib/reference.js","../lib/utils.js","../lib/page.js","../lib/name_tree.js","../lib/crypto/md5.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/font/afm.js","../lib/font.js","../lib/font/standard.js","../lib/font/embedded.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"],"sourcesContent":["/*\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() {\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)])}`,\n );\n }\n out.push(` /${this._keysName()} [`);\n for (let key of sortedKeys) {\n out.push(\n ` ${PDFObject.convert(this._dataForKey(key))} ${PDFObject.convert(\n this._items[key],\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","export 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 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","/*\nPDFObject - converts JavaScript types into their corresponding PDF types.\nBy Devon Govett\n*/\n\nimport PDFAbstractReference from './abstract_reference';\nimport PDFTree from './tree';\nimport SpotColor from './spotcolor';\n\nconst pad = (str, length) => (Array(length + 1).join('0') + str).slice(-length);\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\n// Convert little endian UTF-16 to big endian\nconst swapBytes = function (buff) {\n const l = buff.length;\n if (l & 0x01) {\n throw new Error('Buffer length must be even');\n } else {\n for (let i = 0, end = l - 1; i < end; i += 2) {\n const a = buff[i];\n buff[i] = buff[i + 1];\n buff[i + 1] = a;\n }\n }\n\n return buff;\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 stringBuffer;\n if (isUnicode) {\n stringBuffer = swapBytes(Buffer.from(`\\ufeff${string}`, 'utf16le'));\n } else {\n stringBuffer = Buffer.from(string.valueOf(), 'ascii');\n }\n\n // Encrypt the string when necessary\n if (encryptFn) {\n string = encryptFn(stringBuffer).toString('binary');\n } else {\n string = stringBuffer.toString('binary');\n }\n\n // Escape characters as required by the spec\n string = string.replace(escapableRe, (c) => escapable[c]);\n\n return `(${string})`;\n\n // Buffers are converted to PDF hex strings\n } else if (Buffer.isBuffer(object)) {\n return `<${object.toString('hex')}>`;\n } else if (\n object instanceof PDFAbstractReference ||\n object instanceof PDFTree ||\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 = encryptFn(Buffer.from(string, 'ascii')).toString('binary');\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 const items = object\n .map((e) => PDFObject.convert(e, encryptFn))\n .join(' ');\n return `[${items}]`;\n } else if ({}.toString.call(object) === '[object Object]') {\n const out = ['<<'];\n for (let key in object) {\n const val = object[key];\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","/*\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';\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 = Buffer.from(chunk + '\\n', 'binary');\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 = 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 if (options.font) document.font(options.font, options.fontFamily);\n if (options.fontSize) document.fontSize(options.fontSize);\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","import md5 from 'js-md5';\n\nexport function md5Hash(data) {\n return new Uint8Array(md5.arrayBuffer(data));\n}\n\nexport function md5Hex(data) {\n return md5(data);\n}\n","import { sha256 } from '@noble/hashes/sha256';\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 if (globalThis.crypto?.getRandomValues) {\n globalThis.crypto.getRandomValues(bytes);\n } else {\n // Node.js < 18.4 fallback\n require('crypto').randomFillSync(bytes);\n }\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 Buffer.from(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 = Buffer.from(ownerPasswordEntry);\n encDict.U = Buffer.from(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 = Buffer.from(ownerPasswordEntry);\n encDict.OE = Buffer.from(ownerEncryptionKeyEntry);\n encDict.U = Buffer.from(userPasswordEntry);\n encDict.UE = Buffer.from(userEncryptionKeyEntry);\n encDict.P = permissions;\n encDict.Perms = Buffer.from(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) => Buffer.from(rc4(new Uint8Array(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(new Uint8Array(buffer), key, iv, true);\n return Buffer.from(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]) {\n color = namedColors[color];\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 roundedRect(x, y, w, h, r) {\n if (r == null) {\n r = 0;\n }\n r = Math.min(r, 0.5 * w, 0.5 * h);\n\n // amount to inset control points from corners (see `ellipse`)\n const c = r * (1.0 - KAPPA);\n\n this.moveTo(x + r, y);\n this.lineTo(x + w - r, y);\n this.bezierCurveTo(x + w - c, y, x + w, y + c, x + w, y + r);\n this.lineTo(x + w, y + h - r);\n this.bezierCurveTo(x + w, y + h - c, x + w - c, y + h, x + w - r, y + h);\n this.lineTo(x + r, y + h);\n this.bezierCurveTo(x + c, y + h, x, y + h - c, x, y + h - r);\n this.lineTo(x, y + r);\n this.bezierCurveTo(x, y + c, x + c, y, x + r, y);\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 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 {string} contents\n */\n constructor(contents) {\n this.attributes = {};\n this.glyphWidths = {};\n this.boundingBoxes = {};\n this.kernPairs = {};\n\n this.parse(contents);\n\n this.bbox = this.attributes['FontBBox'].split(/\\s+/).map((e) => +e);\n this.ascender = +(this.attributes['Ascender'] || 0);\n this.descender = +(this.attributes['Descender'] || 0);\n this.xHeight = +(this.attributes['XHeight'] || 0);\n this.capHeight = +(this.attributes['CapHeight'] || 0);\n this.lineGap =\n this.bbox[3] - this.bbox[1] - (this.ascender - this.descender);\n }\n\n /**\n * @param {string} contents\n */\n parse(contents) {\n let section = '';\n for (let line of contents.split('\\n')) {\n var match;\n var a;\n if ((match = line.match(/^Start(\\w+)/))) {\n section = match[1];\n continue;\n } else if ((match = line.match(/^End(\\w+)/))) {\n section = '';\n continue;\n }\n\n switch (section) {\n case 'FontMetrics':\n match = line.match(/(^\\w+)\\s+(.*)/);\n var key = match[1];\n var value = match[2];\n\n if ((a = this.attributes[key])) {\n if (!Array.isArray(a)) {\n a = this.attributes[key] = [a];\n }\n a.push(value);\n } else {\n this.attributes[key] = value;\n }\n break;\n\n case 'CharMetrics':\n if (!/^CH?\\s/.test(line)) {\n continue;\n }\n var name = line.match(/\\bN\\s+(\\.?\\w+)\\s*;/)[1];\n this.glyphWidths[name] = +line.match(/\\bWX\\s+(\\d+)\\s*;/)[1];\n break;\n\n case 'KernPairs':\n match = line.match(/^KPX\\s+(\\.?\\w+)\\s+(\\.?\\w+)\\s+(-?\\d+)/);\n if (match) {\n this.kernPairs[match[1] + '\\0' + match[2]] = parseInt(match[3]);\n }\n break;\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';\nimport fs from 'fs';\n\n// This insanity is so bundlers can inline the font files\nconst STANDARD_FONTS = {\n Courier() {\n return fs.readFileSync(__dirname + '/data/Courier.afm', 'utf8');\n },\n 'Courier-Bold'() {\n return fs.readFileSync(__dirname + '/data/Courier-Bold.afm', 'utf8');\n },\n 'Courier-Oblique'() {\n return fs.readFileSync(__dirname + '/data/Courier-Oblique.afm', 'utf8');\n },\n 'Courier-BoldOblique'() {\n return fs.readFileSync(__dirname + '/data/Courier-BoldOblique.afm', 'utf8');\n },\n Helvetica() {\n return fs.readFileSync(__dirname + '/data/Helvetica.afm', 'utf8');\n },\n 'Helvetica-Bold'() {\n return fs.readFileSync(__dirname + '/data/Helvetica-Bold.afm', 'utf8');\n },\n 'Helvetica-Oblique'() {\n return fs.readFileSync(__dirname + '/data/Helvetica-Oblique.afm', 'utf8');\n },\n 'Helvetica-BoldOblique'() {\n return fs.readFileSync(\n __dirname + '/data/Helvetica-BoldOblique.afm',\n 'utf8',\n );\n },\n 'Times-Roman'() {\n return fs.readFileSync(__dirname + '/data/Times-Roman.afm', 'utf8');\n },\n 'Times-Bold'() {\n return fs.readFileSync(__dirname + '/data/Times-Bold.afm', 'utf8');\n },\n 'Times-Italic'() {\n return fs.readFileSync(__dirname + '/data/Times-Italic.afm', 'utf8');\n },\n 'Times-BoldItalic'() {\n return fs.readFileSync(__dirname + '/data/Times-BoldItalic.afm', 'utf8');\n },\n Symbol() {\n return fs.readFileSync(__dirname + '/data/Symbol.afm', 'utf8');\n },\n ZapfDingbats() {\n return fs.readFileSync(__dirname + '/data/ZapfDingbats.afm', 'utf8');\n },\n};\n\nclass StandardFont extends PDFFont {\n constructor(document, name, id) {\n super();\n this.document = document;\n this.name = name;\n this.id = id;\n this.font = new AFMFont(STANDARD_FONTS[this.name]());\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 static isStandardFont(name) {\n return name in STANDARD_FONTS;\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 CIDSet = Buffer.from('FFFFFFFFC0', 'hex');\n const CIDSetRef = this.document.ref();\n CIDSetRef.write(CIDSet);\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","import fs from 'fs';\nimport * as fontkit from 'fontkit';\nimport StandardFont from './font/standard';\nimport EmbeddedFont from './font/embedded';\n\nclass PDFFontFactory {\n static open(document, src, family, id) {\n let font;\n if (typeof src === 'string') {\n if (StandardFont.isStandardFont(src)) {\n return new StandardFont(document, src, id);\n }\n\n src = fs.readFileSync(src);\n }\n if (src instanceof Uint8Array) {\n font = fontkit.create(src, family);\n } else if (src instanceof ArrayBuffer) {\n font = fontkit.create(new Uint8Array(src), family);\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) {\n this._fontFamilies[this._font.name] = 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 { EventEmitter } from 'events';\nimport LineBreaker from 'linebreak';\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.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 const indent = this.continuedX || this.indent;\n this.document.x += indent;\n this.lineWidth -= indent;\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 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 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 // 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 = this.document.y + this.document.currentLineHeight(true);\n if (this.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 { y } = this.document; // 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 ({ y } = this.document);\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 = this.document.currentLineHeight(true);\n if (\n this.height != null &&\n this.ellipsis &&\n PDFNumber(this.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(this.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 this.document.y = y;\n } else {\n this.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 const indent = this.continuedX || this.indent;\n this.document.x += indent;\n this.lineWidth -= indent;\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 (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(options.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 const renderedWidth =\n options.textWidth +\n wordSpacing * (options.wordCount - 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","/**\n * Parse EXIF orientation from JPEG buffer\n * @param {Buffer} 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 = data.readUInt16BE(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 = data.readUInt16BE(pos);\n\n // APP1 (EXIF) marker\n if (marker === 0xffe1 && pos + 8 <= data.length) {\n const exifHeader = data.subarray(pos + 2, pos + 8).toString('binary');\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 = data\n .subarray(tiffStart, tiffStart + 2)\n .toString('ascii');\n const isLittleEndian = byteOrder === 'II';\n if (!isLittleEndian && byteOrder !== 'MM') return null;\n\n const read16 = isLittleEndian\n ? (o) => data.readUInt16LE(o)\n : (o) => data.readUInt16BE(o);\n const read32 = isLittleEndian\n ? (o) => data.readUInt32LE(o)\n : (o) => data.readUInt32BE(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 (this.data.readUInt16BE(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 = this.data.readUInt16BE(pos);\n pos += 2;\n if (MARKERS.includes(marker)) {\n break;\n }\n pos += this.data.readUInt16BE(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 = this.data.readUInt16BE(pos);\n pos += 2;\n\n this.width = this.data.readUInt16BE(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 hasAlphaChannel = this.image.hasAlphaChannel;\n const isInterlaced = this.image.interlaceMethod === 1;\n\n this.obj = this.document.ref({\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: hasAlphaChannel ? 8 : this.image.bits,\n Width: this.width,\n Height: this.height,\n Filter: 'FlateDecode',\n });\n\n if (!hasAlphaChannel) {\n const params = this.document.ref({\n Predictor: isInterlaced ? 1 : 15,\n Colors: this.image.colors,\n BitsPerComponent: this.image.bits,\n Columns: this.width,\n });\n\n this.obj.data['DecodeParms'] = params;\n params.end();\n }\n\n if (this.image.palette.length === 0) {\n this.obj.data['ColorSpace'] = this.image.colorSpace;\n } else {\n // embed the color palette in the PDF as an object stream\n const palette = this.document.ref();\n palette.end(Buffer.from(this.image.palette));\n\n // build the color space array for the image\n this.obj.data['ColorSpace'] = [\n 'Indexed',\n 'DeviceRGB',\n this.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 (this.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 = this.image.transparency.grayscale;\n this.obj.data['Mask'] = [val, val];\n } else if (this.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 } = this.image.transparency;\n const mask = [];\n for (let x of rgb) {\n mask.push(x, x);\n }\n\n this.obj.data['Mask'] = mask;\n } else if (this.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 dataDecoded = true;\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 dataDecoded = true;\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 = Buffer.alloc(pixelCount * colorCount);\n const alphaChannel = Buffer.alloc(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 = Buffer.alloc(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(Buffer.from(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 JPEG from './image/jpeg';\nimport PNG from './image/png';\n\nclass PDFImage {\n static open(src, label) {\n let data;\n if (Buffer.isBuffer(src)) {\n data = src;\n } else if (src instanceof ArrayBuffer) {\n data = Buffer.from(new Uint8Array(src));\n } else {\n const match = /^data:.+?;base64,(.*)$/.exec(src);\n if (match) {\n data = Buffer.from(match[1], 'base64');\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 (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') {\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 (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 options.Type = 'Annot';\n options.Rect = this._convertRect(x, y, w, h);\n options.Border = [0, 0, 0];\n\n if (options.Subtype === 'Link' && typeof options.F === 'undefined') {\n options.F = 1 << 2; // Print Annotation Flag\n }\n\n if (options.Subtype !== 'Link') {\n if (options.C == null) {\n options.C = this._normalizeColor(options.color || [0, 0, 0]);\n }\n } // convert colors\n delete options.color;\n\n if (typeof options.Dest === 'string') {\n options.Dest = new String(options.Dest);\n }\n\n const structParent = options.structParent;\n delete options.structParent;\n\n // Capitalize keys\n for (let key in options) {\n const val = options[key];\n options[key[0].toUpperCase() + key.slice(1)] = val;\n }\n\n const ref = this.ref(options);\n this.page.annotations.push(ref);\n\n if (structParent && 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 options.Subtype = 'Text';\n options.Contents = new String(contents);\n if (options.Name == null) {\n options.Name = 'Comment';\n }\n if (options.color == null) {\n options.color = [243, 223, 92];\n }\n return this.annotate(x, y, w, h, options);\n },\n\n goTo(x, y, w, h, name, options = {}) {\n options.Subtype = 'Link';\n options.A = this.ref({\n S: 'GoTo',\n D: new String(name),\n });\n options.A.end();\n return this.annotate(x, y, w, h, options);\n },\n\n link(x, y, w, h, url, options = {}) {\n 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 options.A = this.ref({\n S: 'GoTo',\n D: [pages.Kids[url], 'XYZ', null, null, null],\n });\n options.A.end();\n } else {\n throw new Error(`The document has no page ${url}`);\n }\n } else {\n // Link to an external url\n options.A = this.ref({\n S: 'URI',\n URI: new String(url),\n });\n options.A.end();\n }\n\n if (options.structParent && !options.Contents) {\n options.Contents = new String('');\n }\n\n return this.annotate(x, y, w, h, options);\n },\n\n _markup(x, y, w, h, options = {}) {\n const [x1, y1, x2, y2] = this._convertRect(x, y, w, h);\n options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n\n highlight(x, y, w, h, options = {}) {\n options.Subtype = 'Highlight';\n if (options.color == null) {\n options.color = [241, 238, 148];\n }\n return this._markup(x, y, w, h, options);\n },\n\n underline(x, y, w, h, options = {}) {\n options.Subtype = 'Underline';\n return this._markup(x, y, w, h, options);\n },\n\n strike(x, y, w, h, options = {}) {\n options.Subtype = 'StrikeOut';\n return this._markup(x, y, w, h, options);\n },\n\n lineAnnotation(x1, y1, x2, y2, options = {}) {\n options.Subtype = 'Line';\n options.Contents = new String();\n options.L = [x1, this.page.height - y1, x2, this.page.height - y2];\n return this.annotate(x1, y1, x2, y2, options);\n },\n\n rectAnnotation(x, y, w, h, options = {}) {\n options.Subtype = 'Square';\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n\n ellipseAnnotation(x, y, w, h, options = {}) {\n options.Subtype = 'Circle';\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n\n textAnnotation(x, y, w, h, text, options = {}) {\n options.Subtype = 'FreeText';\n options.Contents = new String(text);\n options.DA = new String();\n return this.annotate(x, y, w, h, options);\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 options.Subtype = 'FileAttachment';\n options.FS = filespec;\n\n // add description from filespec unless description (Contents) has already been set\n if (options.Contents) {\n options.Contents = new String(options.Contents);\n } else if (filespec.data.Desc) {\n options.Contents = filespec.data.Desc;\n }\n\n return this.annotate(x, y, w, h, options);\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 (typeof options.title !== 'undefined') {\n data.T = new String(options.title);\n }\n if (typeof options.lang !== 'undefined') {\n data.Lang = new String(options.lang);\n }\n if (typeof options.alt !== 'undefined') {\n data.Alt = new String(options.alt);\n }\n if (typeof options.expanded !== 'undefined') {\n data.E = new String(options.expanded);\n }\n if (typeof options.actual !== 'undefined') {\n data.ActualText = new String(options.actual);\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\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 let opts = Object.assign({}, options);\n if (type !== null) {\n opts = this._resolveType(type, options);\n }\n opts = this._resolveFlags(opts);\n opts = this._resolveJustify(opts);\n opts = this._resolveFont(opts);\n opts = this._resolveStrings(opts);\n opts = this._resolveColors(opts);\n opts = this._resolveFormat(opts);\n opts.T = new String(name);\n if (opts.parent) {\n opts.Parent = opts.parent;\n delete opts.parent;\n }\n return opts;\n },\n\n _resolveType(type, opts) {\n if (type === 'text') {\n opts.FT = 'Tx';\n } else if (type === 'pushButton') {\n opts.FT = 'Btn';\n opts.pushButton = true;\n } else if (type === 'radioButton') {\n opts.FT = 'Btn';\n opts.radioButton = true;\n } else if (type === 'checkbox') {\n opts.FT = 'Btn';\n } else if (type === 'combo') {\n opts.FT = 'Ch';\n opts.combo = true;\n } else if (type === 'list') {\n opts.FT = 'Ch';\n } else {\n throw new Error(`Invalid form annotation type '${type}'`);\n }\n return opts;\n },\n\n _resolveFormat(opts) {\n const f = opts.format;\n if (f && 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 fnKeystroke += '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 opts.AA = opts.AA ? opts.AA : {};\n opts.AA.K = {\n S: 'JavaScript',\n JS: new String(`${fnKeystroke}(${params});`),\n };\n opts.AA.F = {\n S: 'JavaScript',\n JS: new String(`${fnFormat}(${params});`),\n };\n }\n delete opts.format;\n return opts;\n },\n\n _resolveColors(opts) {\n let color = this._normalizeColor(opts.backgroundColor);\n if (color) {\n if (!opts.MK) {\n opts.MK = {};\n }\n opts.MK.BG = color;\n }\n color = this._normalizeColor(opts.borderColor);\n if (color) {\n if (!opts.MK) {\n opts.MK = {};\n }\n opts.MK.BC = color;\n }\n delete opts.backgroundColor;\n delete opts.borderColor;\n return opts;\n },\n\n _resolveFlags(options) {\n let result = 0;\n Object.keys(options).forEach((key) => {\n if (FIELD_FLAGS[key]) {\n if (options[key]) {\n result |= FIELD_FLAGS[key];\n }\n delete options[key];\n }\n });\n if (result !== 0) {\n options.Ff = options.Ff ? options.Ff : 0;\n options.Ff |= result;\n }\n return options;\n },\n\n _resolveJustify(options) {\n let result = 0;\n if (options.align !== undefined) {\n if (typeof FIELD_JUSTIFY[options.align] === 'number') {\n result = FIELD_JUSTIFY[options.align];\n }\n delete options.align;\n }\n if (result !== 0) {\n options.Q = result; // default\n }\n return options;\n },\n\n _resolveFont(options) {\n // add current font to document-level AcroForm dict if necessary\n if (this._acroform.fonts[this._font.id] == null) {\n this._acroform.fonts[this._font.id] = this._font.ref();\n }\n\n // add current font to field's resource dict (RD) if not the default acroform font\n if (this._acroform.defaultFont !== this._font.name) {\n options.DR = { Font: {} };\n\n // Get the fontSize option. If not set use auto sizing\n const fontSize = options.fontSize || 0;\n\n options.DR.Font[this._font.id] = this._font.ref();\n options.DA = new String(`/${this._font.id} ${fontSize} Tf 0 g`);\n }\n return options;\n },\n\n _resolveStrings(options) {\n let select = [];\n function appendChoices(a) {\n if (Array.isArray(a)) {\n for (let idx = 0; idx < a.length; idx++) {\n if (typeof a[idx] === 'string') {\n select.push(new String(a[idx]));\n } else {\n select.push(a[idx]);\n }\n }\n }\n }\n appendChoices(options.Opt);\n if (options.select) {\n appendChoices(options.select);\n delete options.select;\n }\n if (select.length) {\n options.Opt = select;\n }\n\n Object.keys(VALUE_MAP).forEach((key) => {\n if (options[key] !== undefined) {\n options[VALUE_MAP[key]] = options[key];\n delete options[key];\n }\n });\n ['V', 'DV'].forEach((key) => {\n if (typeof options[key] === 'string') {\n options[key] = new String(options[key]);\n }\n });\n\n if (options.MK && options.MK.CA) {\n options.MK.CA = new String(options.MK.CA);\n }\n if (options.label) {\n options.MK = options.MK ? options.MK : {};\n options.MK.CA = new String(options.label);\n delete options.label;\n }\n return options;\n },\n};\n","import fs from 'fs';\nimport { md5Hex } from '../crypto/md5';\n\nexport default {\n /**\n * Embed contents of `src` in PDF\n * @param {Buffer | ArrayBuffer | string} src input Buffer, 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 (Buffer.isBuffer(src)) {\n data = src;\n } else if (src instanceof ArrayBuffer) {\n data = Buffer.from(new Uint8Array(src));\n } else {\n const match = /^data:(.*?);base64,(.*)$/.exec(src);\n if (match) {\n if (match[1]) {\n refBody.Subtype = match[1].replace('/', '#2F');\n }\n data = Buffer.from(match[2], 'base64');\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 = options.type.replace('/', '#2F');\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 a.Params.CreationDate.getTime() === b.Params.CreationDate.getTime() &&\n ((a.Params.ModDate === undefined && b.Params.ModDate === undefined) ||\n a.Params.ModDate.getTime() === b.Params.ModDate.getTime())\n );\n}\n","import fs from 'fs';\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 const iccProfile = fs.readFileSync(\n `${__dirname}/data/sRGB_IEC61966_2_1.icc`,\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 const font = deepMerge({}, colStyle.font, rowStyle.font, cell.font);\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.Creator}</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(Buffer.from(this.metadata.getXML(), 'utf-8'));\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 stream 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 LineWrapper from './line_wrapper';\nimport SubsetMixin from './mixins/subsets';\nimport TableMixin from './mixins/table';\nimport MetadataMixin from './mixins/metadata';\n\nclass PDFDocument extends stream.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 if (options == null) {\n ({ options } = this);\n }\n\n // end the current page if needed\n if (!this.options.bufferPages) {\n this.flushPages();\n }\n\n // create a page object\n this.page = new PDFPage(this, options);\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 (!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 (!Buffer.isBuffer(data)) {\n data = Buffer.from(data + '\\n', 'binary');\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\nPDFDocument.LineWrapper = LineWrapper;\n\nexport default PDFDocument;\n"],"names":["PDFAbstractReference","toString","Error","PDFTree","constructor","options","arguments","length","undefined","_items","limits","add","key","val","get","sortedKeys","Object","keys","sort","a","b","_compareKeys","out","first","last","push","PDFObject","convert","_dataForKey","_keysName","join","SpotColor","doc","name","C","M","Y","K","id","spotColors","values","ref","Range","C0","C1","map","value","FunctionType","Domain","N","end","pad","str","Array","slice","escapableRe","escapable","swapBytes","buff","l","i","object","encryptFn","String","string","isUnicode","charCodeAt","stringBuffer","Buffer","from","valueOf","replace","c","isBuffer","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","isArray","items","e","call","number","n","Math","round","PDFReference","document","data","gen","compress","Filter","uncompressedLength","buffer","write","chunk","Uint8Array","Length","finalize","offset","_offset","_security","getEncryptFn","concat","zlib","deflateSync","_write","_refEnd","fArray","Float32Array","uArray","Uint32Array","PDFNumber","rounded","fround","normalizeSides","sides","defaultDefinition","transformer","v","top","right","bottom","left","vertical","horizontal","MM_TO_CM","CM_TO_IN","PX_TO_IN","IN_TO_PT","PC_TO_PT","cosine","cos","PI","sine","sin","DEFAULT_MARGINS","SIZES","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","PDFPage","_options","size","layout","userUnit","dimensions","toUpperCase","width","height","content","font","fontFamily","fontSize","margins","margin","x","sizeToPoint","resources","ProcSet","dictionary","Type","Parent","_root","Pages","MediaBox","Contents","Resources","UserUnit","markings","fonts","Font","xobjects","XObject","ext_gstates","ExtGState","patterns","Pattern","colorSpaces","ColorSpace","annotations","Annots","structParentTreeKey","StructParents","createStructParentTreeNextKey","contentWidth","contentHeight","maxY","_setTabOrder","Tabs","hasMarkInfoDictionary","color","PDFNameTree","localeCompare","k","md5Hash","md5","arrayBuffer","md5Hex","sha256Hash","sha256","aesCbcEncrypt","iv","padding","cbc","disablePadding","encrypt","aesEcbEncrypt","ecb","rc4","s","j","output","randomBytes","bytes","globalThis","crypto","getRandomValues","require","randomFillSync","inRange","rangeGroup","startRange","endRange","middleRange","floor","arrayIndex","unassigned_code_points","isUnassignedCodePoint","character","commonly_mapped_to_nothing","isCommonlyMappedToNothing","non_ASCII_space_characters","isNonASCIISpaceCharacter","non_ASCII_controls_characters","non_character_codepoints","prohibited_characters","isProhibitedCharacter","bidirectional_r_al","isBidirectionalRAL","bidirectional_l","isBidirectionalL","mapping2space","mapping2nothing","getCodePoint","codePointAt","toCodePoints","input","codepoints","before","next","saslprep","opts","TypeError","mapped_input","filter","normalized_input","fromCodePoint","apply","normalize","normalized_map","hasProhibited","some","allowUnassigned","hasUnassigned","hasBidiRAL","hasBidiL","isFirstBidiRAL","isLastBidiRAL","PDFSecurity","generateFileID","info","infoStr","CreationDate","getTime","hasOwnProperty","generateRandomWordArray","create","ownerPassword","userPassword","_setupEncryption","pdfVersion","version","encDict","_setupEncryptionV1V2V4","_setupEncryptionV5","r","permissions","keyBits","getPermissionsR2","getPermissionsR3","paddedUserPassword","processPasswordR2R3R4","paddedOwnerPassword","ownerPasswordEntry","getOwnerPasswordR2R3R4","encryptionKey","getEncryptionKeyR2R3R4","_id","userPasswordEntry","getUserPasswordR2","getUserPasswordR3R4","V","CF","StdCF","AuthEvent","CFM","StmF","StrF","R","O","U","P","processedUserPassword","processPasswordR5","processedOwnerPassword","getEncryptionKeyR5","getUserPasswordR5","userKeySalt","userEncryptionKeyEntry","getUserEncryptionKeyR5","getOwnerPasswordR5","ownerKeySalt","ownerEncryptionKeyEntry","getOwnerEncryptionKeyR5","permsEntry","getEncryptedPermissionsR5","OE","UE","Perms","obj","digest","suffix","concatBytes","keyLen","min","saltMarker","encrypted","permissionObject","printing","modifying","copying","annotating","fillingForms","contentAccessibility","documentAssembly","documentId","cipher","xorKey","result","set","permBytes","validationSalt","keySalt","hash","randomPart","password","index","code","PASSWORD_PADDING","unescape","encodeURIComponent","PDFGradient","stops","embedded","transform","stop","pos","opacity","_normalizeColor","_colorSpace","max","setTransform","m11","m12","m21","m22","dx","dy","embed","m","fn","stopsLength","matrix","bounds","encode","Functions","Bounds","Encode","_gradCount","shader","pattern","PatternType","Shading","Matrix","grad","opacityGradient","pageBBox","page","form","Subtype","FormType","BBox","Group","S","CS","Sh1","gstate","SMask","G","opacityPattern","PaintType","TilingType","XStep","YStep","Gs1","stroke","m0","m1","m2","m3","m4","m5","_ctm","_setColorSpace","op","addContent","PDFLinearGradient","x1","y1","x2","y2","ShadingType","Coords","Function","Extend","PDFRadialGradient","r1","r2","underlyingColorSpaces","PDFTilingPattern","bBox","xStep","yStep","stream","createPattern","toFixed","embedPatternColorSpaces","forEach","csName","csId","getPatternColorSpaceId","cs","underlyingColorspace","_patternCount","patternColor","normalizedColor","_getColorSpace","Gradient","initColor","_opacityRegistry","_opacityCount","charAt","hex","parseInt","namedColors","part","_setColor","_setColorCore","space","fillColor","fillOpacity","_fillColor","strokeColor","strokeOpacity","_doOpacity","ca","CA","linearGradient","radialGradient","bbox","addSpotColor","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","cx","cy","px","py","sx","sy","parameters","A","H","h","L","Q","q","T","t","Z","z","isCommand","isWsp","codePoint","isDigit","readNumber","cursor","state","Number","parseFloat","isNaN","parse","path","pathData","command","args","argsCount","canHaveComma","hadComma","newCursor","position","commands","runners","moveTo","bezierCurveTo","quadraticCurveTo","solveArc","lineTo","closePath","y","coords","rx","ry","rot","large","sweep","ex","ey","segs","arcToSegments","seg","bez","segmentToBezier","rotateX","ox","oy","th","sin_th","cos_th","abs","pl","sqrt","a00","a01","a10","a11","x0","y0","d","sfactor_sq","sfactor","xc","yc","th0","atan2","th1","th_arc","segments","ceil","th2","th3","th_half","x3","y3","SVGPath","KAPPA","initVector","_ctmStack","save","restore","pop","lineWidth","w","_CAP_STYLES","BUTT","ROUND","SQUARE","lineCap","_JOIN_STYLES","MITER","BEVEL","lineJoin","miterLimit","dash","originalLength","valid","every","isFinite","JSON","stringify","phase","undash","cp1x","cp1y","cp2x","cp2y","cpx","cpy","rect","roundedRect","ellipse","xe","ye","xm","ym","circle","radius","arc","startAngle","endAngle","anticlockwise","TWO_PI","HALF_PI","deltaAng","dir","numSegs","segAng","handleLen","curAng","deltaCx","deltaCy","ax","ay","segIdx","polygon","_len","points","_key","shift","point","_windingRule","rule","test","fill","fillAndStroke","isFillRule","clip","translate","rotate","angle","rad","origin","scale","xFactor","yFactor","WIN_ANSI_MAP","characters","split","AFMFont","contents","attributes","glyphWidths","boundingBoxes","kernPairs","ascender","descender","xHeight","capHeight","lineGap","section","line","match","encodeText","text","res","len","char","glyphsForString","glyphs","charCode","characterToGlyph","widthOfGlyph","glyph","getKernPair","advancesForGlyphs","advances","PDFFont","widthOfString","lineHeight","includeGap","gap","STANDARD_FONTS","Courier","fs","readFileSync","__dirname","Courier-Bold","Courier-Oblique","Courier-BoldOblique","Helvetica","Helvetica-Bold","Helvetica-Oblique","Helvetica-BoldOblique","Times-Roman","Times-Bold","Times-Italic","Times-BoldItalic","Symbol","ZapfDingbats","StandardFont","BaseFont","Encoding","encoded","positions","xAdvance","yAdvance","xOffset","yOffset","advanceWidth","advance","isStandardFont","toHex","num","EmbeddedFont","subset","createSubset","unicode","widths","getGlyph","postscriptName","unitsPerEm","ascent","descent","fontLayoutCache","layoutCache","layoutRun","features","run","layoutCached","cached","onlyWidth","needle","includes","gid","includeGlyph","codePoints","isCFF","cff","fontFile","familyClass","sFamilyClass","flags","post","isFixedPitch","head","macStyle","italic","tag","fromCharCode","replaceAll","descriptor","FontName","Flags","FontBBox","minX","minY","maxX","ItalicAngle","italicAngle","Ascent","Descent","CapHeight","XHeight","StemV","FontFile3","FontFile2","CIDSet","CIDSetRef","descendantFontData","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","W","CIDToGIDMap","descendantFont","DescendantFonts","ToUnicode","toUnicodeCmap","cmap","entries","chunkSize","chunks","ranges","start","PDFFontFactory","open","src","family","fontkit","ArrayBuffer","isEqualFont","font1","font2","_tables","checkSumAdjustment","records","initFonts","defaultFont","defaultFontFamily","defaultFontSize","_fontFamilies","_fontCount","_fontSource","_fontFamily","_fontSize","_font","_remSize","_registeredFonts","cacheKey","currentLineHeight","registerFont","defaultValue","percentageWidth","multiplier","SOFT_HYPHEN","HYPHEN","LineWrapper","EventEmitter","horizontalScaling","indent","indentAllLines","characterSpacing","wordSpacing","columns","columnGap","spaceLeft","startX","startY","column","ellipsis","continuedX","on","once","continued","align","lastLine","paragraphGap","wordWidth","word","canFit","eachWord","bk","breaker","LineBreaker","wordWidths","nextBreak","shouldContinue","lbk","fbk","mightGrow","mustShrink","required","wrap","nextY","nextSection","textWidth","wc","lc","emitLine","wordCount","emit","lh","continueOnNewPage","formatListLabel","listType","letter","times","initText","_line","bind","_lineGap","moveDown","lines","moveUp","_text","lineCallback","_initOptions","addStructure","structParent","struct","structType","markStructureContent","rotation","wrapper","_wrapper","_textOptions","boundsOfString","words","trim","spaceWidth","x4","y4","xMin","xMax","yMin","yMax","heightOfString","Infinity","list","unit","midLine","bulletRadius","textIndent","itemIndent","bulletIndent","level","levels","numbers","flatten","item","drawListItem","listItem","itemType","labelType","bodyType","structTypes","diff","_fragment","assign","lineBreak","baseline","renderedWidth","link","linkOptions","_currentStructureElement","goTo","destination","addNamedDestination","underline","lineY","strike","oblique","skew","mode","encodedWord","positionsWord","hadOffset","addSegment","cur","flush","parseExifOrientation","marker","readUInt16BE","segmentLength","exifHeader","subarray","tiffStart","byteOrder","isLittleEndian","read16","o","readUInt16LE","read32","readUInt32LE","readUInt32BE","ifdPos","entryCount","entryPos","MARKERS","COLOR_SPACE_MAP","JPEG","label","orientation","bits","channels","colorSpace","BitsPerComponent","Width","Height","PNGImage","image","PNG","imgData","dataDecoded","hasAlphaChannel","isInterlaced","interlaceMethod","params","Predictor","Colors","colors","Columns","palette","transparency","grayscale","rgb","mask","indexed","loadIndexedAlphaChannel","splitAlphaChannel","decodeData","alphaChannel","sMask","Decode","decodePixels","pixels","p","colorCount","pixelCount","alloc","skipByteCount","colorIndex","PDFImage","exec","initImages","_imageRegistry","_imageCount","bh","bp","bw","ip","left1","originX","originY","ignoreOrientation","inDocumentFlow","openImage","wp","hp","fit","cover","valign","rotateAngle","xTransform","yTransform","hTransform","wTransform","PDFAnnotationReference","annotationRef","annotate","Rect","_convertRect","Border","F","Dest","annotRef","note","Name","D","url","pages","Kids","URI","_markup","QuadPoints","highlight","lineAnnotation","rectAnnotation","ellipseAnnotation","textAnnotation","DA","fileAnnotation","file","filespec","hidden","FS","Desc","DEFAULT_OPTIONS","zoom","pageNumber","expanded","PDFOutline","parent","title","dest","outlineData","destWidth","destHeight","children","addItem","endOutline","Count","First","Last","child","Prev","Next","initOutline","outline","Outlines","PageMode","PDFStructureContent","pageRef","mcid","refs","structContent","PDFStructureElement","type","_attached","_ended","_flushed","_isValidChild","lang","Lang","alt","Alt","E","actual","ActualText","_children","setParent","setAttached","_addContentToParentTree","_addAnnotationToParentTree","_contentForClosure","_ref","pageStructParents","getStructParentTree","parentTreeKey","StructParent","parentTree","parentRef","_flush","closure","prevStructElement","wasEnded","endMarkedContent","_isFlushable","_flushChild","_ref2","Pg","MCID","objr","Obj","PDFNumberTree","initMarkings","structChildren","tagged","getMarkInfoDictionary","Marked","getStructTreeRoot","markContent","toClose","marking","attached","Attached","structElem","structTreeRoot","initPageMarkings","pageMarkings","newStructContent","endPageMarkings","MarkInfo","StructTreeRoot","ParentTree","ParentTreeNextKey","endMarkings","FIELD_FLAGS","readOnly","noExport","multiline","toggleToOffButton","radioButton","pushButton","combo","edit","multiSelect","noSpell","FIELD_JUSTIFY","center","VALUE_MAP","FORMAT_SPECIAL","zip","zipPlus4","zip4","phone","ssn","FORMAT_DEFAULT","nDec","sepComma","negStyle","currency","currencyPrepend","percent","initForm","_acroform","Fields","NeedAppearances","DR","AcroForm","endAcroForm","fontDict","fieldRef","_endChild","childRef","formField","fieldDict","_fieldDict","_addToParent","formAnnotation","formText","formPushButton","formCombo","formList","formRadioButton","formCheckbox","_resolveType","_resolveFlags","_resolveJustify","_resolveFont","_resolveStrings","_resolveColors","_resolveFormat","FT","f","format","fnKeystroke","fnFormat","param","AA","JS","backgroundColor","MK","BG","borderColor","BC","Ff","select","appendChoices","idx","Opt","relationship","refBody","Params","birthtime","ctime","statSync","ModDate","creationDate","modifiedDate","checksum","CheckSum","Size","byteLength","_fileRegistry","isEqual","fileSpecBody","AFRelationship","EF","UF","description","addNamedEmbeddedFile","AF","initPDFA","pSubset","subset_conformance","endSubset","_addPdfaMetadata","_addColorOutputIntent","iccProfile","colorProfileRef","intentRef","Info","OutputConditionIdentifier","DestOutputProfile","OutputIntents","_getPdfaid","appendXML","initPDFUA","_addPdfuaMetadata","_getPdfuaid","_importSubset","initSubset","PDFA","PDFUA","ROW_FIELDS","COLUMN_FIELDS","memoize","maxSize","cache","Map","has","delete","isObject","deepMerge","target","deepClone","sources","source","normalizedDefaultStyle","defaultStyleInternal","defaultStyle","defaultRowStyle","fromEntries","defaultColStyle","border","normalizeAlignment","normalizedRowStyle","rowStyleInternal","rowStyle","minHeight","maxHeight","normalizedColumnStyle","colStyleInternal","colStyle","_maxWidth","minWidth","maxWidth","normalizeTable","_tableIndex","_position","_defaultStyle","columnStyles","_colStyle","rowStyles","_rowStyle","normalizeText","normalizeCell","cell","rowIndex","colIndex","customFont","rollbackFont","rollbackFontSize","rollbackFontFamily","config","rowSpan","colSpan","textStroke","textStrokeColor","textColor","textOptions","scope","toLowerCase","debug","normalizeRow","row","_cellClaim","Set","ensure","_columnWidths","ensureColumnWidths","reduce","_rowHeights","_rowYPos","_rowBuffer","numCols","starColumnIndexes","starMinAcc","unclaimedWidth","col","starColCount","starSize","tempX","_columnXPos","measure","toRender","measureCell","rowHeight","acc","textBounds","newPage","console","warn","stack","cellWidth","cellHeight","textAllocatedWidth","textAllocatedHeight","textMaxWidth","textMaxHeight","computeBounds","unRotatedTextBounds","textX","textY","allocWidth","allocHeight","FG","denominator","accommodateTable","_tableStruct","ID","PDFDocument","_headerRowLookup","_headerColumnLookup","accommodateCleanup","accessibleRow","renderCell","rowStruct","accessibleCell","callback","cellStruct","Padding","RowSpan","ColSpan","BorderThickness","Scope","Headers","_","flat","Boolean","normalizeColor","BackgroundColor","hasBorder","BorderColor","renderRow","cellRenderer","renderBorder","renderCellText","Ah","Aw","Cw","Ch","Ox","Oy","PxScale","Px","PyScale","Py","PDFTable","freeze","_currRowIndex","lastRow","yPos","initTables","table","PDFMetadata","_metadata","_closeTags","append","xml","newline","getXML","getLength","initMetadata","metadata","_addInfo","toISOString","Creator","Title","Author","Subject","Keywords","endMetadata","metadataRef","Metadata","Readable","_pageBuffer","_pageBufferStart","_offsets","_waiting","Names","Dests","pageLayout","PageLayout","Producer","displayTitle","ViewerPreferences","DisplayDocTitle","autoFirstPage","addPage","bufferPages","flushPages","bufferedPageRange","count","switchToPage","unshift","EmbeddedFiles","addNamedJavaScript","js","JavaScript","_read","_finalize","_info","entry","xRefOffset","trailer","Root","Encrypt","mixin","methods","prototype","MetadataMixin","ColorMixin","VectorMixin","FontsMixin","TextMixin","ImagesMixin","AnnotationsMixin","OutlineMixin","MarkingsMixin","AcroFormMixin","AttachmentsMixin","SubsetMixin","TableMixin"],"mappings":"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M,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,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,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC1E,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,OAA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AAM,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,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"}
|
|
1
|
+
{"version":3,"file":"pdfkit.es.js","sources":["../lib/abstract_reference.js","../lib/tree.js","../lib/spotcolor.js","../lib/object.js","../lib/reference.js","../lib/utils.js","../lib/page.js","../lib/name_tree.js","../lib/crypto/md5.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/font/afm.js","../lib/font.js","../lib/font/standard.js","../lib/font/embedded.js","../lib/font_factory.js","../lib/mixins/fonts.js","../lib/line_wrapper.js","../lib/mixins/text.js","../lib/binary.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"],"sourcesContent":["/*\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() {\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)])}`,\n );\n }\n out.push(` /${this._keysName()} [`);\n for (let key of sortedKeys) {\n out.push(\n ` ${PDFObject.convert(this._dataForKey(key))} ${PDFObject.convert(\n this._items[key],\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","/*\nPDFObject - converts JavaScript types into their corresponding PDF types.\nBy Devon Govett\n*/\n\nimport PDFAbstractReference from './abstract_reference';\nimport PDFTree from './tree';\nimport SpotColor from './spotcolor';\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\n// Convert little endian UTF-16 to big endian\nconst swapBytes = function (buff) {\n const l = buff.length;\n if (l & 0x01) {\n throw new Error('Buffer length must be even');\n } else {\n for (let i = 0, end = l - 1; i < end; i += 2) {\n const a = buff[i];\n buff[i] = buff[i + 1];\n buff[i + 1] = a;\n }\n }\n\n return buff;\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 stringBuffer;\n if (isUnicode) {\n stringBuffer = swapBytes(Buffer.from(`\\ufeff${string}`, 'utf16le'));\n } else {\n stringBuffer = Buffer.from(string.valueOf(), 'ascii');\n }\n\n // Encrypt the string when necessary\n if (encryptFn) {\n string = encryptFn(stringBuffer).toString('binary');\n } else {\n string = stringBuffer.toString('binary');\n }\n\n // Escape characters as required by the spec\n string = string.replace(escapableRe, (c) => escapable[c]);\n\n return `(${string})`;\n\n // Buffers are converted to PDF hex strings\n } else if (Buffer.isBuffer(object)) {\n return `<${object.toString('hex')}>`;\n } else if (\n object instanceof PDFAbstractReference ||\n object instanceof PDFTree ||\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 = encryptFn(Buffer.from(string, 'ascii')).toString('binary');\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 const items = object\n .map((e) => PDFObject.convert(e, encryptFn))\n .join(' ');\n return `[${items}]`;\n } else if ({}.toString.call(object) === '[object Object]') {\n const out = ['<<'];\n for (let key in object) {\n const val = object[key];\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","/*\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';\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 = Buffer.from(chunk + '\\n', 'binary');\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 = 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 if (options.font) document.font(options.font, options.fontFamily);\n if (options.fontSize) document.fontSize(options.fontSize);\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","import md5 from 'js-md5';\n\nexport function md5Hash(data) {\n return new Uint8Array(md5.arrayBuffer(data));\n}\n\nexport function md5Hex(data) {\n return md5(data);\n}\n","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 Buffer.from(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 = Buffer.from(ownerPasswordEntry);\n encDict.U = Buffer.from(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 = Buffer.from(ownerPasswordEntry);\n encDict.OE = Buffer.from(ownerEncryptionKeyEntry);\n encDict.U = Buffer.from(userPasswordEntry);\n encDict.UE = Buffer.from(userEncryptionKeyEntry);\n encDict.P = permissions;\n encDict.Perms = Buffer.from(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) => Buffer.from(rc4(new Uint8Array(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(new Uint8Array(buffer), key, iv, true);\n return Buffer.from(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]) {\n color = namedColors[color];\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 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 {string} contents\n */\n constructor(contents) {\n this.attributes = {};\n this.glyphWidths = {};\n this.boundingBoxes = {};\n this.kernPairs = {};\n\n this.parse(contents);\n\n this.bbox = this.attributes['FontBBox'].split(/\\s+/).map((e) => +e);\n this.ascender = +(this.attributes['Ascender'] || 0);\n this.descender = +(this.attributes['Descender'] || 0);\n this.xHeight = +(this.attributes['XHeight'] || 0);\n this.capHeight = +(this.attributes['CapHeight'] || 0);\n this.lineGap =\n this.bbox[3] - this.bbox[1] - (this.ascender - this.descender);\n }\n\n /**\n * @param {string} contents\n */\n parse(contents) {\n let section = '';\n for (let line of contents.split('\\n')) {\n var match;\n var a;\n if ((match = line.match(/^Start(\\w+)/))) {\n section = match[1];\n continue;\n } else if (line.match(/^End(\\w+)/)) {\n section = '';\n continue;\n }\n\n switch (section) {\n case 'FontMetrics':\n match = line.match(/(^\\w+)\\s+(.*)/);\n var key = match[1];\n var value = match[2];\n\n if ((a = this.attributes[key])) {\n if (!Array.isArray(a)) {\n a = this.attributes[key] = [a];\n }\n a.push(value);\n } else {\n this.attributes[key] = value;\n }\n break;\n\n case 'CharMetrics':\n if (!/^CH?\\s/.test(line)) {\n continue;\n }\n var name = line.match(/\\bN\\s+(\\.?\\w+)\\s*;/)[1];\n this.glyphWidths[name] = +line.match(/\\bWX\\s+(\\d+)\\s*;/)[1];\n break;\n\n case 'KernPairs':\n match = line.match(/^KPX\\s+(\\.?\\w+)\\s+(\\.?\\w+)\\s+(-?\\d+)/);\n if (match) {\n this.kernPairs[match[1] + '\\0' + match[2]] = parseInt(match[3]);\n }\n break;\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';\nimport fs from 'fs';\n\n// This insanity is so bundlers can inline the font files\nconst STANDARD_FONTS = {\n Courier() {\n return fs.readFileSync(__dirname + '/data/Courier.afm', 'utf8');\n },\n 'Courier-Bold'() {\n return fs.readFileSync(__dirname + '/data/Courier-Bold.afm', 'utf8');\n },\n 'Courier-Oblique'() {\n return fs.readFileSync(__dirname + '/data/Courier-Oblique.afm', 'utf8');\n },\n 'Courier-BoldOblique'() {\n return fs.readFileSync(__dirname + '/data/Courier-BoldOblique.afm', 'utf8');\n },\n Helvetica() {\n return fs.readFileSync(__dirname + '/data/Helvetica.afm', 'utf8');\n },\n 'Helvetica-Bold'() {\n return fs.readFileSync(__dirname + '/data/Helvetica-Bold.afm', 'utf8');\n },\n 'Helvetica-Oblique'() {\n return fs.readFileSync(__dirname + '/data/Helvetica-Oblique.afm', 'utf8');\n },\n 'Helvetica-BoldOblique'() {\n return fs.readFileSync(\n __dirname + '/data/Helvetica-BoldOblique.afm',\n 'utf8',\n );\n },\n 'Times-Roman'() {\n return fs.readFileSync(__dirname + '/data/Times-Roman.afm', 'utf8');\n },\n 'Times-Bold'() {\n return fs.readFileSync(__dirname + '/data/Times-Bold.afm', 'utf8');\n },\n 'Times-Italic'() {\n return fs.readFileSync(__dirname + '/data/Times-Italic.afm', 'utf8');\n },\n 'Times-BoldItalic'() {\n return fs.readFileSync(__dirname + '/data/Times-BoldItalic.afm', 'utf8');\n },\n Symbol() {\n return fs.readFileSync(__dirname + '/data/Symbol.afm', 'utf8');\n },\n ZapfDingbats() {\n return fs.readFileSync(__dirname + '/data/ZapfDingbats.afm', 'utf8');\n },\n};\n\nclass StandardFont extends PDFFont {\n constructor(document, name, id) {\n super();\n this.document = document;\n this.name = name;\n this.id = id;\n this.font = new AFMFont(STANDARD_FONTS[this.name]());\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 static isStandardFont(name) {\n return name in STANDARD_FONTS;\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 = Buffer.alloc(Math.ceil((maxCID + 1) / 8), 0);\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","import fs from 'fs';\nimport { create } from 'fontkit';\nimport StandardFont from './font/standard';\nimport EmbeddedFont from './font/embedded';\n\nclass PDFFontFactory {\n static open(document, src, family, id) {\n let font;\n if (typeof src === 'string') {\n if (StandardFont.isStandardFont(src)) {\n return new StandardFont(document, 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 }\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 { PDFNumber } from './utils';\n\nconst SOFT_HYPHEN = '\\u00AD';\nconst HYPHEN = '-';\n\nclass LineWrapper {\n constructor(document, options) {\n this._listeners = Object.create(null);\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.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 const indent = this.continuedX || this.indent;\n this.document.x += indent;\n this.lineWidth -= indent;\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 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 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 on(event, listener) {\n (this._listeners[event] || (this._listeners[event] = [])).push(listener);\n }\n\n once(event, listener) {\n const wrapper = (...args) => {\n const listeners = this._listeners[event];\n listeners.splice(listeners.indexOf(wrapper), 1);\n listener(...args);\n };\n this.on(event, wrapper);\n }\n\n emit(event, ...args) {\n const listeners = this._listeners[event];\n if (!listeners) return;\n for (const listener of listeners.slice()) listener(...args);\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 const indent = this.continuedX || this.indent;\n this.document.x += indent;\n this.lineWidth -= indent;\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 const renderedWidth =\n options.textWidth +\n wordSpacing * (options.wordCount - 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","/*\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 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","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 (this.data.readUInt16BE(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 = this.data.readUInt16BE(pos);\n pos += 2;\n if (MARKERS.includes(marker)) {\n break;\n }\n pos += this.data.readUInt16BE(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 = this.data.readUInt16BE(pos);\n pos += 2;\n\n this.width = this.data.readUInt16BE(pos);\n pos += 2;\n\n const channels = this.data[pos + 1];\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(Buffer.from(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 = Buffer.alloc(pixelCount * colorCount);\n const alphaChannel = Buffer.alloc(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 = Buffer.alloc(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(Buffer.from(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 JPEG from './image/jpeg';\nimport PNG from './image/png';\n\nclass PDFImage {\n static open(src, label) {\n let data;\n if (Buffer.isBuffer(src)) {\n data = src;\n } else if (src instanceof ArrayBuffer) {\n data = Buffer.from(new Uint8Array(src));\n } else {\n const match = /^data:.+?;base64,(.*)$/.exec(src);\n if (match) {\n data = Buffer.from(match[1], 'base64');\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 options.Type = 'Annot';\n options.Rect = this._convertRect(x, y, w, h);\n options.Border = [0, 0, 0];\n\n if (options.Subtype === 'Link' && typeof options.F === 'undefined') {\n options.F = 1 << 2; // Print Annotation Flag\n }\n\n if (options.Subtype !== 'Link') {\n if (options.C == null) {\n options.C = this._normalizeColor(options.color || [0, 0, 0]);\n }\n } // convert colors\n delete options.color;\n\n if (typeof options.Dest === 'string') {\n options.Dest = new String(options.Dest);\n }\n\n const structParent = options.structParent;\n delete options.structParent;\n\n // Capitalize keys\n for (let key in options) {\n const val = options[key];\n options[key[0].toUpperCase() + key.slice(1)] = val;\n }\n\n const ref = this.ref(options);\n this.page.annotations.push(ref);\n\n if (structParent && 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 options.Subtype = 'Text';\n options.Contents = new String(contents);\n if (options.Name == null) {\n options.Name = 'Comment';\n }\n if (options.color == null) {\n options.color = [243, 223, 92];\n }\n return this.annotate(x, y, w, h, options);\n },\n\n goTo(x, y, w, h, name, options = {}) {\n options.Subtype = 'Link';\n options.A = this.ref({\n S: 'GoTo',\n D: new String(name),\n });\n options.A.end();\n return this.annotate(x, y, w, h, options);\n },\n\n link(x, y, w, h, url, options = {}) {\n 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 options.A = this.ref({\n S: 'GoTo',\n D: [pages.Kids[url], 'XYZ', null, null, null],\n });\n options.A.end();\n } else {\n throw new Error(`The document has no page ${url}`);\n }\n } else {\n // Link to an external url\n options.A = this.ref({\n S: 'URI',\n URI: new String(url),\n });\n options.A.end();\n }\n\n if (options.structParent && !options.Contents) {\n options.Contents = new String('');\n }\n\n return this.annotate(x, y, w, h, options);\n },\n\n _markup(x, y, w, h, options = {}) {\n const [x1, y1, x2, y2] = this._convertRect(x, y, w, h);\n options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n\n highlight(x, y, w, h, options = {}) {\n options.Subtype = 'Highlight';\n if (options.color == null) {\n options.color = [241, 238, 148];\n }\n return this._markup(x, y, w, h, options);\n },\n\n underline(x, y, w, h, options = {}) {\n options.Subtype = 'Underline';\n return this._markup(x, y, w, h, options);\n },\n\n strike(x, y, w, h, options = {}) {\n options.Subtype = 'StrikeOut';\n return this._markup(x, y, w, h, options);\n },\n\n lineAnnotation(x1, y1, x2, y2, options = {}) {\n options.Subtype = 'Line';\n options.Contents = new String();\n options.L = [x1, this.page.height - y1, x2, this.page.height - y2];\n return this.annotate(x1, y1, x2, y2, options);\n },\n\n rectAnnotation(x, y, w, h, options = {}) {\n options.Subtype = 'Square';\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n\n ellipseAnnotation(x, y, w, h, options = {}) {\n options.Subtype = 'Circle';\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n\n textAnnotation(x, y, w, h, text, options = {}) {\n options.Subtype = 'FreeText';\n options.Contents = new String(text);\n options.DA = new String();\n return this.annotate(x, y, w, h, options);\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 options.Subtype = 'FileAttachment';\n options.FS = filespec;\n\n // add description from filespec unless description (Contents) has already been set\n if (options.Contents) {\n options.Contents = new String(options.Contents);\n } else if (filespec.data.Desc) {\n options.Contents = filespec.data.Desc;\n }\n\n return this.annotate(x, y, w, h, options);\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\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 let opts = Object.assign({}, options);\n if (type !== null) {\n opts = this._resolveType(type, options);\n }\n opts = this._resolveFlags(opts);\n opts = this._resolveJustify(opts);\n opts = this._resolveFont(opts);\n opts = this._resolveStrings(opts);\n opts = this._resolveColors(opts);\n opts = this._resolveFormat(opts);\n opts.T = new String(name);\n if (opts.parent) {\n opts.Parent = opts.parent;\n delete opts.parent;\n }\n return opts;\n },\n\n _resolveType(type, opts) {\n if (type === 'text') {\n opts.FT = 'Tx';\n } else if (type === 'pushButton') {\n opts.FT = 'Btn';\n opts.pushButton = true;\n } else if (type === 'radioButton') {\n opts.FT = 'Btn';\n opts.radioButton = true;\n } else if (type === 'checkbox') {\n opts.FT = 'Btn';\n } else if (type === 'combo') {\n opts.FT = 'Ch';\n opts.combo = true;\n } else if (type === 'list') {\n opts.FT = 'Ch';\n } else {\n throw new Error(`Invalid form annotation type '${type}'`);\n }\n return opts;\n },\n\n _resolveFormat(opts) {\n const f = opts.format;\n if (f && 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 fnKeystroke += '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 opts.AA = opts.AA ? opts.AA : {};\n opts.AA.K = {\n S: 'JavaScript',\n JS: new String(`${fnKeystroke}(${params});`),\n };\n opts.AA.F = {\n S: 'JavaScript',\n JS: new String(`${fnFormat}(${params});`),\n };\n }\n delete opts.format;\n return opts;\n },\n\n _resolveColors(opts) {\n let color = this._normalizeColor(opts.backgroundColor);\n if (color) {\n if (!opts.MK) {\n opts.MK = {};\n }\n opts.MK.BG = color;\n }\n color = this._normalizeColor(opts.borderColor);\n if (color) {\n if (!opts.MK) {\n opts.MK = {};\n }\n opts.MK.BC = color;\n }\n delete opts.backgroundColor;\n delete opts.borderColor;\n return opts;\n },\n\n _resolveFlags(options) {\n let result = 0;\n Object.keys(options).forEach((key) => {\n if (FIELD_FLAGS[key]) {\n if (options[key]) {\n result |= FIELD_FLAGS[key];\n }\n delete options[key];\n }\n });\n if (result !== 0) {\n options.Ff = options.Ff ? options.Ff : 0;\n options.Ff |= result;\n }\n return options;\n },\n\n _resolveJustify(options) {\n let result = 0;\n if (options.align !== undefined) {\n if (typeof FIELD_JUSTIFY[options.align] === 'number') {\n result = FIELD_JUSTIFY[options.align];\n }\n delete options.align;\n }\n if (result !== 0) {\n options.Q = result; // default\n }\n return options;\n },\n\n _resolveFont(options) {\n // add current font to document-level AcroForm dict if necessary\n if (this._acroform.fonts[this._font.id] == null) {\n this._acroform.fonts[this._font.id] = this._font.ref();\n }\n\n // add current font to field's resource dict (RD) if not the default acroform font\n if (this._acroform.defaultFont !== this._font.name) {\n options.DR = { Font: {} };\n\n // Get the fontSize option. If not set use auto sizing\n const fontSize = options.fontSize || 0;\n\n options.DR.Font[this._font.id] = this._font.ref();\n options.DA = new String(`/${this._font.id} ${fontSize} Tf 0 g`);\n }\n return options;\n },\n\n _resolveStrings(options) {\n let select = [];\n function appendChoices(a) {\n if (Array.isArray(a)) {\n for (let idx = 0; idx < a.length; idx++) {\n if (typeof a[idx] === 'string') {\n select.push(new String(a[idx]));\n } else {\n select.push(a[idx]);\n }\n }\n }\n }\n appendChoices(options.Opt);\n if (options.select) {\n appendChoices(options.select);\n delete options.select;\n }\n if (select.length) {\n options.Opt = select;\n }\n\n Object.keys(VALUE_MAP).forEach((key) => {\n if (options[key] !== undefined) {\n options[VALUE_MAP[key]] = options[key];\n delete options[key];\n }\n });\n ['V', 'DV'].forEach((key) => {\n if (typeof options[key] === 'string') {\n options[key] = new String(options[key]);\n }\n });\n\n if (options.MK && options.MK.CA) {\n options.MK.CA = new String(options.MK.CA);\n }\n if (options.label) {\n options.MK = options.MK ? options.MK : {};\n options.MK.CA = new String(options.label);\n delete options.label;\n }\n return options;\n },\n};\n","import fs from 'fs';\nimport { md5Hex } from '../crypto/md5';\nimport { escapeName } from '../object.js';\n\nexport default {\n /**\n * Embed contents of `src` in PDF\n * @param {Buffer | ArrayBuffer | string} src input Buffer, 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 (Buffer.isBuffer(src)) {\n data = src;\n } else if (src instanceof ArrayBuffer) {\n data = Buffer.from(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 = Buffer.from(match[2], 'base64');\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 a.Params.CreationDate.getTime() === b.Params.CreationDate.getTime() &&\n ((a.Params.ModDate === undefined && b.Params.ModDate === undefined) ||\n a.Params.ModDate.getTime() === b.Params.ModDate.getTime())\n );\n}\n","import fs from 'fs';\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 const iccProfile = fs.readFileSync(\n `${__dirname}/data/sRGB_IEC61966_2_1.icc`,\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 const font = deepMerge({}, colStyle.font, rowStyle.font, cell.font);\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(Buffer.from(this.metadata.getXML(), 'utf-8'));\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 stream 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 LineWrapper from './line_wrapper';\nimport SubsetMixin from './mixins/subsets';\nimport TableMixin from './mixins/table';\nimport MetadataMixin from './mixins/metadata';\n\nclass PDFDocument extends stream.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 if (options == null) {\n ({ options } = this);\n }\n\n // end the current page if needed\n if (!this.options.bufferPages) {\n this.flushPages();\n }\n\n // create a page object\n this.page = new PDFPage(this, options);\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 (!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 (!Buffer.isBuffer(data)) {\n data = Buffer.from(data + '\\n', 'binary');\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\nPDFDocument.LineWrapper = LineWrapper;\n\nexport default PDFDocument;\n"],"names":["PDFAbstractReference","toString","Error","PDFTree","constructor","options","_items","limits","add","key","val","get","sortedKeys","Object","keys","sort","a","b","_compareKeys","out","length","first","last","push","PDFObject","convert","_dataForKey","_keysName","join","SpotColor","doc","name","C","M","Y","K","id","spotColors","values","ref","escapeName","Range","C0","C1","map","value","FunctionType","Domain","N","end","pad","str","Array","slice","isSafeCharCode","code","escapableRe","escapable","escapedName","char","charCodeAt","toUpperCase","padStart","swapBytes","buff","l","i","object","encryptFn","String","string","isUnicode","stringBuffer","Buffer","from","valueOf","replace","c","isBuffer","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","isArray","items","e","call","number","n","Math","round","PDFReference","document","data","gen","compress","Filter","uncompressedLength","buffer","write","chunk","Uint8Array","Length","finalize","offset","_offset","_security","getEncryptFn","concat","zlib","deflateSync","_write","_refEnd","fArray","Float32Array","uArray","Uint32Array","PDFNumber","rounded","fround","normalizeSides","sides","defaultDefinition","undefined","transformer","v","top","right","bottom","left","vertical","horizontal","MM_TO_CM","CM_TO_IN","PX_TO_IN","IN_TO_PT","PC_TO_PT","cosine","cos","PI","sine","sin","DEFAULT_MARGINS","SIZES","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","PDFPage","_options","size","layout","userUnit","dimensions","width","height","content","font","fontFamily","fontSize","margins","margin","x","sizeToPoint","resources","ProcSet","dictionary","Type","Parent","_root","Pages","MediaBox","Contents","Resources","UserUnit","markings","fonts","Font","xobjects","XObject","ext_gstates","ExtGState","patterns","Pattern","colorSpaces","ColorSpace","annotations","Annots","structParentTreeKey","StructParents","createStructParentTreeNextKey","contentWidth","contentHeight","maxY","_setTabOrder","Tabs","hasMarkInfoDictionary","color","PDFNameTree","localeCompare","k","md5Hash","md5","arrayBuffer","md5Hex","sha256Hash","sha256","aesCbcEncrypt","iv","padding","cbc","disablePadding","encrypt","aesEcbEncrypt","ecb","rc4","s","j","output","randomBytes","bytes","globalThis","crypto","getRandomValues","inRange","rangeGroup","startRange","endRange","middleRange","floor","arrayIndex","unassigned_code_points","isUnassignedCodePoint","character","commonly_mapped_to_nothing","isCommonlyMappedToNothing","non_ASCII_space_characters","isNonASCIISpaceCharacter","non_ASCII_controls_characters","non_character_codepoints","prohibited_characters","isProhibitedCharacter","bidirectional_r_al","isBidirectionalRAL","bidirectional_l","isBidirectionalL","mapping2space","mapping2nothing","getCodePoint","codePointAt","toCodePoints","input","codepoints","before","next","saslprep","opts","TypeError","mapped_input","filter","normalized_input","fromCodePoint","apply","normalize","normalized_map","hasProhibited","some","allowUnassigned","hasUnassigned","hasBidiRAL","hasBidiL","isFirstBidiRAL","isLastBidiRAL","PDFSecurity","generateFileID","info","infoStr","CreationDate","getTime","hasOwnProperty","generateRandomWordArray","create","ownerPassword","userPassword","_setupEncryption","pdfVersion","version","encDict","_setupEncryptionV1V2V4","_setupEncryptionV5","r","permissions","keyBits","getPermissionsR2","getPermissionsR3","paddedUserPassword","processPasswordR2R3R4","paddedOwnerPassword","ownerPasswordEntry","getOwnerPasswordR2R3R4","encryptionKey","getEncryptionKeyR2R3R4","_id","userPasswordEntry","getUserPasswordR2","getUserPasswordR3R4","V","CF","StdCF","AuthEvent","CFM","StmF","StrF","R","O","U","P","processedUserPassword","processPasswordR5","processedOwnerPassword","getEncryptionKeyR5","getUserPasswordR5","userKeySalt","userEncryptionKeyEntry","getUserEncryptionKeyR5","getOwnerPasswordR5","ownerKeySalt","ownerEncryptionKeyEntry","getOwnerEncryptionKeyR5","permsEntry","getEncryptedPermissionsR5","OE","UE","Perms","obj","digest","suffix","concatBytes","keyLen","min","saltMarker","encrypted","permissionObject","printing","modifying","copying","annotating","fillingForms","contentAccessibility","documentAssembly","documentId","cipher","xorKey","result","set","permBytes","validationSalt","keySalt","hash","randomPart","password","index","PASSWORD_PADDING","unescape","encodeURIComponent","PDFGradient","stops","embedded","transform","stop","pos","opacity","_normalizeColor","_colorSpace","max","setTransform","m11","m12","m21","m22","dx","dy","embed","m","fn","stopsLength","matrix","bounds","encode","Functions","Bounds","Encode","_gradCount","shader","pattern","PatternType","Shading","Matrix","grad","opacityGradient","pageBBox","page","form","Subtype","FormType","BBox","Group","S","CS","Sh1","gstate","SMask","G","opacityPattern","PaintType","TilingType","XStep","YStep","Gs1","stroke","m0","m1","m2","m3","m4","m5","_ctm","_setColorSpace","op","addContent","PDFLinearGradient","x1","y1","x2","y2","ShadingType","Coords","Function","Extend","PDFRadialGradient","r1","r2","underlyingColorSpaces","PDFTilingPattern","bBox","xStep","yStep","stream","createPattern","toFixed","embedPatternColorSpaces","forEach","csName","csId","getPatternColorSpaceId","cs","underlyingColorspace","_patternCount","patternColor","normalizedColor","_getColorSpace","Gradient","initColor","_opacityRegistry","_opacityCount","charAt","hex","parseInt","namedColors","part","_setColor","_setColorCore","space","fillColor","fillOpacity","_fillColor","strokeColor","strokeOpacity","_doOpacity","ca","CA","linearGradient","radialGradient","bbox","addSpotColor","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","cx","cy","px","py","sx","sy","parameters","A","H","h","L","Q","q","T","t","Z","z","isCommand","isWsp","codePoint","isDigit","readNumber","cursor","state","Number","parseFloat","isNaN","parse","path","pathData","command","args","argsCount","canHaveComma","hadComma","newCursor","position","commands","runners","moveTo","bezierCurveTo","quadraticCurveTo","solveArc","lineTo","closePath","y","coords","rx","ry","rot","large","sweep","ex","ey","segs","arcToSegments","seg","bez","segmentToBezier","rotateX","ox","oy","th","sin_th","cos_th","abs","pl","sqrt","a00","a01","a10","a11","x0","y0","d","sfactor_sq","sfactor","xc","yc","th0","atan2","th1","th_arc","segments","ceil","th2","th3","th_half","x3","y3","SVGPath","KAPPA","initVector","_ctmStack","save","restore","pop","lineWidth","w","_CAP_STYLES","BUTT","ROUND","SQUARE","lineCap","_JOIN_STYLES","MITER","BEVEL","lineJoin","miterLimit","dash","originalLength","valid","every","isFinite","JSON","stringify","phase","undash","cp1x","cp1y","cp2x","cp2y","cpx","cpy","rect","roundedRect","borderRadius","radii","limit","rTL","rTR","rBR","rBL","cpTR","cpBR","cpBL","cpTL","ellipse","xe","ye","xm","ym","circle","radius","arc","startAngle","endAngle","anticlockwise","TWO_PI","HALF_PI","deltaAng","dir","numSegs","segAng","handleLen","curAng","deltaCx","deltaCy","ax","ay","segIdx","polygon","points","shift","point","_windingRule","rule","test","fill","fillAndStroke","isFillRule","clip","translate","rotate","angle","rad","origin","scale","xFactor","yFactor","WIN_ANSI_MAP","characters","split","AFMFont","contents","attributes","glyphWidths","boundingBoxes","kernPairs","ascender","descender","xHeight","capHeight","lineGap","section","line","match","encodeText","text","res","len","glyphsForString","glyphs","charCode","characterToGlyph","widthOfGlyph","glyph","getKernPair","advancesForGlyphs","advances","PDFFont","widthOfString","lineHeight","includeGap","gap","STANDARD_FONTS","Courier","fs","readFileSync","__dirname","Courier-Bold","Courier-Oblique","Courier-BoldOblique","Helvetica","Helvetica-Bold","Helvetica-Oblique","Helvetica-BoldOblique","Times-Roman","Times-Bold","Times-Italic","Times-BoldItalic","Symbol","ZapfDingbats","StandardFont","BaseFont","Encoding","encoded","positions","xAdvance","yAdvance","xOffset","yOffset","advanceWidth","advance","isStandardFont","toHex","num","EmbeddedFont","subset","createSubset","unicode","widths","getGlyph","postscriptName","unitsPerEm","ascent","descent","fontLayoutCache","layoutCache","layoutRun","features","run","layoutCached","cached","onlyWidth","needle","includes","gid","includeGlyph","codePoints","isCFF","cff","fontFile","familyClass","sFamilyClass","flags","post","isFixedPitch","head","macStyle","italic","tag","fromCharCode","replaceAll","descriptor","FontName","Flags","FontBBox","minX","minY","maxX","ItalicAngle","italicAngle","Ascent","Descent","CapHeight","XHeight","StemV","FontFile3","FontFile2","maxCID","cidSetBuffer","alloc","cid","CIDSetRef","CIDSet","descendantFontData","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","W","CIDToGIDMap","descendantFont","DescendantFonts","ToUnicode","toUnicodeCmap","cmap","entries","chunkSize","chunks","ranges","start","PDFFontFactory","open","src","family","ArrayBuffer","isEqualFont","font1","font2","_tables","checkSumAdjustment","records","initFonts","defaultFont","defaultFontFamily","defaultFontSize","_fontFamilies","_fontCount","_fontSource","_fontFamily","_fontSize","_font","_remSize","_registeredFonts","cacheKey","currentLineHeight","registerFont","defaultValue","percentageWidth","multiplier","SOFT_HYPHEN","HYPHEN","LineWrapper","_listeners","horizontalScaling","indent","indentAllLines","characterSpacing","wordSpacing","columns","columnGap","spaceLeft","startX","startY","column","ellipsis","continuedX","on","once","continued","align","lastLine","paragraphGap","event","listener","wrapper","listeners","splice","indexOf","emit","wordWidth","word","canFit","eachWord","bk","breaker","LineBreaker","wordWidths","nextBreak","shouldContinue","lbk","fbk","mightGrow","mustShrink","required","wrap","nextY","nextSection","textWidth","wc","lc","continueY","emitLine","wordCount","lh","continueOnNewPage","formatListLabel","listType","letter","times","initText","_line","bind","_lineGap","moveDown","lines","moveUp","_text","lineCallback","_initOptions","addStructure","structParent","struct","structType","markStructureContent","rotation","_wrapper","_textOptions","boundsOfString","words","trim","spaceWidth","x4","y4","xMin","xMax","yMin","yMax","heightOfString","Infinity","list","unit","midLine","bulletRadius","textIndent","itemIndent","bulletIndent","level","levels","numbers","flatten","item","drawListItem","listItem","itemType","labelType","bodyType","structTypes","diff","_fragment","assign","lineBreak","baseline","renderedWidth","link","linkOptions","_currentStructureElement","goTo","destination","addNamedDestination","underline","lineY","strike","oblique","skew","mode","encodedWord","positionsWord","hadOffset","addSegment","cur","flush","toBinaryString","subarray","readUInt16BE","readUInt16LE","readUInt32BE","readUInt32LE","parseExifOrientation","marker","segmentLength","exifHeader","tiffStart","byteOrder","isLittleEndian","read16","o","read32","ifdPos","entryCount","entryPos","MARKERS","COLOR_SPACE_MAP","JPEG","label","orientation","bits","channels","colorSpace","BitsPerComponent","Width","Height","PNGImage","image","PNG","imgData","hasAlphaChannel","isInterlaced","interlaceMethod","params","Predictor","Colors","colors","Columns","palette","transparency","grayscale","rgb","mask","indexed","loadIndexedAlphaChannel","splitAlphaChannel","decodeData","alphaChannel","sMask","Decode","decodePixels","pixels","p","colorCount","pixelCount","skipByteCount","colorIndex","PDFImage","exec","initImages","_imageRegistry","_imageCount","bh","bp","bw","ip","left1","originX","originY","ignoreOrientation","inDocumentFlow","openImage","wp","hp","fit","cover","valign","rotateAngle","xTransform","yTransform","hTransform","wTransform","PDFAnnotationReference","annotationRef","annotate","Rect","_convertRect","Border","F","Dest","annotRef","note","Name","D","url","pages","Kids","URI","_markup","QuadPoints","highlight","lineAnnotation","rectAnnotation","ellipseAnnotation","textAnnotation","DA","fileAnnotation","file","filespec","hidden","FS","Desc","DEFAULT_OPTIONS","zoom","pageNumber","expanded","PDFOutline","parent","title","dest","outlineData","destWidth","destHeight","children","addItem","endOutline","Count","First","Last","child","Prev","Next","initOutline","outline","Outlines","PageMode","PDFStructureContent","pageRef","mcid","refs","structContent","PDFStructureElement","type","_attached","_ended","_flushed","_isValidChild","lang","Lang","alt","Alt","E","actual","ActualText","hasBbox","hasPlacement","placement","attrs","Placement","scope","Scope","_children","setParent","setAttached","_addContentToParentTree","_addAnnotationToParentTree","_contentForClosure","pageStructParents","getStructParentTree","parentTreeKey","StructParent","parentTree","parentRef","_flush","closure","prevStructElement","wasEnded","endMarkedContent","_isFlushable","_flushChild","Pg","MCID","objr","Obj","PDFNumberTree","initMarkings","structChildren","tagged","getMarkInfoDictionary","Marked","getStructTreeRoot","markContent","toClose","marking","attached","Attached","structElem","structTreeRoot","initPageMarkings","pageMarkings","newStructContent","endPageMarkings","MarkInfo","StructTreeRoot","ParentTree","ParentTreeNextKey","endMarkings","FIELD_FLAGS","readOnly","noExport","multiline","toggleToOffButton","radioButton","pushButton","combo","edit","multiSelect","noSpell","FIELD_JUSTIFY","center","VALUE_MAP","FORMAT_SPECIAL","zip","zipPlus4","zip4","phone","ssn","FORMAT_DEFAULT","nDec","sepComma","negStyle","currency","currencyPrepend","percent","initForm","_acroform","Fields","NeedAppearances","DR","AcroForm","endAcroForm","fontDict","fieldRef","_endChild","childRef","formField","fieldDict","_fieldDict","_addToParent","formAnnotation","formText","formPushButton","formCombo","formList","formRadioButton","formCheckbox","_resolveType","_resolveFlags","_resolveJustify","_resolveFont","_resolveStrings","_resolveColors","_resolveFormat","FT","f","format","fnKeystroke","fnFormat","param","AA","JS","backgroundColor","MK","BG","borderColor","BC","Ff","select","appendChoices","idx","Opt","relationship","refBody","Params","birthtime","ctime","statSync","ModDate","creationDate","modifiedDate","checksum","CheckSum","Size","byteLength","_fileRegistry","isEqual","fileSpecBody","AFRelationship","EF","UF","description","addNamedEmbeddedFile","AF","initPDFA","pSubset","subset_conformance","endSubset","_addPdfaMetadata","_addColorOutputIntent","iccProfile","colorProfileRef","intentRef","Info","OutputConditionIdentifier","DestOutputProfile","OutputIntents","_getPdfaid","appendXML","initPDFUA","_addPdfuaMetadata","_getPdfuaid","_importSubset","initSubset","PDFA","PDFUA","ROW_FIELDS","COLUMN_FIELDS","memoize","maxSize","cache","Map","has","delete","isObject","deepMerge","target","sources","deepClone","source","normalizedDefaultStyle","defaultStyleInternal","defaultStyle","defaultRowStyle","fromEntries","defaultColStyle","border","normalizeAlignment","normalizedRowStyle","rowStyleInternal","rowStyle","minHeight","maxHeight","normalizedColumnStyle","colStyleInternal","colStyle","_maxWidth","minWidth","maxWidth","normalizeTable","_tableIndex","_position","_defaultStyle","columnStyles","_colStyle","rowStyles","_rowStyle","normalizeText","normalizeCell","cell","rowIndex","colIndex","customFont","rollbackFont","rollbackFontSize","rollbackFontFamily","config","rowSpan","colSpan","textStroke","textStrokeColor","textColor","textOptions","toLowerCase","debug","normalizeRow","row","_cellClaim","Set","ensure","_columnWidths","ensureColumnWidths","reduce","_rowHeights","_rowYPos","_rowBuffer","numCols","starColumnIndexes","starMinAcc","unclaimedWidth","col","starColCount","starSize","tempX","_columnXPos","measure","toRender","measureCell","rowHeight","acc","textBounds","newPage","console","warn","stack","cellWidth","cellHeight","textAllocatedWidth","textAllocatedHeight","textMaxWidth","textMaxHeight","computeBounds","unRotatedTextBounds","textX","textY","allocWidth","allocHeight","FG","denominator","accommodateTable","_tableStruct","ID","PDFDocument","_headerRowLookup","_headerColumnLookup","accommodateCleanup","accessibleRow","renderCell","rowStruct","accessibleCell","callback","cellStruct","Padding","RowSpan","ColSpan","BorderThickness","Headers","_","flat","Boolean","normalizeColor","BackgroundColor","hasBorder","BorderColor","renderRow","cellRenderer","renderBorder","renderCellText","Ah","Aw","Cw","Ch","Ox","Oy","PxScale","Px","PyScale","Py","PDFTable","freeze","_currRowIndex","lastRow","yPos","initTables","table","PDFMetadata","_metadata","_closeTags","append","xml","newline","getXML","getLength","initMetadata","metadata","_addInfo","toISOString","Creator","Title","Author","Subject","Producer","Keywords","endMetadata","metadataRef","Metadata","Readable","_pageBuffer","_pageBufferStart","_offsets","_waiting","Names","Dests","pageLayout","PageLayout","displayTitle","ViewerPreferences","DisplayDocTitle","autoFirstPage","addPage","bufferPages","flushPages","bufferedPageRange","count","switchToPage","unshift","EmbeddedFiles","addNamedJavaScript","js","JavaScript","_read","_finalize","_info","entry","xRefOffset","trailer","Root","Encrypt","mixin","methods","prototype","MetadataMixin","ColorMixin","VectorMixin","FontsMixin","TextMixin","ImagesMixin","AnnotationsMixin","OutlineMixin","MarkingsMixin","AcroFormMixin","AttachmentsMixin","SubsetMixin","TableMixin"],"mappings":"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,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,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,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC1E,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,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,CACjB;AAGD,MAAMC,qBAAqB,GAAIC,SAAS,IACtCT,OAAO,CAACS,SAAS,EAAEF,sBAAsB,CAAC;AAO5C,MAAMG,0BAA0B,GAAG,CACjC,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,CACvE;AAGD,MAAMC,yBAAyB,GAAIF,SAAS,IAC1CT,OAAO,CAACS,SAAS,EAAEC,0BAA0B,CAAC;AAOhD,MAAME,0BAA0B,GAAG,CACjC,MAAM,EAAE,MAAM,EAAuB,MAAM,EAAE,MAAM,EACnD,MAAM,EAAE,MAAM,EAAgB,MAAM,EAAE,MAAM,EAAgB,MAAM,EAClE,MAAM,EAAiB,MAAM,EAAE,MAAM,EAAiB,MAAM,EAC5D,MAAM,EAA2B,MAAM,EAAE,MAAM,EAC/C,MAAM,EAAE,MAAM,EAAyB,MAAM,EAAE,MAAM,EACrD,MAAM,EAAE,MAAM,EAA0B,MAAM,EAAE,MAAM,EACtD,MAAM,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,EAC/C,MAAM,EAAE,MAAM,EAA8B,MAAM,EAClD,MAAM,EAAkC,MAAM,EAC9C,MAAM,CACP;AAGD,MAAMC,wBAAwB,GAAIJ,SAAS,IACzCT,OAAO,CAACS,SAAS,EAAEG,0BAA0B,CAAC;AAGhD,MAAME,6BAA6B,GAAG,CAKpC,MAAM,EAAE,MAAM,EAA6B,MAAM,EACjD,MAAM,EAA2B,MAAM,EACvC,MAAM,EAAiC,MAAM,EAC7C,MAAM,EAAkC,MAAM,EAC9C,MAAM,EAA8B,MAAM,EAAE,MAAM,EAClD,MAAM,EAAE,MAAM,EAAuB,MAAM,EAAE,MAAM,EACnD,MAAM,EAAE,MAAM,EAAoB,MAAM,EAAE,MAAM,EAChD,MAAM,EAAE,MAAM,EAAwB,MAAM,EAC5C,MAAM,EAA4B,MAAM,EAAE,MAAM,EAChD,MAAM,EAAE,MAAM,EAAkC,MAAM,EACtD,MAAM,EAA6B,OAAO,EAC1C,OAAO,CACR;AAED,MAAMC,wBAAwB,GAAG,CAK/B,MAAM,EAAE,MAAM,EAAmC,MAAM,EACvD,MAAM,EAAmC,OAAO,EAChD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,OAAO,EACjD,OAAO,EAAmC,QAAQ,EAClD,QAAQ,CACT;AAKD,MAAMC,qBAAqB,GAAG,CAK5B,CAAC,EAAE,MAAM,EAA6B,MAAM,EAAE,MAAM,EAMpD,MAAM,EAAE,MAAM,EAAkC,MAAM,EACtD,MAAM,EAAkC,MAAM,EAC9C,MAAM,EAA2B,MAAM,EAAE,MAAM,EAC/C,MAAM,EAAE,MAAM,EAAgC,MAAM,EACpD,MAAM,EAAgC,MAAM,EAC5C,MAAM,EAAmC,MAAM,EAC/C,MAAM,EAA+B,MAAM,EAC3C,MAAM,EAA+B,MAAM,EAC3C,MAAM,EAAmC,MAAM,EAC/C,MAAM,EAAoC,MAAM,EAChD,MAAM,EAAoC,MAAM,EAChD,MAAM,EAAqC,MAAM,EACjD,MAAM,EAA8B,MAAM,EAAE,MAAM,EAMlD,MAAM,EAAE,MAAM,EAMd,MAAM,EAAE,MAAM,EAMd,MAAM,EAAE,MAAM,EAMd,MAAM,EAAE,MAAM,EAAsC,MAAM,EAC1D,MAAM,EAAyC,MAAM,EACrD,MAAM,EAA0C,MAAM,EACtD,MAAM,EAAqC,MAAM,EACjD,MAAM,EAMN,OAAO,EAAE,OAAO,EAAqB,OAAO,EAC5C,OAAO,EAOP,OAAO,EAAE,OAAO,EAAgC,QAAQ,EACxD,QAAQ,CACT;AAGD,MAAMC,qBAAqB,GAAIR,SAAS,IACtCT,OAAO,CAACS,SAAS,EAAEG,0BAA0B,CAAC,IAC9CZ,OAAO,CAACS,SAAS,EAAEO,qBAAqB,CAAC,IACzChB,OAAO,CAACS,SAAS,EAAEK,6BAA6B,CAAC,IACjDd,OAAO,CAACS,SAAS,EAAEM,wBAAwB,CAAC;AAO9C,MAAMG,kBAAkB,GAAG,CACzB,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,CACvC;AAGD,MAAMC,kBAAkB,GAAIV,SAAS,IACnCT,OAAO,CAACS,SAAS,EAAES,kBAAkB,CAAC;AAOxC,MAAME,eAAe,GAAG,CACtB,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,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,M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"}
|