@kittl/pdfkit 0.17.4 → 0.17.51

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdfkit.es5.js","sources":["../lib/abstract_reference.js","../lib/tree.js","../lib/object.js","../lib/reference.js","../lib/page.js","../lib/name_tree.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/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/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 =\n 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","/*\nPDFObject - converts JavaScript types into their corresponding PDF types.\nBy Devon Govett\n*/\n\nimport PDFAbstractReference from './abstract_reference';\nimport PDFTree from './tree';\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 ) {\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.map(e => PDFObject.convert(e, encryptFn)).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 return (this.data.Filter = 'FlateDecode');\n }\n }\n\n end(chunk) {\n if (chunk) {\n this.write(chunk);\n }\n return 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","/*\nPDFPage - represents a single page in the PDF document\nBy Devon Govett\n*/\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.size = options.size || 'letter';\n this.layout = options.layout || 'portrait';\n\n // process margins\n if (typeof options.margin === 'number') {\n this.margins = {\n top: options.margin,\n left: options.margin,\n bottom: options.margin,\n right: options.margin\n };\n\n // default to 1 inch margins\n } else {\n this.margins = options.margins || DEFAULT_MARGINS;\n }\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 // 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 });\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 maxY() {\n return this.height - this.margins.bottom;\n }\n\n write(chunk) {\n return this.content.write(chunk);\n }\n\n end() {\n this.dictionary.end();\n this.resources.end();\n return this.content.end();\n }\n}\n\nexport default PDFPage;\n","/*\nPDFNameTree - represents a name tree object\n*/\n\nimport PDFTree from \"./tree\";\n\nclass PDFNameTree extends PDFTree {\n _compareKeys(a, b) {\n return a.localeCompare(b);\n }\n\n _keysName() {\n return \"Names\";\n }\n\n _dataForKey(k) {\n return new String(k);\n }\n}\n\nexport default PDFNameTree;\n","/**\n * 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,\n 0x0221,\n 0x0234,\n 0x024f,\n 0x02ae,\n 0x02af,\n 0x02ef,\n 0x02ff,\n 0x0350,\n 0x035f,\n 0x0370,\n 0x0373,\n 0x0376,\n 0x0379,\n 0x037b,\n 0x037d,\n 0x037f,\n 0x0383,\n 0x038b,\n 0x038b,\n 0x038d,\n 0x038d,\n 0x03a2,\n 0x03a2,\n 0x03cf,\n 0x03cf,\n 0x03f7,\n 0x03ff,\n 0x0487,\n 0x0487,\n 0x04cf,\n 0x04cf,\n 0x04f6,\n 0x04f7,\n 0x04fa,\n 0x04ff,\n 0x0510,\n 0x0530,\n 0x0557,\n 0x0558,\n 0x0560,\n 0x0560,\n 0x0588,\n 0x0588,\n 0x058b,\n 0x0590,\n 0x05a2,\n 0x05a2,\n 0x05ba,\n 0x05ba,\n 0x05c5,\n 0x05cf,\n 0x05eb,\n 0x05ef,\n 0x05f5,\n 0x060b,\n 0x060d,\n 0x061a,\n 0x061c,\n 0x061e,\n 0x0620,\n 0x0620,\n 0x063b,\n 0x063f,\n 0x0656,\n 0x065f,\n 0x06ee,\n 0x06ef,\n 0x06ff,\n 0x06ff,\n 0x070e,\n 0x070e,\n 0x072d,\n 0x072f,\n 0x074b,\n 0x077f,\n 0x07b2,\n 0x0900,\n 0x0904,\n 0x0904,\n 0x093a,\n 0x093b,\n 0x094e,\n 0x094f,\n 0x0955,\n 0x0957,\n 0x0971,\n 0x0980,\n 0x0984,\n 0x0984,\n 0x098d,\n 0x098e,\n 0x0991,\n 0x0992,\n 0x09a9,\n 0x09a9,\n 0x09b1,\n 0x09b1,\n 0x09b3,\n 0x09b5,\n 0x09ba,\n 0x09bb,\n 0x09bd,\n 0x09bd,\n 0x09c5,\n 0x09c6,\n 0x09c9,\n 0x09ca,\n 0x09ce,\n 0x09d6,\n 0x09d8,\n 0x09db,\n 0x09de,\n 0x09de,\n 0x09e4,\n 0x09e5,\n 0x09fb,\n 0x0a01,\n 0x0a03,\n 0x0a04,\n 0x0a0b,\n 0x0a0e,\n 0x0a11,\n 0x0a12,\n 0x0a29,\n 0x0a29,\n 0x0a31,\n 0x0a31,\n 0x0a34,\n 0x0a34,\n 0x0a37,\n 0x0a37,\n 0x0a3a,\n 0x0a3b,\n 0x0a3d,\n 0x0a3d,\n 0x0a43,\n 0x0a46,\n 0x0a49,\n 0x0a4a,\n 0x0a4e,\n 0x0a58,\n 0x0a5d,\n 0x0a5d,\n 0x0a5f,\n 0x0a65,\n 0x0a75,\n 0x0a80,\n 0x0a84,\n 0x0a84,\n 0x0a8c,\n 0x0a8c,\n 0x0a8e,\n 0x0a8e,\n 0x0a92,\n 0x0a92,\n 0x0aa9,\n 0x0aa9,\n 0x0ab1,\n 0x0ab1,\n 0x0ab4,\n 0x0ab4,\n 0x0aba,\n 0x0abb,\n 0x0ac6,\n 0x0ac6,\n 0x0aca,\n 0x0aca,\n 0x0ace,\n 0x0acf,\n 0x0ad1,\n 0x0adf,\n 0x0ae1,\n 0x0ae5,\n 0x0af0,\n 0x0b00,\n 0x0b04,\n 0x0b04,\n 0x0b0d,\n 0x0b0e,\n 0x0b11,\n 0x0b12,\n 0x0b29,\n 0x0b29,\n 0x0b31,\n 0x0b31,\n 0x0b34,\n 0x0b35,\n 0x0b3a,\n 0x0b3b,\n 0x0b44,\n 0x0b46,\n 0x0b49,\n 0x0b4a,\n 0x0b4e,\n 0x0b55,\n 0x0b58,\n 0x0b5b,\n 0x0b5e,\n 0x0b5e,\n 0x0b62,\n 0x0b65,\n 0x0b71,\n 0x0b81,\n 0x0b84,\n 0x0b84,\n 0x0b8b,\n 0x0b8d,\n 0x0b91,\n 0x0b91,\n 0x0b96,\n 0x0b98,\n 0x0b9b,\n 0x0b9b,\n 0x0b9d,\n 0x0b9d,\n 0x0ba0,\n 0x0ba2,\n 0x0ba5,\n 0x0ba7,\n 0x0bab,\n 0x0bad,\n 0x0bb6,\n 0x0bb6,\n 0x0bba,\n 0x0bbd,\n 0x0bc3,\n 0x0bc5,\n 0x0bc9,\n 0x0bc9,\n 0x0bce,\n 0x0bd6,\n 0x0bd8,\n 0x0be6,\n 0x0bf3,\n 0x0c00,\n 0x0c04,\n 0x0c04,\n 0x0c0d,\n 0x0c0d,\n 0x0c11,\n 0x0c11,\n 0x0c29,\n 0x0c29,\n 0x0c34,\n 0x0c34,\n 0x0c3a,\n 0x0c3d,\n 0x0c45,\n 0x0c45,\n 0x0c49,\n 0x0c49,\n 0x0c4e,\n 0x0c54,\n 0x0c57,\n 0x0c5f,\n 0x0c62,\n 0x0c65,\n 0x0c70,\n 0x0c81,\n 0x0c84,\n 0x0c84,\n 0x0c8d,\n 0x0c8d,\n 0x0c91,\n 0x0c91,\n 0x0ca9,\n 0x0ca9,\n 0x0cb4,\n 0x0cb4,\n 0x0cba,\n 0x0cbd,\n 0x0cc5,\n 0x0cc5,\n 0x0cc9,\n 0x0cc9,\n 0x0cce,\n 0x0cd4,\n 0x0cd7,\n 0x0cdd,\n 0x0cdf,\n 0x0cdf,\n 0x0ce2,\n 0x0ce5,\n 0x0cf0,\n 0x0d01,\n 0x0d04,\n 0x0d04,\n 0x0d0d,\n 0x0d0d,\n 0x0d11,\n 0x0d11,\n 0x0d29,\n 0x0d29,\n 0x0d3a,\n 0x0d3d,\n 0x0d44,\n 0x0d45,\n 0x0d49,\n 0x0d49,\n 0x0d4e,\n 0x0d56,\n 0x0d58,\n 0x0d5f,\n 0x0d62,\n 0x0d65,\n 0x0d70,\n 0x0d81,\n 0x0d84,\n 0x0d84,\n 0x0d97,\n 0x0d99,\n 0x0db2,\n 0x0db2,\n 0x0dbc,\n 0x0dbc,\n 0x0dbe,\n 0x0dbf,\n 0x0dc7,\n 0x0dc9,\n 0x0dcb,\n 0x0dce,\n 0x0dd5,\n 0x0dd5,\n 0x0dd7,\n 0x0dd7,\n 0x0de0,\n 0x0df1,\n 0x0df5,\n 0x0e00,\n 0x0e3b,\n 0x0e3e,\n 0x0e5c,\n 0x0e80,\n 0x0e83,\n 0x0e83,\n 0x0e85,\n 0x0e86,\n 0x0e89,\n 0x0e89,\n 0x0e8b,\n 0x0e8c,\n 0x0e8e,\n 0x0e93,\n 0x0e98,\n 0x0e98,\n 0x0ea0,\n 0x0ea0,\n 0x0ea4,\n 0x0ea4,\n 0x0ea6,\n 0x0ea6,\n 0x0ea8,\n 0x0ea9,\n 0x0eac,\n 0x0eac,\n 0x0eba,\n 0x0eba,\n 0x0ebe,\n 0x0ebf,\n 0x0ec5,\n 0x0ec5,\n 0x0ec7,\n 0x0ec7,\n 0x0ece,\n 0x0ecf,\n 0x0eda,\n 0x0edb,\n 0x0ede,\n 0x0eff,\n 0x0f48,\n 0x0f48,\n 0x0f6b,\n 0x0f70,\n 0x0f8c,\n 0x0f8f,\n 0x0f98,\n 0x0f98,\n 0x0fbd,\n 0x0fbd,\n 0x0fcd,\n 0x0fce,\n 0x0fd0,\n 0x0fff,\n 0x1022,\n 0x1022,\n 0x1028,\n 0x1028,\n 0x102b,\n 0x102b,\n 0x1033,\n 0x1035,\n 0x103a,\n 0x103f,\n 0x105a,\n 0x109f,\n 0x10c6,\n 0x10cf,\n 0x10f9,\n 0x10fa,\n 0x10fc,\n 0x10ff,\n 0x115a,\n 0x115e,\n 0x11a3,\n 0x11a7,\n 0x11fa,\n 0x11ff,\n 0x1207,\n 0x1207,\n 0x1247,\n 0x1247,\n 0x1249,\n 0x1249,\n 0x124e,\n 0x124f,\n 0x1257,\n 0x1257,\n 0x1259,\n 0x1259,\n 0x125e,\n 0x125f,\n 0x1287,\n 0x1287,\n 0x1289,\n 0x1289,\n 0x128e,\n 0x128f,\n 0x12af,\n 0x12af,\n 0x12b1,\n 0x12b1,\n 0x12b6,\n 0x12b7,\n 0x12bf,\n 0x12bf,\n 0x12c1,\n 0x12c1,\n 0x12c6,\n 0x12c7,\n 0x12cf,\n 0x12cf,\n 0x12d7,\n 0x12d7,\n 0x12ef,\n 0x12ef,\n 0x130f,\n 0x130f,\n 0x1311,\n 0x1311,\n 0x1316,\n 0x1317,\n 0x131f,\n 0x131f,\n 0x1347,\n 0x1347,\n 0x135b,\n 0x1360,\n 0x137d,\n 0x139f,\n 0x13f5,\n 0x1400,\n 0x1677,\n 0x167f,\n 0x169d,\n 0x169f,\n 0x16f1,\n 0x16ff,\n 0x170d,\n 0x170d,\n 0x1715,\n 0x171f,\n 0x1737,\n 0x173f,\n 0x1754,\n 0x175f,\n 0x176d,\n 0x176d,\n 0x1771,\n 0x1771,\n 0x1774,\n 0x177f,\n 0x17dd,\n 0x17df,\n 0x17ea,\n 0x17ff,\n 0x180f,\n 0x180f,\n 0x181a,\n 0x181f,\n 0x1878,\n 0x187f,\n 0x18aa,\n 0x1dff,\n 0x1e9c,\n 0x1e9f,\n 0x1efa,\n 0x1eff,\n 0x1f16,\n 0x1f17,\n 0x1f1e,\n 0x1f1f,\n 0x1f46,\n 0x1f47,\n 0x1f4e,\n 0x1f4f,\n 0x1f58,\n 0x1f58,\n 0x1f5a,\n 0x1f5a,\n 0x1f5c,\n 0x1f5c,\n 0x1f5e,\n 0x1f5e,\n 0x1f7e,\n 0x1f7f,\n 0x1fb5,\n 0x1fb5,\n 0x1fc5,\n 0x1fc5,\n 0x1fd4,\n 0x1fd5,\n 0x1fdc,\n 0x1fdc,\n 0x1ff0,\n 0x1ff1,\n 0x1ff5,\n 0x1ff5,\n 0x1fff,\n 0x1fff,\n 0x2053,\n 0x2056,\n 0x2058,\n 0x205e,\n 0x2064,\n 0x2069,\n 0x2072,\n 0x2073,\n 0x208f,\n 0x209f,\n 0x20b2,\n 0x20cf,\n 0x20eb,\n 0x20ff,\n 0x213b,\n 0x213c,\n 0x214c,\n 0x2152,\n 0x2184,\n 0x218f,\n 0x23cf,\n 0x23ff,\n 0x2427,\n 0x243f,\n 0x244b,\n 0x245f,\n 0x24ff,\n 0x24ff,\n 0x2614,\n 0x2615,\n 0x2618,\n 0x2618,\n 0x267e,\n 0x267f,\n 0x268a,\n 0x2700,\n 0x2705,\n 0x2705,\n 0x270a,\n 0x270b,\n 0x2728,\n 0x2728,\n 0x274c,\n 0x274c,\n 0x274e,\n 0x274e,\n 0x2753,\n 0x2755,\n 0x2757,\n 0x2757,\n 0x275f,\n 0x2760,\n 0x2795,\n 0x2797,\n 0x27b0,\n 0x27b0,\n 0x27bf,\n 0x27cf,\n 0x27ec,\n 0x27ef,\n 0x2b00,\n 0x2e7f,\n 0x2e9a,\n 0x2e9a,\n 0x2ef4,\n 0x2eff,\n 0x2fd6,\n 0x2fef,\n 0x2ffc,\n 0x2fff,\n 0x3040,\n 0x3040,\n 0x3097,\n 0x3098,\n 0x3100,\n 0x3104,\n 0x312d,\n 0x3130,\n 0x318f,\n 0x318f,\n 0x31b8,\n 0x31ef,\n 0x321d,\n 0x321f,\n 0x3244,\n 0x3250,\n 0x327c,\n 0x327e,\n 0x32cc,\n 0x32cf,\n 0x32ff,\n 0x32ff,\n 0x3377,\n 0x337a,\n 0x33de,\n 0x33df,\n 0x33ff,\n 0x33ff,\n 0x4db6,\n 0x4dff,\n 0x9fa6,\n 0x9fff,\n 0xa48d,\n 0xa48f,\n 0xa4c7,\n 0xabff,\n 0xd7a4,\n 0xd7ff,\n 0xfa2e,\n 0xfa2f,\n 0xfa6b,\n 0xfaff,\n 0xfb07,\n 0xfb12,\n 0xfb18,\n 0xfb1c,\n 0xfb37,\n 0xfb37,\n 0xfb3d,\n 0xfb3d,\n 0xfb3f,\n 0xfb3f,\n 0xfb42,\n 0xfb42,\n 0xfb45,\n 0xfb45,\n 0xfbb2,\n 0xfbd2,\n 0xfd40,\n 0xfd4f,\n 0xfd90,\n 0xfd91,\n 0xfdc8,\n 0xfdcf,\n 0xfdfd,\n 0xfdff,\n 0xfe10,\n 0xfe1f,\n 0xfe24,\n 0xfe2f,\n 0xfe47,\n 0xfe48,\n 0xfe53,\n 0xfe53,\n 0xfe67,\n 0xfe67,\n 0xfe6c,\n 0xfe6f,\n 0xfe75,\n 0xfe75,\n 0xfefd,\n 0xfefe,\n 0xff00,\n 0xff00,\n 0xffbf,\n 0xffc1,\n 0xffc8,\n 0xffc9,\n 0xffd0,\n 0xffd1,\n 0xffd8,\n 0xffd9,\n 0xffdd,\n 0xffdf,\n 0xffe7,\n 0xffe7,\n 0xffef,\n 0xfff8,\n 0x10000,\n 0x102ff,\n 0x1031f,\n 0x1031f,\n 0x10324,\n 0x1032f,\n 0x1034b,\n 0x103ff,\n 0x10426,\n 0x10427,\n 0x1044e,\n 0x1cfff,\n 0x1d0f6,\n 0x1d0ff,\n 0x1d127,\n 0x1d129,\n 0x1d1de,\n 0x1d3ff,\n 0x1d455,\n 0x1d455,\n 0x1d49d,\n 0x1d49d,\n 0x1d4a0,\n 0x1d4a1,\n 0x1d4a3,\n 0x1d4a4,\n 0x1d4a7,\n 0x1d4a8,\n 0x1d4ad,\n 0x1d4ad,\n 0x1d4ba,\n 0x1d4ba,\n 0x1d4bc,\n 0x1d4bc,\n 0x1d4c1,\n 0x1d4c1,\n 0x1d4c4,\n 0x1d4c4,\n 0x1d506,\n 0x1d506,\n 0x1d50b,\n 0x1d50c,\n 0x1d515,\n 0x1d515,\n 0x1d51d,\n 0x1d51d,\n 0x1d53a,\n 0x1d53a,\n 0x1d53f,\n 0x1d53f,\n 0x1d545,\n 0x1d545,\n 0x1d547,\n 0x1d549,\n 0x1d551,\n 0x1d551,\n 0x1d6a4,\n 0x1d6a7,\n 0x1d7ca,\n 0x1d7cd,\n 0x1d800,\n 0x1fffd,\n 0x2a6d7,\n 0x2f7ff,\n 0x2fa1e,\n 0x2fffd,\n 0x30000,\n 0x3fffd,\n 0x40000,\n 0x4fffd,\n 0x50000,\n 0x5fffd,\n 0x60000,\n 0x6fffd,\n 0x70000,\n 0x7fffd,\n 0x80000,\n 0x8fffd,\n 0x90000,\n 0x9fffd,\n 0xa0000,\n 0xafffd,\n 0xb0000,\n 0xbfffd,\n 0xc0000,\n 0xcfffd,\n 0xd0000,\n 0xdfffd,\n 0xe0000,\n 0xe0000,\n 0xe0002,\n 0xe001f,\n 0xe0080,\n 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,\n 0x00ad,\n 0x034f,\n 0x034f,\n 0x1806,\n 0x1806,\n 0x180b,\n 0x180b,\n 0x180c,\n 0x180c,\n 0x180d,\n 0x180d,\n 0x200b,\n 0x200b,\n 0x200c,\n 0x200c,\n 0x200d,\n 0x200d,\n 0x2060,\n 0x2060,\n 0xfe00,\n 0xfe00,\n 0xfe01,\n 0xfe01,\n 0xfe02,\n 0xfe02,\n 0xfe03,\n 0xfe03,\n 0xfe04,\n 0xfe04,\n 0xfe05,\n 0xfe05,\n 0xfe06,\n 0xfe06,\n 0xfe07,\n 0xfe07,\n 0xfe08,\n 0xfe08,\n 0xfe09,\n 0xfe09,\n 0xfe0a,\n 0xfe0a,\n 0xfe0b,\n 0xfe0b,\n 0xfe0c,\n 0xfe0c,\n 0xfe0d,\n 0xfe0d,\n 0xfe0e,\n 0xfe0e,\n 0xfe0f,\n 0xfe0f,\n 0xfeff,\n 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,\n 0x00a0 /* NO-BREAK SPACE */,\n 0x1680,\n 0x1680 /* OGHAM SPACE MARK */,\n 0x2000,\n 0x2000 /* EN QUAD */,\n 0x2001,\n 0x2001 /* EM QUAD */,\n 0x2002,\n 0x2002 /* EN SPACE */,\n 0x2003,\n 0x2003 /* EM SPACE */,\n 0x2004,\n 0x2004 /* THREE-PER-EM SPACE */,\n 0x2005,\n 0x2005 /* FOUR-PER-EM SPACE */,\n 0x2006,\n 0x2006 /* SIX-PER-EM SPACE */,\n 0x2007,\n 0x2007 /* FIGURE SPACE */,\n 0x2008,\n 0x2008 /* PUNCTUATION SPACE */,\n 0x2009,\n 0x2009 /* THIN SPACE */,\n 0x200a,\n 0x200a /* HAIR SPACE */,\n 0x200b,\n 0x200b /* ZERO WIDTH SPACE */,\n 0x202f,\n 0x202f /* NARROW NO-BREAK SPACE */,\n 0x205f,\n 0x205f /* MEDIUM MATHEMATICAL SPACE */,\n 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,\n 0x009f /* [CONTROL CHARACTERS] */,\n 0x06dd,\n 0x06dd /* ARABIC END OF AYAH */,\n 0x070f,\n 0x070f /* SYRIAC ABBREVIATION MARK */,\n 0x180e,\n 0x180e /* MONGOLIAN VOWEL SEPARATOR */,\n 0x200c,\n 0x200c /* ZERO WIDTH NON-JOINER */,\n 0x200d,\n 0x200d /* ZERO WIDTH JOINER */,\n 0x2028,\n 0x2028 /* LINE SEPARATOR */,\n 0x2029,\n 0x2029 /* PARAGRAPH SEPARATOR */,\n 0x2060,\n 0x2060 /* WORD JOINER */,\n 0x2061,\n 0x2061 /* FUNCTION APPLICATION */,\n 0x2062,\n 0x2062 /* INVISIBLE TIMES */,\n 0x2063,\n 0x2063 /* INVISIBLE SEPARATOR */,\n 0x206a,\n 0x206f /* [CONTROL CHARACTERS] */,\n 0xfeff,\n 0xfeff /* ZERO WIDTH NO-BREAK SPACE */,\n 0xfff9,\n 0xfffc /* [CONTROL CHARACTERS] */,\n 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,\n 0xfdef /* [NONCHARACTER CODE POINTS] */,\n 0xfffe,\n 0xffff /* [NONCHARACTER CODE POINTS] */,\n 0x1fffe,\n 0x1ffff /* [NONCHARACTER CODE POINTS] */,\n 0x2fffe,\n 0x2ffff /* [NONCHARACTER CODE POINTS] */,\n 0x3fffe,\n 0x3ffff /* [NONCHARACTER CODE POINTS] */,\n 0x4fffe,\n 0x4ffff /* [NONCHARACTER CODE POINTS] */,\n 0x5fffe,\n 0x5ffff /* [NONCHARACTER CODE POINTS] */,\n 0x6fffe,\n 0x6ffff /* [NONCHARACTER CODE POINTS] */,\n 0x7fffe,\n 0x7ffff /* [NONCHARACTER CODE POINTS] */,\n 0x8fffe,\n 0x8ffff /* [NONCHARACTER CODE POINTS] */,\n 0x9fffe,\n 0x9ffff /* [NONCHARACTER CODE POINTS] */,\n 0xafffe,\n 0xaffff /* [NONCHARACTER CODE POINTS] */,\n 0xbfffe,\n 0xbffff /* [NONCHARACTER CODE POINTS] */,\n 0xcfffe,\n 0xcffff /* [NONCHARACTER CODE POINTS] */,\n 0xdfffe,\n 0xdffff /* [NONCHARACTER CODE POINTS] */,\n 0xefffe,\n 0xeffff /* [NONCHARACTER CODE POINTS] */,\n 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,\n 0x001f /* [CONTROL CHARACTERS] */,\n 0x007f,\n 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,\n 0x0340 /* COMBINING GRAVE TONE MARK */,\n 0x0341,\n 0x0341 /* COMBINING ACUTE TONE MARK */,\n 0x200e,\n 0x200e /* LEFT-TO-RIGHT MARK */,\n 0x200f,\n 0x200f /* RIGHT-TO-LEFT MARK */,\n 0x202a,\n 0x202a /* LEFT-TO-RIGHT EMBEDDING */,\n 0x202b,\n 0x202b /* RIGHT-TO-LEFT EMBEDDING */,\n 0x202c,\n 0x202c /* POP DIRECTIONAL FORMATTING */,\n 0x202d,\n 0x202d /* LEFT-TO-RIGHT OVERRIDE */,\n 0x202e,\n 0x202e /* RIGHT-TO-LEFT OVERRIDE */,\n 0x206a,\n 0x206a /* INHIBIT SYMMETRIC SWAPPING */,\n 0x206b,\n 0x206b /* ACTIVATE SYMMETRIC SWAPPING */,\n 0x206c,\n 0x206c /* INHIBIT ARABIC FORM SHAPING */,\n 0x206d,\n 0x206d /* ACTIVATE ARABIC FORM SHAPING */,\n 0x206e,\n 0x206e /* NATIONAL DIGIT SHAPES */,\n 0x206f,\n 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,\n 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,\n 0xdfff,\n\n /**\n * C.3 Private use\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\n */\n 0xe000,\n 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,\n 0xfff9 /* INTERLINEAR ANNOTATION ANCHOR */,\n 0xfffa,\n 0xfffa /* INTERLINEAR ANNOTATION SEPARATOR */,\n 0xfffb,\n 0xfffb /* INTERLINEAR ANNOTATION TERMINATOR */,\n 0xfffc,\n 0xfffc /* OBJECT REPLACEMENT CHARACTER */,\n 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,\n 0xe0001 /* LANGUAGE TAG */,\n 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,\n 0xffffd /* [PRIVATE USE, PLANE 15] */,\n 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,\n 0x05be,\n 0x05c0,\n 0x05c0,\n 0x05c3,\n 0x05c3,\n 0x05d0,\n 0x05ea,\n 0x05f0,\n 0x05f4,\n 0x061b,\n 0x061b,\n 0x061f,\n 0x061f,\n 0x0621,\n 0x063a,\n 0x0640,\n 0x064a,\n 0x066d,\n 0x066f,\n 0x0671,\n 0x06d5,\n 0x06dd,\n 0x06dd,\n 0x06e5,\n 0x06e6,\n 0x06fa,\n 0x06fe,\n 0x0700,\n 0x070d,\n 0x0710,\n 0x0710,\n 0x0712,\n 0x072c,\n 0x0780,\n 0x07a5,\n 0x07b1,\n 0x07b1,\n 0x200f,\n 0x200f,\n 0xfb1d,\n 0xfb1d,\n 0xfb1f,\n 0xfb28,\n 0xfb2a,\n 0xfb36,\n 0xfb38,\n 0xfb3c,\n 0xfb3e,\n 0xfb3e,\n 0xfb40,\n 0xfb41,\n 0xfb43,\n 0xfb44,\n 0xfb46,\n 0xfbb1,\n 0xfbd3,\n 0xfd3d,\n 0xfd50,\n 0xfd8f,\n 0xfd92,\n 0xfdc7,\n 0xfdf0,\n 0xfdfc,\n 0xfe70,\n 0xfe74,\n 0xfe76,\n 0xfefc\n];\n// prettier-ignore-end\n\nconst isBidirectionalRAL = character => 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,\n 0x005a,\n 0x0061,\n 0x007a,\n 0x00aa,\n 0x00aa,\n 0x00b5,\n 0x00b5,\n 0x00ba,\n 0x00ba,\n 0x00c0,\n 0x00d6,\n 0x00d8,\n 0x00f6,\n 0x00f8,\n 0x0220,\n 0x0222,\n 0x0233,\n 0x0250,\n 0x02ad,\n 0x02b0,\n 0x02b8,\n 0x02bb,\n 0x02c1,\n 0x02d0,\n 0x02d1,\n 0x02e0,\n 0x02e4,\n 0x02ee,\n 0x02ee,\n 0x037a,\n 0x037a,\n 0x0386,\n 0x0386,\n 0x0388,\n 0x038a,\n 0x038c,\n 0x038c,\n 0x038e,\n 0x03a1,\n 0x03a3,\n 0x03ce,\n 0x03d0,\n 0x03f5,\n 0x0400,\n 0x0482,\n 0x048a,\n 0x04ce,\n 0x04d0,\n 0x04f5,\n 0x04f8,\n 0x04f9,\n 0x0500,\n 0x050f,\n 0x0531,\n 0x0556,\n 0x0559,\n 0x055f,\n 0x0561,\n 0x0587,\n 0x0589,\n 0x0589,\n 0x0903,\n 0x0903,\n 0x0905,\n 0x0939,\n 0x093d,\n 0x0940,\n 0x0949,\n 0x094c,\n 0x0950,\n 0x0950,\n 0x0958,\n 0x0961,\n 0x0964,\n 0x0970,\n 0x0982,\n 0x0983,\n 0x0985,\n 0x098c,\n 0x098f,\n 0x0990,\n 0x0993,\n 0x09a8,\n 0x09aa,\n 0x09b0,\n 0x09b2,\n 0x09b2,\n 0x09b6,\n 0x09b9,\n 0x09be,\n 0x09c0,\n 0x09c7,\n 0x09c8,\n 0x09cb,\n 0x09cc,\n 0x09d7,\n 0x09d7,\n 0x09dc,\n 0x09dd,\n 0x09df,\n 0x09e1,\n 0x09e6,\n 0x09f1,\n 0x09f4,\n 0x09fa,\n 0x0a05,\n 0x0a0a,\n 0x0a0f,\n 0x0a10,\n 0x0a13,\n 0x0a28,\n 0x0a2a,\n 0x0a30,\n 0x0a32,\n 0x0a33,\n 0x0a35,\n 0x0a36,\n 0x0a38,\n 0x0a39,\n 0x0a3e,\n 0x0a40,\n 0x0a59,\n 0x0a5c,\n 0x0a5e,\n 0x0a5e,\n 0x0a66,\n 0x0a6f,\n 0x0a72,\n 0x0a74,\n 0x0a83,\n 0x0a83,\n 0x0a85,\n 0x0a8b,\n 0x0a8d,\n 0x0a8d,\n 0x0a8f,\n 0x0a91,\n 0x0a93,\n 0x0aa8,\n 0x0aaa,\n 0x0ab0,\n 0x0ab2,\n 0x0ab3,\n 0x0ab5,\n 0x0ab9,\n 0x0abd,\n 0x0ac0,\n 0x0ac9,\n 0x0ac9,\n 0x0acb,\n 0x0acc,\n 0x0ad0,\n 0x0ad0,\n 0x0ae0,\n 0x0ae0,\n 0x0ae6,\n 0x0aef,\n 0x0b02,\n 0x0b03,\n 0x0b05,\n 0x0b0c,\n 0x0b0f,\n 0x0b10,\n 0x0b13,\n 0x0b28,\n 0x0b2a,\n 0x0b30,\n 0x0b32,\n 0x0b33,\n 0x0b36,\n 0x0b39,\n 0x0b3d,\n 0x0b3e,\n 0x0b40,\n 0x0b40,\n 0x0b47,\n 0x0b48,\n 0x0b4b,\n 0x0b4c,\n 0x0b57,\n 0x0b57,\n 0x0b5c,\n 0x0b5d,\n 0x0b5f,\n 0x0b61,\n 0x0b66,\n 0x0b70,\n 0x0b83,\n 0x0b83,\n 0x0b85,\n 0x0b8a,\n 0x0b8e,\n 0x0b90,\n 0x0b92,\n 0x0b95,\n 0x0b99,\n 0x0b9a,\n 0x0b9c,\n 0x0b9c,\n 0x0b9e,\n 0x0b9f,\n 0x0ba3,\n 0x0ba4,\n 0x0ba8,\n 0x0baa,\n 0x0bae,\n 0x0bb5,\n 0x0bb7,\n 0x0bb9,\n 0x0bbe,\n 0x0bbf,\n 0x0bc1,\n 0x0bc2,\n 0x0bc6,\n 0x0bc8,\n 0x0bca,\n 0x0bcc,\n 0x0bd7,\n 0x0bd7,\n 0x0be7,\n 0x0bf2,\n 0x0c01,\n 0x0c03,\n 0x0c05,\n 0x0c0c,\n 0x0c0e,\n 0x0c10,\n 0x0c12,\n 0x0c28,\n 0x0c2a,\n 0x0c33,\n 0x0c35,\n 0x0c39,\n 0x0c41,\n 0x0c44,\n 0x0c60,\n 0x0c61,\n 0x0c66,\n 0x0c6f,\n 0x0c82,\n 0x0c83,\n 0x0c85,\n 0x0c8c,\n 0x0c8e,\n 0x0c90,\n 0x0c92,\n 0x0ca8,\n 0x0caa,\n 0x0cb3,\n 0x0cb5,\n 0x0cb9,\n 0x0cbe,\n 0x0cbe,\n 0x0cc0,\n 0x0cc4,\n 0x0cc7,\n 0x0cc8,\n 0x0cca,\n 0x0ccb,\n 0x0cd5,\n 0x0cd6,\n 0x0cde,\n 0x0cde,\n 0x0ce0,\n 0x0ce1,\n 0x0ce6,\n 0x0cef,\n 0x0d02,\n 0x0d03,\n 0x0d05,\n 0x0d0c,\n 0x0d0e,\n 0x0d10,\n 0x0d12,\n 0x0d28,\n 0x0d2a,\n 0x0d39,\n 0x0d3e,\n 0x0d40,\n 0x0d46,\n 0x0d48,\n 0x0d4a,\n 0x0d4c,\n 0x0d57,\n 0x0d57,\n 0x0d60,\n 0x0d61,\n 0x0d66,\n 0x0d6f,\n 0x0d82,\n 0x0d83,\n 0x0d85,\n 0x0d96,\n 0x0d9a,\n 0x0db1,\n 0x0db3,\n 0x0dbb,\n 0x0dbd,\n 0x0dbd,\n 0x0dc0,\n 0x0dc6,\n 0x0dcf,\n 0x0dd1,\n 0x0dd8,\n 0x0ddf,\n 0x0df2,\n 0x0df4,\n 0x0e01,\n 0x0e30,\n 0x0e32,\n 0x0e33,\n 0x0e40,\n 0x0e46,\n 0x0e4f,\n 0x0e5b,\n 0x0e81,\n 0x0e82,\n 0x0e84,\n 0x0e84,\n 0x0e87,\n 0x0e88,\n 0x0e8a,\n 0x0e8a,\n 0x0e8d,\n 0x0e8d,\n 0x0e94,\n 0x0e97,\n 0x0e99,\n 0x0e9f,\n 0x0ea1,\n 0x0ea3,\n 0x0ea5,\n 0x0ea5,\n 0x0ea7,\n 0x0ea7,\n 0x0eaa,\n 0x0eab,\n 0x0ead,\n 0x0eb0,\n 0x0eb2,\n 0x0eb3,\n 0x0ebd,\n 0x0ebd,\n 0x0ec0,\n 0x0ec4,\n 0x0ec6,\n 0x0ec6,\n 0x0ed0,\n 0x0ed9,\n 0x0edc,\n 0x0edd,\n 0x0f00,\n 0x0f17,\n 0x0f1a,\n 0x0f34,\n 0x0f36,\n 0x0f36,\n 0x0f38,\n 0x0f38,\n 0x0f3e,\n 0x0f47,\n 0x0f49,\n 0x0f6a,\n 0x0f7f,\n 0x0f7f,\n 0x0f85,\n 0x0f85,\n 0x0f88,\n 0x0f8b,\n 0x0fbe,\n 0x0fc5,\n 0x0fc7,\n 0x0fcc,\n 0x0fcf,\n 0x0fcf,\n 0x1000,\n 0x1021,\n 0x1023,\n 0x1027,\n 0x1029,\n 0x102a,\n 0x102c,\n 0x102c,\n 0x1031,\n 0x1031,\n 0x1038,\n 0x1038,\n 0x1040,\n 0x1057,\n 0x10a0,\n 0x10c5,\n 0x10d0,\n 0x10f8,\n 0x10fb,\n 0x10fb,\n 0x1100,\n 0x1159,\n 0x115f,\n 0x11a2,\n 0x11a8,\n 0x11f9,\n 0x1200,\n 0x1206,\n 0x1208,\n 0x1246,\n 0x1248,\n 0x1248,\n 0x124a,\n 0x124d,\n 0x1250,\n 0x1256,\n 0x1258,\n 0x1258,\n 0x125a,\n 0x125d,\n 0x1260,\n 0x1286,\n 0x1288,\n 0x1288,\n 0x128a,\n 0x128d,\n 0x1290,\n 0x12ae,\n 0x12b0,\n 0x12b0,\n 0x12b2,\n 0x12b5,\n 0x12b8,\n 0x12be,\n 0x12c0,\n 0x12c0,\n 0x12c2,\n 0x12c5,\n 0x12c8,\n 0x12ce,\n 0x12d0,\n 0x12d6,\n 0x12d8,\n 0x12ee,\n 0x12f0,\n 0x130e,\n 0x1310,\n 0x1310,\n 0x1312,\n 0x1315,\n 0x1318,\n 0x131e,\n 0x1320,\n 0x1346,\n 0x1348,\n 0x135a,\n 0x1361,\n 0x137c,\n 0x13a0,\n 0x13f4,\n 0x1401,\n 0x1676,\n 0x1681,\n 0x169a,\n 0x16a0,\n 0x16f0,\n 0x1700,\n 0x170c,\n 0x170e,\n 0x1711,\n 0x1720,\n 0x1731,\n 0x1735,\n 0x1736,\n 0x1740,\n 0x1751,\n 0x1760,\n 0x176c,\n 0x176e,\n 0x1770,\n 0x1780,\n 0x17b6,\n 0x17be,\n 0x17c5,\n 0x17c7,\n 0x17c8,\n 0x17d4,\n 0x17da,\n 0x17dc,\n 0x17dc,\n 0x17e0,\n 0x17e9,\n 0x1810,\n 0x1819,\n 0x1820,\n 0x1877,\n 0x1880,\n 0x18a8,\n 0x1e00,\n 0x1e9b,\n 0x1ea0,\n 0x1ef9,\n 0x1f00,\n 0x1f15,\n 0x1f18,\n 0x1f1d,\n 0x1f20,\n 0x1f45,\n 0x1f48,\n 0x1f4d,\n 0x1f50,\n 0x1f57,\n 0x1f59,\n 0x1f59,\n 0x1f5b,\n 0x1f5b,\n 0x1f5d,\n 0x1f5d,\n 0x1f5f,\n 0x1f7d,\n 0x1f80,\n 0x1fb4,\n 0x1fb6,\n 0x1fbc,\n 0x1fbe,\n 0x1fbe,\n 0x1fc2,\n 0x1fc4,\n 0x1fc6,\n 0x1fcc,\n 0x1fd0,\n 0x1fd3,\n 0x1fd6,\n 0x1fdb,\n 0x1fe0,\n 0x1fec,\n 0x1ff2,\n 0x1ff4,\n 0x1ff6,\n 0x1ffc,\n 0x200e,\n 0x200e,\n 0x2071,\n 0x2071,\n 0x207f,\n 0x207f,\n 0x2102,\n 0x2102,\n 0x2107,\n 0x2107,\n 0x210a,\n 0x2113,\n 0x2115,\n 0x2115,\n 0x2119,\n 0x211d,\n 0x2124,\n 0x2124,\n 0x2126,\n 0x2126,\n 0x2128,\n 0x2128,\n 0x212a,\n 0x212d,\n 0x212f,\n 0x2131,\n 0x2133,\n 0x2139,\n 0x213d,\n 0x213f,\n 0x2145,\n 0x2149,\n 0x2160,\n 0x2183,\n 0x2336,\n 0x237a,\n 0x2395,\n 0x2395,\n 0x249c,\n 0x24e9,\n 0x3005,\n 0x3007,\n 0x3021,\n 0x3029,\n 0x3031,\n 0x3035,\n 0x3038,\n 0x303c,\n 0x3041,\n 0x3096,\n 0x309d,\n 0x309f,\n 0x30a1,\n 0x30fa,\n 0x30fc,\n 0x30ff,\n 0x3105,\n 0x312c,\n 0x3131,\n 0x318e,\n 0x3190,\n 0x31b7,\n 0x31f0,\n 0x321c,\n 0x3220,\n 0x3243,\n 0x3260,\n 0x327b,\n 0x327f,\n 0x32b0,\n 0x32c0,\n 0x32cb,\n 0x32d0,\n 0x32fe,\n 0x3300,\n 0x3376,\n 0x337b,\n 0x33dd,\n 0x33e0,\n 0x33fe,\n 0x3400,\n 0x4db5,\n 0x4e00,\n 0x9fa5,\n 0xa000,\n 0xa48c,\n 0xac00,\n 0xd7a3,\n 0xd800,\n 0xfa2d,\n 0xfa30,\n 0xfa6a,\n 0xfb00,\n 0xfb06,\n 0xfb13,\n 0xfb17,\n 0xff21,\n 0xff3a,\n 0xff41,\n 0xff5a,\n 0xff66,\n 0xffbe,\n 0xffc2,\n 0xffc7,\n 0xffca,\n 0xffcf,\n 0xffd2,\n 0xffd7,\n 0xffda,\n 0xffdc,\n 0x10300,\n 0x1031e,\n 0x10320,\n 0x10323,\n 0x10330,\n 0x1034a,\n 0x10400,\n 0x10425,\n 0x10428,\n 0x1044d,\n 0x1d000,\n 0x1d0f5,\n 0x1d100,\n 0x1d126,\n 0x1d12a,\n 0x1d166,\n 0x1d16a,\n 0x1d172,\n 0x1d183,\n 0x1d184,\n 0x1d18c,\n 0x1d1a9,\n 0x1d1ae,\n 0x1d1dd,\n 0x1d400,\n 0x1d454,\n 0x1d456,\n 0x1d49c,\n 0x1d49e,\n 0x1d49f,\n 0x1d4a2,\n 0x1d4a2,\n 0x1d4a5,\n 0x1d4a6,\n 0x1d4a9,\n 0x1d4ac,\n 0x1d4ae,\n 0x1d4b9,\n 0x1d4bb,\n 0x1d4bb,\n 0x1d4bd,\n 0x1d4c0,\n 0x1d4c2,\n 0x1d4c3,\n 0x1d4c5,\n 0x1d505,\n 0x1d507,\n 0x1d50a,\n 0x1d50d,\n 0x1d514,\n 0x1d516,\n 0x1d51c,\n 0x1d51e,\n 0x1d539,\n 0x1d53b,\n 0x1d53e,\n 0x1d540,\n 0x1d544,\n 0x1d546,\n 0x1d546,\n 0x1d54a,\n 0x1d550,\n 0x1d552,\n 0x1d6a3,\n 0x1d6a8,\n 0x1d7c9,\n 0x20000,\n 0x2a6d6,\n 0x2f800,\n 0x2fa1d,\n 0xf0000,\n 0xffffd,\n 0x100000,\n 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 CryptoJS from 'crypto-js';\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 wordArrayToBuffer(CryptoJS.MD5(infoStr));\n }\n\n static generateRandomWordArray(bytes) {\n return CryptoJS.lib.WordArray.random(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 = wordArrayToBuffer(ownerPasswordEntry);\n encDict.U = wordArrayToBuffer(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 = CryptoJS.lib.WordArray.create(\n userPasswordEntry.words.slice(10, 12),\n 8\n );\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 = CryptoJS.lib.WordArray.create(\n ownerPasswordEntry.words.slice(10, 12),\n 8\n );\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 = wordArrayToBuffer(ownerPasswordEntry);\n encDict.OE = wordArrayToBuffer(ownerEncryptionKeyEntry);\n encDict.U = wordArrayToBuffer(userPasswordEntry);\n encDict.UE = wordArrayToBuffer(userEncryptionKeyEntry);\n encDict.P = permissions;\n encDict.Perms = wordArrayToBuffer(permsEntry);\n }\n\n getEncryptFn(obj, gen) {\n let digest;\n if (this.version < 5) {\n digest = this.encryptionKey\n .clone()\n .concat(\n CryptoJS.lib.WordArray.create(\n [\n ((obj & 0xff) << 24) |\n ((obj & 0xff00) << 8) |\n ((obj >> 8) & 0xff00) |\n (gen & 0xff),\n (gen & 0xff00) << 16\n ],\n 5\n )\n );\n }\n\n if (this.version === 1 || this.version === 2) {\n let key = CryptoJS.MD5(digest);\n key.sigBytes = Math.min(16, this.keyBits / 8 + 5);\n return buffer =>\n wordArrayToBuffer(\n CryptoJS.RC4.encrypt(CryptoJS.lib.WordArray.create(buffer), key)\n .ciphertext\n );\n }\n\n let key;\n if (this.version === 4) {\n key = CryptoJS.MD5(\n digest.concat(CryptoJS.lib.WordArray.create([0x73416c54], 4))\n );\n } else {\n key = this.encryptionKey;\n }\n\n const iv = PDFSecurity.generateRandomWordArray(16);\n const options = {\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n iv\n };\n\n return buffer =>\n wordArrayToBuffer(\n iv\n .clone()\n .concat(\n CryptoJS.AES.encrypt(\n CryptoJS.lib.WordArray.create(buffer),\n key,\n options\n ).ciphertext\n )\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 CryptoJS.RC4.encrypt(processPasswordR2R3R4(), encryptionKey)\n .ciphertext;\n}\n\nfunction getUserPasswordR3R4(documentId, encryptionKey) {\n const key = encryptionKey.clone();\n let cipher = CryptoJS.MD5(\n processPasswordR2R3R4().concat(CryptoJS.lib.WordArray.create(documentId))\n );\n for (let i = 0; i < 20; i++) {\n const xorRound = Math.ceil(key.sigBytes / 4);\n for (let j = 0; j < xorRound; j++) {\n key.words[j] =\n encryptionKey.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\n }\n cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\n }\n return cipher.concat(CryptoJS.lib.WordArray.create(null, 16));\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 = CryptoJS.MD5(digest);\n }\n\n const key = digest.clone();\n key.sigBytes = keyBits / 8;\n let cipher = paddedUserPassword;\n round = r >= 3 ? 20 : 1;\n for (let i = 0; i < round; i++) {\n const xorRound = Math.ceil(key.sigBytes / 4);\n for (let j = 0; j < xorRound; j++) {\n key.words[j] = digest.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\n }\n cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\n }\n return cipher;\n}\n\nfunction getEncryptionKeyR2R3R4(\n r,\n keyBits,\n documentId,\n paddedUserPassword,\n ownerPasswordEntry,\n permissions\n) {\n let key = paddedUserPassword\n .clone()\n .concat(ownerPasswordEntry)\n .concat(CryptoJS.lib.WordArray.create([lsbFirstWord(permissions)], 4))\n .concat(CryptoJS.lib.WordArray.create(documentId));\n const round = r >= 3 ? 51 : 1;\n for (let i = 0; i < round; i++) {\n key = CryptoJS.MD5(key);\n key.sigBytes = keyBits / 8;\n }\n return key;\n}\n\nfunction getUserPasswordR5(processedUserPassword, generateRandomWordArray) {\n const validationSalt = generateRandomWordArray(8);\n const keySalt = generateRandomWordArray(8);\n return CryptoJS.SHA256(processedUserPassword.clone().concat(validationSalt))\n .concat(validationSalt)\n .concat(keySalt);\n}\n\nfunction getUserEncryptionKeyR5(\n processedUserPassword,\n userKeySalt,\n encryptionKey\n) {\n const key = CryptoJS.SHA256(\n processedUserPassword.clone().concat(userKeySalt)\n );\n const options = {\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.NoPadding,\n iv: CryptoJS.lib.WordArray.create(null, 16)\n };\n return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\n}\n\nfunction getOwnerPasswordR5(\n processedOwnerPassword,\n userPasswordEntry,\n generateRandomWordArray\n) {\n const validationSalt = generateRandomWordArray(8);\n const keySalt = generateRandomWordArray(8);\n return CryptoJS.SHA256(\n processedOwnerPassword\n .clone()\n .concat(validationSalt)\n .concat(userPasswordEntry)\n )\n .concat(validationSalt)\n .concat(keySalt);\n}\n\nfunction getOwnerEncryptionKeyR5(\n processedOwnerPassword,\n ownerKeySalt,\n userPasswordEntry,\n encryptionKey\n) {\n const key = CryptoJS.SHA256(\n processedOwnerPassword\n .clone()\n .concat(ownerKeySalt)\n .concat(userPasswordEntry)\n );\n const options = {\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.NoPadding,\n iv: CryptoJS.lib.WordArray.create(null, 16)\n };\n return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\n}\n\nfunction getEncryptionKeyR5(generateRandomWordArray) {\n return generateRandomWordArray(32);\n}\n\nfunction getEncryptedPermissionsR5(\n permissions,\n encryptionKey,\n generateRandomWordArray\n) {\n const cipher = CryptoJS.lib.WordArray.create(\n [lsbFirstWord(permissions), 0xffffffff, 0x54616462],\n 12\n ).concat(generateRandomWordArray(4));\n const options = {\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.NoPadding\n };\n return CryptoJS.AES.encrypt(cipher, encryptionKey, options).ciphertext;\n}\n\nfunction processPasswordR2R3R4(password = '') {\n const out = Buffer.alloc(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 CryptoJS.lib.WordArray.create(out);\n}\n\nfunction processPasswordR5(password = '') {\n password = unescape(encodeURIComponent(saslprep(password)));\n const length = Math.min(127, password.length);\n const out = Buffer.alloc(length);\n\n for (let i = 0; i < length; i++) {\n out[i] = password.charCodeAt(i);\n }\n\n return CryptoJS.lib.WordArray.create(out);\n}\n\nfunction lsbFirstWord(data) {\n return (\n ((data & 0xff) << 24) |\n ((data & 0xff00) << 8) |\n ((data >> 8) & 0xff00) |\n ((data >> 24) & 0xff)\n );\n}\n\nfunction wordArrayToBuffer(wordArray) {\n const byteArray = [];\n for (let i = 0; i < wordArray.sigBytes; i++) {\n byteArray.push(\n (wordArray.words[Math.floor(i / 4)] >> (8 * (3 - (i % 4)))) & 0xff\n );\n }\n return Buffer.from(byteArray);\n}\n\nconst PASSWORD_PADDING = [\n 0x28,\n 0xbf,\n 0x4e,\n 0x5e,\n 0x4e,\n 0x75,\n 0x8a,\n 0x41,\n 0x64,\n 0x00,\n 0x4e,\n 0x56,\n 0xff,\n 0xfa,\n 0x01,\n 0x08,\n 0x2e,\n 0x2e,\n 0x00,\n 0xb6,\n 0xd0,\n 0x68,\n 0x3e,\n 0x80,\n 0x2f,\n 0x0c,\n 0xa9,\n 0xfe,\n 0x64,\n 0x53,\n 0x69,\n 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';\n\nconst { PDFGradient, PDFLinearGradient, PDFRadialGradient } = Gradient;\nconst { PDFTilingPattern } = pattern;\n\nexport default {\n initColor() {\n // The opacity dictionaries\n this._opacityRegistry = {};\n this._opacityCount = 0;\n this._patternCount = 0;\n return (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 }\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 color = color.join(' ');\n this.addContent(`${color} ${op}`);\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 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\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 parse = function(path) {\n let cmd;\n const ret = [];\n let args = [];\n let curArg = '';\n let foundDecimal = false;\n let params = 0;\n\n for (let c of path) {\n if (parameters[c] != null) {\n params = parameters[c];\n if (cmd) {\n // save existing command\n if (curArg.length > 0) {\n args[args.length] = +curArg;\n }\n ret[ret.length] = { cmd, args };\n\n args = [];\n curArg = '';\n foundDecimal = false;\n }\n\n cmd = c;\n } else if (\n [' ', ','].includes(c) ||\n (c === '-' && curArg.length > 0 && curArg[curArg.length - 1] !== 'e') ||\n (c === '.' && foundDecimal)\n ) {\n if (curArg.length === 0) {\n continue;\n }\n\n if (args.length === params) {\n // handle reused commands\n ret[ret.length] = { cmd, args };\n args = [+curArg];\n\n // handle assumed commands\n if (cmd === 'M') {\n cmd = 'L';\n }\n if (cmd === 'm') {\n cmd = 'l';\n }\n } else {\n args[args.length] = +curArg;\n }\n\n foundDecimal = c === '.';\n\n // fix for negative numbers or repeated decimals with no delimeter between commands\n curArg = ['-', '.'].includes(c) ? c : '';\n } else {\n curArg += c;\n if (c === '.') {\n foundDecimal = true;\n }\n }\n }\n\n // add the last command\n if (curArg.length > 0) {\n if (args.length === params) {\n // handle reused commands\n ret[ret.length] = { cmd, args };\n args = [+curArg];\n\n // handle assumed commands\n if (cmd === 'M') {\n cmd = 'L';\n }\n if (cmd === 'm') {\n cmd = 'l';\n }\n } else {\n args[args.length] = +curArg;\n }\n }\n\n ret[ret.length] = { cmd, args };\n\n return ret;\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.cmd] === 'function') {\n runners[c.cmd](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 return (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 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","import fs from 'fs';\n\nconst 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 static open(filename) {\n return new AFMFont(fs.readFileSync(filename, 'utf8'));\n }\n\n constructor(contents) {\n this.contents = contents;\n this.attributes = {};\n this.glyphWidths = {};\n this.boundingBoxes = {};\n this.kernPairs = {};\n\n this.parse();\n // todo: remove charWidths since appears to not be used\n this.charWidths = new Array(256);\n for (let char = 0; char <= 255; char++) {\n this.charWidths[char] = this.glyphWidths[characters[char]];\n }\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 parse() {\n let section = '';\n for (let line of this.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 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 return (this.embedded = true);\n }\n\n embed() {\n throw new Error('Must be implemented by subclasses');\n }\n\n lineHeight(size, includeGap) {\n if (includeGap == null) {\n includeGap = false;\n }\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;\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 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 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\n1 beginbfrange\n<0000> <${toHex(entries.length - 1)}> [${entries.join(' ')}]\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';\n\nexport default {\n initFonts(defaultFont = 'Helvetica') {\n // Lookup table for embedded fonts\n this._fontFamilies = {};\n this._fontCount = 0;\n\n // Font state\n this._fontSize = 12;\n this._font = null;\n\n this._registeredFonts = {};\n\n // Set the default font\n if (defaultFont) {\n this.font(defaultFont);\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 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 ((font = this._fontFamilies[this._font.name])) {\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 = _fontSize;\n return this;\n },\n\n currentLineHeight(includeGap) {\n if (includeGap == null) {\n includeGap = false;\n }\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","import { EventEmitter } from 'events';\nimport LineBreaker from 'linebreak';\n\nclass LineWrapper extends EventEmitter {\n constructor(document, options) {\n super();\n this.document = document;\n this.indent = options.indent || 0;\n this.characterSpacing = options.characterSpacing || 0;\n this.wordSpacing = options.wordSpacing === 0;\n this.columns = options.columns || 1;\n this.columnGap = options.columnGap != null ? options.columnGap : 18; // 1/4 inch\n this.lineWidth =\n (options.width - this.columnGap * (this.columns - 1)) / 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 = this.startY + options.height;\n } else {\n this.maxY = 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 return 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 return (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 return 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 (\n this.document.widthOfString(word, this) +\n this.characterSpacing +\n this.wordSpacing\n );\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 if (options.indent != null) {\n this.indent = options.indent;\n }\n if (options.characterSpacing != null) {\n this.characterSpacing = options.characterSpacing;\n }\n if (options.wordSpacing != null) {\n this.wordSpacing = options.wordSpacing;\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 (w <= this.spaceLeft) {\n buffer += word;\n textWidth += w;\n wc++;\n }\n\n if (bk.required || w > this.spaceLeft) {\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 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 emitLine();\n\n // if we've reached the edge of the page,\n // continue on a new page or column\n if (this.document.y + lh > this.maxY) {\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 }\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 return (this.document.y = y);\n } else {\n return (this.document.x = this.startX);\n }\n }\n\n nextSection(options) {\n this.emit('sectionEnd', options, this);\n\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 this.document.x = this.startX;\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 this.emit('sectionStart', options, this);\n return true;\n }\n}\n\nexport default LineWrapper;\n","import LineWrapper from '../line_wrapper';\nimport PDFObject from '../object';\n\nconst { number } = PDFObject;\n\nexport default {\n initText() {\n this._line = this._line.bind(this);\n // Current coordinates\n this.x = 0;\n this.y = 0;\n return (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(this.struct(options.structType || 'P',\n [ this.markStructureContent(options.structType || 'P') ]));\n }\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 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 return (\n this._font.widthOfString(string, this._fontSize, options.features) +\n (options.characterSpacing || 0) * (string.length - 1)\n );\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 return (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, wrapper) {\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 label = function(n) {\n switch (listType) {\n case 'numbered':\n return `${n}.`;\n case '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 };\n\n wrapper = new LineWrapper(this, options);\n wrapper.on('line', this._line);\n\n level = 1;\n let i = 0;\n wrapper.on('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(this.struct(labelType || bodyType,\n [ this.markStructureContent(labelType || bodyType) ]));\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 = label(numbers[i - 1]);\n this._fragment(text, this.x - indent, this.y, options);\n break;\n }\n\n if (item && labelType && bodyType) {\n item.add(this.struct(bodyType, [ this.markStructureContent(bodyType) ]));\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 return (wrapper.lineWidth -= pos);\n });\n\n wrapper.on('sectionEnd', () => {\n const pos = indent + itemIndent * (level - 1);\n this.x -= pos;\n return (wrapper.lineWidth += pos);\n });\n\n wrapper.wrap(items.join('\\n'), options);\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 return result;\n },\n\n _line(text, options = {}, wrapper) {\n this._fragment(text, this.x, this.y, options);\n const lineGap = options.lineGap || this._lineGap || 0;\n\n if (!wrapper) {\n return (this.x += this.widthOfString(text));\n } else {\n return (this.y += this.currentLineHeight(true) + lineGap);\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\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 this.link(x, y, renderedWidth, this.currentLineHeight(), options.link);\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 // 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 return (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 return (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 return this.restore();\n }\n};\n","const MARKERS = [\n 0xffc0,\n 0xffc1,\n 0xffc2,\n 0xffc3,\n 0xffc5,\n 0xffc6,\n 0xffc7,\n 0xffc8,\n 0xffc9,\n 0xffca,\n 0xffcb,\n 0xffcc,\n 0xffcd,\n 0xffce,\n 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 let pos = 2;\n while (pos < this.data.length) {\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 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 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 split = src.split(',');\n if (split[0].startsWith(\"data:\") && split[0].endsWith(\";base64\")) {\n data = Buffer.from(split[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 return (this._imageCount = 0);\n },\n\n image(src, x, y, options = {}) {\n let bh, bp, bw, image, ip, left, left1;\n if (typeof x === 'object') {\n options = x;\n x = null;\n }\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 w = options.width || image.width;\n let h = options.height || image.height;\n\n if (options.width && !options.height) {\n const wp = w / image.width;\n w = image.width * wp;\n h = image.height * wp;\n } else if (options.height && !options.width) {\n const hp = h / image.height;\n w = image.width * hp;\n h = image.height * hp;\n } else if (options.scale) {\n w = image.width * options.scale;\n h = image.height * options.scale;\n } else if (options.fit) {\n [bw, bh] = options.fit;\n bp = bw / bh;\n ip = image.width / image.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 = image.width / image.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 // 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 (this.y === y) {\n this.y += h;\n }\n\n this.save();\n this.transform(w, 0, 0, -h, x, y + h);\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","export 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 // 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 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 options.Name = 'Comment';\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 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(\n file.src,\n Object.assign({ hidden: true }, file)\n );\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","class PDFOutline {\n constructor(document, parent, title, dest, options = { expanded: false }) {\n this.document = document;\n this.options = options;\n this.outlineData = {};\n\n if (dest !== null) {\n this.outlineData['Dest'] = [dest.dictionary, 'Fit'];\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 = { expanded: false }) {\n const result = new PDFOutline(\n this.document,\n this.dictionary,\n title,\n this.document.page,\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 return (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 = '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\";\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 (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.getStructParentTree()\n .get(pageRef.data.StructParents);\n pageStructParents[mcid] = this.dictionary;\n });\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 child instanceof PDFStructureElement ||\n child instanceof PDFStructureContent ||\n typeof child === 'function';\n }\n\n _contentForClosure(closure) {\n const content = this.document.markStructureContent(this.dictionary.data.S);\n closure();\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}\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\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 = [options.bbox[0], this.page.height - options.bbox[3],\n options.bbox[2], this.page.height - options.bbox[1]];\n }\n if (Array.isArray(options.attached) &&\n options.attached.every(val => typeof val === 'string')) {\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(this.page.structParentTreeKey);\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 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(marking.tag, marking.options);\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 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};\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.initForms() 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 result |= FIELD_FLAGS[key];\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 CryptoJS from 'crypto-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 * @returns filespec reference\n */\n file(src, options = {}) {\n options.name = options.name || src;\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 let match;\n if ((match = /^data:(.*);base64,(.*)$/.exec(src))) {\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 = CryptoJS.MD5(\n CryptoJS.lib.WordArray.create(new Uint8Array(data))\n );\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 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 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 === b.Params.CreationDate &&\n a.Params.ModDate === b.Params.ModDate\n );\n}\n","/*\nPDFDocument - represents an entire PDF document\nBy Devon Govett\n*/\n\nimport stream from 'stream';\nimport fs from 'fs';\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';\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 // The current page\n this.page = null;\n\n // Initialize mixins\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\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);\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({ limits: false });\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 return (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 return (this._ended = false);\n }\n }\n\n write(filename, fn) {\n // print a deprecation warning with a stacktrace\n const err = new Error(`\\\nPDFDocument#write is deprecated, and will be removed in a future version of PDFKit. \\\nPlease pipe the document into a Node stream.\\\n`);\n\n console.warn(err.stack);\n\n this.pipe(fs.createWriteStream(filename));\n this.end();\n return this.once('end', fn);\n }\n\n end() {\n this.flushPages();\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 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 return this._finalize();\n } else {\n return (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 return 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(ColorMixin);\nmixin(VectorMixin);\nmixin(FontsMixin);\nmixin(TextMixin);\nmixin(ImagesMixin);\nmixin(AnnotationsMixin);\nmixin(OutlineMixin);\nmixin(MarkingsMixin);\nmixin(AcroFormMixin);\nmixin(AttachmentsMixin);\n\nPDFDocument.LineWrapper = LineWrapper;\n\nexport default PDFDocument;\n"],"names":["PDFAbstractReference","_classCallCheck","_createClass","key","value","toString","Error","PDFTree","options","arguments","length","undefined","_items","limits","add","val","get","_this","sortedKeys","Object","keys","sort","a","b","_compareKeys","out","first","last","push","concat","PDFObject","convert","_dataForKey","_keysName","_iterator","_createForOfIteratorHelper","_step","s","n","done","err","e","f","join","pad","str","Array","slice","escapableRe","escapable","swapBytes","buff","l","i","end","object","encryptFn","String","string","isUnicode","charCodeAt","stringBuffer","Buffer","from","valueOf","replace","c","isBuffer","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","isArray","items","map","call","number","Math","round","PDFReference","_PDFAbstractReference","document","id","data","_callSuper","gen","compress","Filter","uncompressedLength","buffer","_inherits","write","chunk","Uint8Array","Length","finalize","offset","_offset","_security","getEncryptFn","zlib","deflateSync","_write","_refEnd","DEFAULT_MARGINS","top","left","bottom","right","SIZES","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C0","C1","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","size","layout","margin","margins","dimensions","toUpperCase","width","height","content","ref","resources","ProcSet","dictionary","Type","Parent","_root","Pages","MediaBox","Contents","Resources","markings","Font","XObject","ExtGState","Pattern","ColorSpace","Annots","StructParents","createStructParentTreeNextKey","maxY","PDFNameTree","_PDFTree","localeCompare","k","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","x","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","ownerPassword","userPassword","_setupEncryption","pdfVersion","version","encDict","_setupEncryptionV1V2V4","_setupEncryptionV5","v","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","wordArrayToBuffer","U","P","processedUserPassword","processPasswordR5","processedOwnerPassword","getEncryptionKeyR5","generateRandomWordArray","getUserPasswordR5","userKeySalt","CryptoJS","lib","WordArray","create","words","userEncryptionKeyEntry","getUserEncryptionKeyR5","getOwnerPasswordR5","ownerKeySalt","ownerEncryptionKeyEntry","getOwnerEncryptionKeyR5","permsEntry","getEncryptedPermissionsR5","OE","UE","Perms","obj","digest","clone","MD5","sigBytes","min","RC4","encrypt","ciphertext","iv","mode","CBC","padding","Pkcs7","AES","generateFileID","info","infoStr","CreationDate","getTime","hasOwnProperty","bytes","random","permissionObject","printing","modifying","copying","annotating","fillingForms","contentAccessibility","documentAssembly","documentId","cipher","xorRound","ceil","j","lsbFirstWord","validationSalt","keySalt","SHA256","NoPadding","ECB","password","alloc","index","code","PASSWORD_PADDING","unescape","encodeURIComponent","wordArray","byteArray","PDFGradient","doc","stops","embedded","transform","stop","pos","color","opacity","_normalizeColor","_colorSpace","max","setTransform","m11","m12","m21","m22","dx","dy","embed","m","fn","stopsLength","matrix","bounds","encode","FunctionType","Domain","N","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","patterns","stroke","_this$doc$_ctm","_slicedToArray","_ctm","m0","m1","m2","m3","m4","m5","_this$transform","_setColorSpace","op","addContent","PDFLinearGradient","_PDFGradient","x1","y1","x2","y2","ShadingType","Coords","Function","Extend","PDFRadialGradient","_PDFGradient2","r1","r2","_this2","underlyingColorSpaces","PDFTilingPattern","bBox","xStep","yStep","stream","createPattern","toFixed","embedPatternColorSpaces","forEach","csName","csId","getPatternColorSpaceId","colorSpaces","cs","underlyingColorspace","_patternCount","patternColor","normalizedColor","_getColorSpace","Gradient","initColor","_opacityRegistry","_opacityCount","charAt","hex","parseInt","namedColors","part","_setColor","_setColorCore","space","fillColor","set","fillOpacity","_fillColor","strokeColor","strokeOpacity","_doOpacity","name","_this$_opacityRegistr","ca","CA","ext_gstates","linearGradient","radialGradient","bbox","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","C","H","h","L","M","Q","q","T","t","Z","z","parse","path","cmd","ret","args","curArg","foundDecimal","params","includes","commands","runners","moveTo","bezierCurveTo","_toConsumableArray","quadraticCurveTo","solveArc","lineTo","closePath","y","coords","_coords","rx","ry","rot","large","sweep","ex","ey","segs","arcToSegments","_iterator2","_step2","seg","bez","segmentToBezier","rotateX","ox","oy","th","PI","sin_th","sin","cos_th","cos","abs","pl","sqrt","a00","a01","a10","a11","x0","y0","d","sfactor_sq","sfactor","xc","yc","th0","atan2","th1","th_arc","segments","result","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","Number","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","_i","_points","point","_windingRule","rule","test","fill","fillAndStroke","isFillRule","clip","_m","values","translate","rotate","angle","rad","origin","_options$origin","scale","xFactor","yFactor","_options$origin2","WIN_ANSI_MAP","characters","split","AFMFont","contents","attributes","glyphWidths","boundingBoxes","kernPairs","charWidths","char","ascender","descender","xHeight","capHeight","lineGap","section","line","match","encodeText","text","res","len","glyphsForString","glyphs","charCode","characterToGlyph","widthOfGlyph","glyph","getKernPair","advancesForGlyphs","advances","open","filename","fs","readFileSync","PDFFont","widthOfString","lineHeight","includeGap","gap","STANDARD_FONTS","Courier","__dirname","CourierBold","CourierOblique","CourierBoldOblique","Helvetica","HelveticaBold","HelveticaOblique","HelveticaBoldOblique","TimesRoman","TimesBold","TimesItalic","TimesBoldItalic","Symbol","ZapfDingbats","StandardFont","_PDFFont","font","_this$font","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","position","layoutCached","cached","onlyWidth","needle","_this$layout","gid","includeGlyph","codePoints","isCFF","cff","fontFile","familyClass","sFamilyClass","flags","post","isFixedPitch","head","macStyle","italic","tag","fromCharCode","descriptor","FontName","Flags","FontBBox","minX","minY","maxX","ItalicAngle","italicAngle","Ascent","Descent","CapHeight","XHeight","StemV","FontFile3","FontFile2","descendantFontData","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","W","CIDToGIDMap","descendantFont","DescendantFonts","ToUnicode","toUnicodeCmap","cmap","entries","PDFFontFactory","src","family","fontkit","ArrayBuffer","initFonts","defaultFont","_fontFamilies","_fontCount","_fontSize","_font","_registeredFonts","cacheKey","_this$_registeredFont","fontSize","currentLineHeight","registerFont","LineWrapper","_EventEmitter","indent","characterSpacing","wordSpacing","columns","columnGap","spaceLeft","startX","startY","column","ellipsis","continuedX","on","once","continued","align","lastLine","paragraphGap","wordWidth","word","eachWord","bk","breaker","LineBreaker","wordWidths","nextBreak","shouldContinue","lbk","fbk","mightGrow","mustShrink","required","wrap","nextY","nextSection","textWidth","wc","lc","emitLine","wordCount","emit","lh","continueOnNewPage","_this$document","EventEmitter","initText","_line","bind","_lineGap","moveDown","lines","moveUp","_text","lineCallback","_initOptions","addStructure","structParent","struct","structType","markStructureContent","wrapper","_wrapper","_textOptions","heightOfString","Infinity","list","_this3","listType","unit","midLine","bulletRadius","textIndent","itemIndent","bulletIndent","level","levels","numbers","flatten","item","label","letter","times","itemType","labelType","bodyType","structTypes","_options$structTypes","diff","_fragment","assign","lineBreak","_this4","trim","spaceWidth","baseline","renderedWidth","link","goTo","destination","addNamedDestination","underline","lineY","strike","oblique","skew","fonts","_this$_font$encode","_this$_font$encode2","encodedWord","positionsWord","_this$_font$encode3","_this$_font$encode4","hadOffset","addSegment","cur","flush","MARKERS","COLOR_SPACE_MAP","JPEG","marker","readUInt16BE","bits","channels","colorSpace","BitsPerComponent","Width","Height","PNGImage","image","PNG","imgData","dataDecoded","hasAlphaChannel","isInterlaced","interlaceMethod","Predictor","Colors","colors","Columns","palette","transparency","grayscale","rgb","mask","indexed","loadIndexedAlphaChannel","splitAlphaChannel","decodeData","alphaChannel","sMask","Decode","decodePixels","pixels","p","colorCount","pixelCount","skipByteCount","colorIndex","PDFImage","startsWith","endsWith","initImages","_imageRegistry","_imageCount","bh","bp","bw","ip","left1","openImage","xobjects","wp","hp","fit","_options$fit","cover","_options$cover","valign","annotate","Rect","_convertRect","Border","F","Dest","annotations","note","Name","D","url","pages","Kids","URI","_markup","_this$_convertRect","_this$_convertRect2","QuadPoints","highlight","lineAnnotation","rectAnnotation","ellipseAnnotation","textAnnotation","DA","fileAnnotation","file","filespec","hidden","FS","Desc","_this$_ctm","PDFOutline","parent","title","dest","expanded","outlineData","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","_contentForClosure","_ref","pageStructParents","getStructParentTree","parentRef","_flush","closure","endMarkedContent","_isFlushable","K","_flushChild","_this5","_ref2","Pg","MCID","PDFNumberTree","initMarkings","structChildren","tagged","getMarkInfoDictionary","Marked","getStructTreeRoot","markContent","toClose","marking","attached","Attached","structParentTreeKey","_objectSpread","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","defaultValue","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","annotRef","formText","formPushButton","formCombo","formList","formRadioButton","formCheckbox","_resolveType","_resolveFlags","_resolveJustify","_resolveFont","_resolveStrings","_resolveColors","_resolveFormat","FT","format","fnKeystroke","fnFormat","param","AA","JS","backgroundColor","MK","BG","borderColor","BC","Ff","select","appendChoices","idx","Opt","refBody","Params","exec","_fs$statSync","statSync","birthtime","ctime","ModDate","creationDate","modifiedDate","checksum","CheckSum","Size","byteLength","_fileRegistry","isEqual","fileSpecBody","EF","UF","description","addNamedEmbeddedFile","PDFDocument","_stream$Readable","_pageBuffer","_pageBufferStart","_offsets","_waiting","Names","Dests","Producer","Creator","displayTitle","ViewerPreferences","DisplayDocTitle","autoFirstPage","addPage","bufferPages","flushPages","bufferedPageRange","start","count","switchToPage","unshift","EmbeddedFiles","addNamedJavaScript","js","JavaScript","_read","_finalize","console","warn","stack","pipe","createWriteStream","_info","entry","xRefOffset","trailer","Root","Info","ID","Encrypt","Readable","mixin","methods","prototype","ColorMixin","VectorMixin","FontsMixin","TextMixin","ImagesMixin","AnnotationsMixin","OutlineMixin","MarkingsMixin","AcroFormMixin","AttachmentsMixin"],"mappings":"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EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,CACR;AACD;;AAEA,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAGC,SAAS;EAAA,OACrCT,OAAO,CAACS,SAAS,EAAEF,sBAAsB,CAAC;AAAA;;AAE5C;AACA;AACA;AACA;AACA;AACA,IAAMG,0BAA0B,GAAG,CACjC,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,CACP;AACD;;AAEA,IAAMC,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAGF,SAAS;EAAA,OACzCT,OAAO,CAACS,SAAS,EAAEC,0BAA0B,CAAC;AAAA;;AAEhD;AACA;AACA;AACA;AACA;AACA,IAAME,0BAA0B,GAAG,CACjC,MAAM,EACN,MAAM,uBACN,MAAM,EACN,MAAM,yBACN,MAAM,EACN,MAAM,gBACN,MAAM,EACN,MAAM,gBACN,MAAM,EACN,MAAM,iBACN,MAAM,EACN,MAAM,iBACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,0BACN,MAAM,EACN,MAAM,yBACN,MAAM,EACN,MAAM,qBACN,MAAM,EACN,MAAM,0BACN,MAAM,EACN,MAAM,mBACN,MAAM,EACN,MAAM,mBACN,MAAM,EACN,MAAM,yBACN,MAAM,EACN,MAAM,8BACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,yBACP;AACD;;AAEA,IAAMC,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAGJ,SAAS;EAAA,OACxCT,OAAO,CAACS,SAAS,EAAEG,0BAA0B,CAAC;AAAA;;AAEhD;AACA,IAAME,6BAA6B,GAAG;AACpC;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,6BACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,iCACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,8BACN,MAAM,EACN,MAAM,0BACN,MAAM,EACN,MAAM,uBACN,MAAM,EACN,MAAM,4BACN,MAAM,EACN,MAAM,oBACN,MAAM,EACN,MAAM,6BACN,MAAM,EACN,MAAM,wBACN,MAAM,EACN,MAAM,4BACN,MAAM,EACN,MAAM,6BACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,6BACN,OAAO,EACP,OAAO,oCACR;AAED,IAAMC,wBAAwB,GAAG;AAC/B;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,mCACN,MAAM,EACN,MAAM,mCACN,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,QAAQ,EACR,QAAQ,kCACT;;AAED;AACA;AACA;AACA,IAAMC,qBAAqB,GAAG;AAC5B;AACF;AACA;AACA;AACE,CAAC,EACD,MAAM,6BACN,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,gCACN,MAAM,EACN,MAAM,gCACN,MAAM,EACN,MAAM,mCACN,MAAM,EACN,MAAM,+BACN,MAAM,EACN,MAAM,+BACN,MAAM,EACN,MAAM,mCACN,MAAM,EACN,MAAM,oCACN,MAAM,EACN,MAAM,oCACN,MAAM,EACN,MAAM,qCACN,MAAM,EACN,MAAM,8BACN,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,sCACN,MAAM,EACN,MAAM,yCACN,MAAM,EACN,MAAM,0CACN,MAAM,EACN,MAAM,qCACN,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,OAAO,EACP,OAAO,qBACP,OAAO,EACP,OAAO;AAEP;AACF;AACA;AACA;;AAEE,OAAO,EACP,OAAO,gCACP,QAAQ,EACR,QAAQ,+BACT;AACD;;AAEA,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAGR,SAAS;EAAA,OACrCT,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;AAAA;;AAE9C;AACA;AACA;AACA;AACA;AACA,IAAMG,kBAAkB,GAAG,CACzB,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,CACP;AACD;;AAEA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAGV,SAAS;EAAA,OAAIT,OAAO,CAACS,SAAS,EAAES,kBAAkB,CAAC;AAAA;;AAE9E;AACA;AACA;AACA;AACA;AACA,IAAME,eAAe,GAAG,CACtB,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,CACT;AACD;;AAEA,IAAMC,gBAAgB,GAA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"}