{"version":3,"sources":["kendo.pdf.js"],"names":["f","define","$","normalizeText","text","String","replace","REPLACE_REGEX","SPACE","objectKey","object","key","parts","push","sort","join","hashKey","str","i","hash","length","charCodeAt","zeroSize","width","height","baseline","measureText","style","measureBox","TextMetrics","current","measure","LRUCache","DEFAULT_OPTIONS","defaultMeasureBox","window","kendo","util","Class","extend","init","size","this","_size","_length","_map","put","value","map","entry","_head","_tail","newer","older","get","baselineMarkerSize","document","createElement","cssText","options","_cache","styleKey","cacheKey","cachedResult","baselineMarker","textStr","box","_baselineMarker","cloneNode","textContent","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","marker","deepExtend","jQuery","amd","a1","a2","a3","pdf","supportsDeflate","pako","deflate","data","BinaryStream","eof","offset","readByte","writeByte","b","ensure","readShort","writeShort","w","readShort_","writeShort_","readLong","writeLong","readLong_","writeLong_","readFixed","writeFixed","Math","round","readFixed_","writeFixed_","read","len","times","readString","fromCharCode","apply","writeString","n","reader","ret","Array","write","slice","stream","HAS_TYPED_ARRAYS","Uint8Array","tmp","max","set","buffer","bytes","start","x","pos","skip","nbytes","toString","Error","saveExcursion","writeBase64","base64","atob","BASE64","decode","encode","ucs2decode","string","extra","output","counter","ucs2encode","array","atobUint8Array","idx","result","createUint8Array","base64ToUint8Array","hasOwnProperty$1","obj","Object","prototype","hasOwnProperty","call","sortedKeys","keys","a","parseFloat","nextSubsetTag","subsetTag","encodeUnit","codeUnit","encodeUTF16BE","input","c","lead","trail","makeOutput","out","num","arguments$1","arguments","undefined","PDFValue","beforeRender","render","isArray","renderArray","isDate","renderDate","isNaN","toFixed","indexOf","test","PDFDictionary","indentLevel","writeData","withIndent","indent","NL","pad","wrapObject","id","renderValue","renderFull","_offset","getPaperOptions","getOption","paperSize","margin","def","PAPER_SIZE","a4","toLowerCase","unitsToPoints","min","left","top","right","bottom","loadBinary","url","cont","error","console","log","m","req","browser","msie","exec","substr","XMLHttpRequest","open","responseType","onload","status","response","VBArray","responseBody","toArray","onerror","send","loadFont","font","FONT_CACHE","TTFFont","clearImageCache","IMAGE_CACHE","loadImage","_load","img","src","complete","_onload","_onerror","_trycanvas","canvas","ctx","imgdata","hasAlpha","rgb","alpha","rawbytes","getContext","drawImage","getImageData","ex","bloburl","URL","revokeObjectURL","keepPNG","PDFRawImage","toDataURL","jpegQuality","PDFJpegImage","svg","upscale","blob","type","FileReader","readAsArrayBuffer","xhr","Image","crossOrigin","createObjectURL","manyLoader","loadOne","urls","callback","next","ch","zeropad","Date","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","mm2pt","mm","cm2pt","cm","in2pt","inch","in","_","name","PDFName_cache","PDFName","makeHash","cacheColorGradientFunction","r1","g1","b1","r2","g2","b2","func","GRAD_COL_FUNCTIONS","attach","FunctionType","Domain","Range","N","C0","C1","cacheOpacityGradientFunction","GRAD_OPC_FUNCTIONS","makeGradientFunctions","stops","assemble","funcs","Functions","Bounds","offsets","Encode","prev","cur","prevColor","curColor","opacities","colors","color","r","g","pop","cacheColorGradient","isRadial","coords","shading","concat","forEach","GRAD_COL","Type","ShadingType","ColorSpace","Coords","Function","Extend","_resourceName","RESOURCE_COUNTER","cacheOpacityGradient","opacity","GRAD_OPC","AIS","CA","ca","SMask","S","G","PDFStream","Subtype","FormType","BBox","Group","CS","I","Resources","ExtGState","a0","Shading","s0","cacheGradient","gradient","y","end","userSpace","unquote","parseFontDef","fontdef","fontSize","rx","parseInt","italic","variant","bold","lineHeight","fontFamily","split","getFontURL","mkFamily","FONT_MAPPINGS","fontAlias","alias","defineFont","mmul","c1","d1","e1","f1","c2","d2","e2","f2","isIdentityMatrix","render$1","group","defval","doIt","drawPage","addMargin","origin","page","optimize","bbox","root","getSize","getOrigin","drawing","transform","kendoGeometry","Matrix","append","addPage","landscape","drawElement","count","PDFDocument","producer","title","author","subject","keywords","creator","autoPrint","multiPage","children","fonts","images","imgDPI","traverse","element","dispatch","ceil","Text","loadFonts","loadImages","toBlob","Blob","saveAs$1","filename","proxy","supportBrowser","safari","saveAs","dataURI","fileName","dataURL","proxyURL","handlers","handler","nodeType","_pdfDebug","comment","save","setOpacity","setStrokeOptions","setFillOptions","matrix","d","e","setClipping","Path","drawPath","MultiPath","drawMultiPath","Circle","drawCircle","Arc","drawArc","drawText","drawImage$1","drawGroup","Rect","drawRect","restore","dashType","lineCap","lineJoin","stroke","parseColor$1","setStrokeColor","setStrokeOpacity","setLineWidth","setDashPattern","DASH_PATTERNS","setLineCap","LINE_CAP","setLineJoin","LINE_JOIN","fill","Gradient","setFillColor","setFillOpacity","clip","_drawPath","shouldDraw","thing","maybeGradient","tl","clipStroke","RadialGradient","center","radius","elements","stop","unshift","rawBBox","topLeft","maybeFillStroke","fillStroke","nop","maybeDrawRect","path","isRect","segments","closed","controlIn","anchor","rect","seg","prevOut","controlOut","bezier","lineTo","moveTo","close","paths","geometry","circle","points","curvePoints","mode","_position","TEXT_RENDERING_MODE$1","fillAndStroke","beginText","setFont","setTextRenderingMode","showText","content","_pdfRect","endText","_pdfLink","addLink","sz","parseColor","toRGB","change","newShape","changed","visible","shape","optArray","el","opt","withClipping","saveclipbox","clipbox","savematrix","multiplyCopy","intersect","inClipbox","currentBox","union","unit","exportPDF","promise","createPromise","_ignoreMargin","resolve","exportPDFToBlob","support","extendStatic","kendoPdf","Directory","Table","HeadTable","LocaTable","HheaTable","MaxpTable","HmtxTable","GlyfTable","NameTable","PostTable","CmapTable","OS2Table","Subfont","BOM","PDFString","PDFHexString","PDFCatalog","PDFPageTree","SOF_CODES","PDFStandardFont","PDFFont","PDFToUnicodeCmap","PDFPage","TEXT_RENDERING_MODE","version","keyStr","enc1","enc2","enc3","enc4","chr1","chr2","chr3","charAt","tables","raw","scalerType","tableCount","searchRange","entrySelector","rangeShift","tag","checksum","readTable","Ctor","table","directoryLength","headOffset","tableData","sum","adjustment","this$1","maxpow2","pow","floor","LN2","file","definition","rawData","parse","create","constructor","fn","revision","checkSumAdjustment","magicNumber","flags","unitsPerEm","created","modified","xMin","yMin","xMax","yMax","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","format","head","offsetOf","lengthOf","needsLongFormat","ascent","descent","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numOfLongHorMetrics","ids","numGlyphs","maxPoints","maxContours","maxComponentPoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","glyphIds","dir","hhea","lsbCount","metrics","advance","lsb","maxp","leftSideBearings","forGlyph","ARG_1_AND_2_ARE_WORDS","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","CompoundGlyph","prototypeAccessors$1","SimpleGlyph","prototypeAccessors","compound","defineProperties","idOffsets","old2new","anonymous","cache","glyphFor","loca","numberOfContours","glyph","glyphs","oldIds","NameEntry","platformID","platformSpecificID","languageID","nameID","stringOffset","nameRecords","strings","rec","postscriptEntry","postscriptName","psName","strTable","list","j","strCount","POSTSCRIPT_GLYPHS","numberOfGlyphs","limit","italicAngle","underlinePosition","underlineThickness","isFixedPitch","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","names","code","index","mapping","indexes","post","renderCharmap","ncid2ogid","ogid2ngid","new_gid","charcode","gid","delta","segCount","segCountX2","deltas","rangeOffsets","startCode","endCode","startGlyph","codes","startCodes","endCodes","last","diff","CmapEntry","codeMap","self","idDelta","idRangeOffset","glyphId","ngroups","endCharCode","glyphCode","language","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","familyClass","panose","charRange","vendorID","selection","firstCharIndex","lastCharIndex","winAscent","winDescent","codePageRange","xHeight","capHeight","defaultChar","breakChar","maxContext","subset","unicodes","0","ngid2ogid","firstChar","nextGid","use","old_gid","reduce","cmap","encodeText","glyphsFor","glyf","new_gid_ids","old_gid_ids","lastChar","hmtx","OS/2","os2","directory","cidToGidMap","cid","numFonts","contents","scale","widthOfGlyph","makeSubset","a5","a6","a7","a8","a9","a10","b0","b3","b4","b5","b6","b7","b8","b9","b10","c0","c3","c4","c5","c6","c7","c8","c9","c10","executive","folio","legal","letter","tabloid","Times-Roman","Times-Bold","Times-Italic","Times-BoldItalic","Helvetica","Helvetica-Bold","Helvetica-Oblique","Helvetica-BoldOblique","Courier","Courier-Bold","Courier-Oblique","Courier-BoldOblique","Symbol","ZapfDingbats","catalog","pageTree","nameTree","info","objcount","objects","pages","FONTS","IMAGES","JavaScript","Names","JS","props","setPages","Producer","Title","Author","Subject","Keywords","Creator","CreationDate","paperOptions","contentWidth","contentHeight","Contents","Parent","MediaBox","_content","translate","xrefOffset","Size","Root","Info","getFont","getImage","asStream","getOpacityGS","forStroke","gs","_opacityGSCache","dict","utf16be","txt","escape","empty","compress","Filter","Length","pagesObj","Pages","Kids","Count","pageObj","colorSpace","bitsPerComponent","soi","ff","Width","Height","BitsPerComponent","Decode","mask","BaseFont","Encoding","_pdf","_font","_sub","stemV","isSerif","isScript","getTextWidth","descendant","unimap","unimapStream","sub","fontStream","Length1","descriptor","FontName","FontBBox","Flags","StemV","ItalicAngle","Ascent","Descent","CapHeight","XHeight","FontFile2","charWidths","loop","chunk","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","FirstChar","LastChar","DW","W","CIDToGIDMap","_makeCidToGidMap","DescendantFonts","ToUnicode","unicode","_rcount","_textMode","_fontResources","_gsResources","_xResources","_patResources","_shResources","_opacity","_matrix","_annotations","_fontSize","_contextStack","ProcSet","Font","XObject","Pattern","Annots","_out","dx","dy","sx","sy","rotate","angle","cos","sin","_requireTextMode","_requireFont","setTextLeading","requestedWidth","outputWidth","showTextNL","uri","ll","_toPage","ur","Border","A","URI","sname","oname","dashArray","dashPhase","setMitterLimit","mitterLimit","_context","x1","y1","x2","y2","x3","y3","bezier1","bezier2","h","ellipse","ry","_X","v","_Y","k","closeStroke","line","val","p","serif","serif|bold","serif|italic","serif|bold|italic","sans-serif","sans-serif|bold","sans-serif|italic","sans-serif|bold|italic","monospace","monospace|bold","monospace|italic","monospace|bold|italic","zapfdingbats","zapfdingbats|bold","zapfdingbats|italic","zapfdingbats|bold|italic","invisible","fillAndClip","strokeAndClip","fillStrokeClip","dash","dashDot","dot","longDash","longDashDot","longDashDotDot","solid","butt","square","miter","bevel","Document","PDFMixin","proto","events","saveAsPDF","_drawPDF","_drawPDFShadow","allPages","progress","Deferred","args","trigger","then","done","forceProxy","proxyTarget","fail","err","reject","drawDOM","wrapper","pageNumber","totalPages","notify","settings","drawOptions","shadow","defer","css","overflow","before","clone","setTimeout","always","remove"],"mappings":"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","file":"kendo.pdf.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('util/text-metrics', ['kendo.core'], f);\n}(function () {\n (function ($) {\n window.kendo.util = window.kendo.util || {};\n var LRUCache = kendo.Class.extend({\n init: function (size) {\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n put: function (key, value) {\n var map = this._map;\n var entry = {\n key: key,\n value: value\n };\n map[key] = entry;\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n },\n get: function (key) {\n var entry = this._map[key];\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = this._tail;\n entry.newer = null;\n this._tail.newer = entry;\n this._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\n var SPACE = ' ';\n function normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n }\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n return parts.sort().join('');\n }\n function hashKey(str) {\n var hash = 2166136261;\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n return hash >>> 0;\n }\n function zeroSize() {\n return {\n width: 0,\n height: 0,\n baseline: 0\n };\n }\n var DEFAULT_OPTIONS = { baselineMarkerSize: 1 };\n var defaultMeasureBox;\n if (typeof document !== 'undefined') {\n defaultMeasureBox = document.createElement('div');\n defaultMeasureBox.style.cssText = 'position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;' + 'padding: 0 !important; margin: 0 !important; border: 0 !important;' + 'line-height: normal !important; visibility: hidden !important; white-space: pre!important;';\n }\n var TextMetrics = kendo.Class.extend({\n init: function (options) {\n this._cache = new LRUCache(1000);\n this.options = $.extend({}, DEFAULT_OPTIONS, options);\n },\n measure: function (text, style, options) {\n if (options === void 0) {\n options = {};\n }\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n if (cachedResult) {\n return cachedResult;\n }\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n for (var key in style) {\n var value = style[key];\n if (typeof value !== 'undefined') {\n measureBox.style[key] = value;\n }\n }\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n measureBox.parentNode.removeChild(measureBox);\n return size;\n },\n _baselineMarker: function () {\n var marker = document.createElement('div');\n marker.style.cssText = 'display: inline-block; vertical-align: baseline;width: ' + this.options.baselineMarkerSize + 'px; height: ' + this.options.baselineMarkerSize + 'px;overflow: hidden;';\n return marker;\n }\n });\n TextMetrics.current = new TextMetrics();\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n kendo.deepExtend(kendo.util, {\n LRUCache: LRUCache,\n TextMetrics: TextMetrics,\n measureText: measureText,\n objectKey: objectKey,\n hashKey: hashKey,\n normalizeText: normalizeText\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('pdf/pako', ['kendo.core'], f);\n}(function () {\n (function () {\n kendo.pdf = kendo.pdf || {};\n kendo.pdf.supportsDeflate = function () {\n return window.pako && typeof window.pako.deflate == 'function';\n };\n kendo.pdf.deflate = function (data) {\n return window.pako.deflate(data);\n };\n }());\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('pdf/core', [\n 'pdf/pako',\n 'kendo.core',\n 'kendo.color',\n 'kendo.drawing'\n ], f);\n}(function () {\n (function ($) {\n window.kendo.pdf = window.kendo.pdf || {};\n var support = kendo.support;\n var supportBrowser = support.browser;\n var drawing = kendo.drawing;\n var util = drawing.util;\n var extendStatic = util.extendStatic;\n var kendoPdf = kendo.pdf;\n var kendoGeometry = kendo.geometry;\n var HAS_TYPED_ARRAYS = typeof Uint8Array !== 'undefined' && kendo.support.browser && (!kendo.support.browser.msie || kendo.support.browser.version > 9);\n var BASE64 = function () {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n return {\n decode: function (str) {\n var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, ''), i = 0, n = input.length, output = [];\n while (i < n) {\n var enc1 = keyStr.indexOf(input.charAt(i++));\n var enc2 = keyStr.indexOf(input.charAt(i++));\n var enc3 = keyStr.indexOf(input.charAt(i++));\n var enc4 = keyStr.indexOf(input.charAt(i++));\n var chr1 = enc1 << 2 | enc2 >>> 4;\n var chr2 = (enc2 & 15) << 4 | enc3 >>> 2;\n var chr3 = (enc3 & 3) << 6 | enc4;\n output.push(chr1);\n if (enc3 != 64) {\n output.push(chr2);\n }\n if (enc4 != 64) {\n output.push(chr3);\n }\n }\n return output;\n },\n encode: function (bytes) {\n var i = 0, n = bytes.length;\n var output = '';\n while (i < n) {\n var chr1 = bytes[i++];\n var chr2 = bytes[i++];\n var chr3 = bytes[i++];\n var enc1 = chr1 >>> 2;\n var enc2 = (chr1 & 3) << 4 | chr2 >>> 4;\n var enc3 = (chr2 & 15) << 2 | chr3 >>> 6;\n var enc4 = chr3 & 63;\n if (i - n == 2) {\n enc3 = enc4 = 64;\n } else if (i - n == 1) {\n enc4 = 64;\n }\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n }\n return output;\n }\n };\n }();\n function BinaryStream(data) {\n var offset = 0, length = 0;\n if (data == null) {\n data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n } else {\n length = data.length;\n }\n var ensure = HAS_TYPED_ARRAYS ? function (len) {\n if (len >= data.length) {\n var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n tmp.set(data, 0);\n data = tmp;\n }\n } : function () {\n };\n var get = HAS_TYPED_ARRAYS ? function () {\n return new Uint8Array(data.buffer, 0, length);\n } : function () {\n return data;\n };\n var write = HAS_TYPED_ARRAYS ? function (bytes) {\n if (typeof bytes == 'string') {\n return writeString(bytes);\n }\n var len = bytes.length;\n ensure(offset + len);\n data.set(bytes, offset);\n offset += len;\n if (offset > length) {\n length = offset;\n }\n } : function (bytes) {\n if (typeof bytes == 'string') {\n return writeString(bytes);\n }\n for (var i = 0; i < bytes.length; ++i) {\n writeByte(bytes[i]);\n }\n };\n var slice = HAS_TYPED_ARRAYS ? function (start, length) {\n if (data.buffer.slice) {\n return new Uint8Array(data.buffer.slice(start, start + length));\n } else {\n var x = new Uint8Array(length);\n x.set(new Uint8Array(data.buffer, start, length));\n return x;\n }\n } : function (start, length) {\n return data.slice(start, start + length);\n };\n function eof() {\n return offset >= length;\n }\n function readByte() {\n return offset < length ? data[offset++] : 0;\n }\n function writeByte(b) {\n ensure(offset);\n data[offset++] = b & 255;\n if (offset > length) {\n length = offset;\n }\n }\n function readShort() {\n return readByte() << 8 | readByte();\n }\n function writeShort(w) {\n writeByte(w >> 8);\n writeByte(w);\n }\n function readShort_() {\n var w = readShort();\n return w >= 32768 ? w - 65536 : w;\n }\n function writeShort_(w) {\n writeShort(w < 0 ? w + 65536 : w);\n }\n function readLong() {\n return readShort() * 65536 + readShort();\n }\n function writeLong(w) {\n writeShort(w >>> 16 & 65535);\n writeShort(w & 65535);\n }\n function readLong_() {\n var w = readLong();\n return w >= 2147483648 ? w - 4294967296 : w;\n }\n function writeLong_(w) {\n writeLong(w < 0 ? w + 4294967296 : w);\n }\n function readFixed() {\n return readLong() / 65536;\n }\n function writeFixed(f) {\n writeLong(Math.round(f * 65536));\n }\n function readFixed_() {\n return readLong_() / 65536;\n }\n function writeFixed_(f) {\n writeLong_(Math.round(f * 65536));\n }\n function read(len) {\n return times(len, readByte);\n }\n function readString(len) {\n return String.fromCharCode.apply(String, read(len));\n }\n function writeString(str) {\n for (var i = 0; i < str.length; ++i) {\n writeByte(str.charCodeAt(i));\n }\n }\n function times(n, reader) {\n for (var ret = new Array(n), i = 0; i < n; ++i) {\n ret[i] = reader();\n }\n return ret;\n }\n var stream = {\n eof: eof,\n readByte: readByte,\n writeByte: writeByte,\n readShort: readShort,\n writeShort: writeShort,\n readLong: readLong,\n writeLong: writeLong,\n readFixed: readFixed,\n writeFixed: writeFixed,\n readShort_: readShort_,\n writeShort_: writeShort_,\n readLong_: readLong_,\n writeLong_: writeLong_,\n readFixed_: readFixed_,\n writeFixed_: writeFixed_,\n read: read,\n write: write,\n readString: readString,\n writeString: writeString,\n times: times,\n get: get,\n slice: slice,\n offset: function (pos) {\n if (pos != null) {\n offset = pos;\n return stream;\n }\n return offset;\n },\n skip: function (nbytes) {\n offset += nbytes;\n },\n toString: function () {\n throw new Error('FIX CALLER. BinaryStream is no longer convertible to string!');\n },\n length: function () {\n return length;\n },\n saveExcursion: function (f) {\n var pos = offset;\n try {\n return f();\n } finally {\n offset = pos;\n }\n },\n writeBase64: function (base64) {\n if (window.atob) {\n writeString(window.atob(base64));\n } else {\n write(BASE64.decode(base64));\n }\n },\n base64: function () {\n return BASE64.encode(get());\n }\n };\n return stream;\n }\n function ucs2decode(string) {\n var output = [], counter = 0, length = string.length, value, extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 55296 && value <= 56319 && counter < length) {\n extra = string.charCodeAt(counter++);\n if ((extra & 64512) == 56320) {\n output.push(((value & 1023) << 10) + (extra & 1023) + 65536);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n }\n function ucs2encode(array) {\n return array.map(function (value) {\n var output = '';\n if (value > 65535) {\n value -= 65536;\n output += String.fromCharCode(value >>> 10 & 1023 | 55296);\n value = 56320 | value & 1023;\n }\n output += String.fromCharCode(value);\n return output;\n }).join('');\n }\n function atobUint8Array(base64) {\n var data = window.atob(base64);\n var result = new Uint8Array(data.length);\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data.charCodeAt(idx);\n }\n return result;\n }\n function createUint8Array(data) {\n var result = new Uint8Array(data.length);\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data[idx];\n }\n return result;\n }\n function base64ToUint8Array(base64) {\n if (window.atob) {\n return atobUint8Array(base64);\n }\n return createUint8Array(BASE64.decode(base64));\n }\n function hasOwnProperty$1(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n function sortedKeys(obj) {\n return Object.keys(obj).sort(function (a, b) {\n return a - b;\n }).map(parseFloat);\n }\n var Directory = function Directory(data) {\n this.raw = data;\n this.scalerType = data.readLong();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n var tables = this.tables = {};\n for (var i = 0; i < this.tableCount; ++i) {\n var entry = {\n tag: data.readString(4),\n checksum: data.readLong(),\n offset: data.readLong(),\n length: data.readLong()\n };\n tables[entry.tag] = entry;\n }\n };\n Directory.prototype.readTable = function readTable(name, Ctor) {\n var def = this.tables[name];\n if (!def) {\n throw new Error('Table ' + name + ' not found in directory');\n }\n return this[name] = def.table = new Ctor(this, def);\n };\n Directory.prototype.render = function render(tables) {\n var this$1 = this;\n var tableCount = Object.keys(tables).length;\n var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n var searchRange = maxpow2 * 16;\n var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n var rangeShift = tableCount * 16 - searchRange;\n var out = BinaryStream();\n out.writeLong(this.scalerType);\n out.writeShort(tableCount);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n var directoryLength = tableCount * 16;\n var offset = out.offset() + directoryLength;\n var headOffset = null;\n var tableData = BinaryStream();\n for (var tag in tables) {\n if (hasOwnProperty$1(tables, tag)) {\n var table = tables[tag];\n out.writeString(tag);\n out.writeLong(this$1.checksum(table));\n out.writeLong(offset);\n out.writeLong(table.length);\n tableData.write(table);\n if (tag == 'head') {\n headOffset = offset;\n }\n offset += table.length;\n while (offset % 4) {\n tableData.writeByte(0);\n offset++;\n }\n }\n }\n out.write(tableData.get());\n var sum = this.checksum(out.get());\n var adjustment = 2981146554 - sum;\n out.offset(headOffset + 8);\n out.writeLong(adjustment);\n return out.get();\n };\n Directory.prototype.checksum = function checksum(data) {\n data = BinaryStream(data);\n var sum = 0;\n while (!data.eof()) {\n sum += data.readLong();\n }\n return sum & 4294967295;\n };\n var Table = function Table(file, def) {\n this.definition = def;\n this.length = def.length;\n this.offset = def.offset;\n this.file = file;\n this.rawData = file.raw;\n this.parse(file.raw);\n };\n Table.prototype.raw = function raw() {\n return this.rawData.slice(this.offset, this.length);\n };\n Table.prototype.parse = function parse() {\n };\n var HeadTable = function (Table) {\n function HeadTable() {\n Table.apply(this, arguments);\n }\n extendStatic(HeadTable, Table);\n HeadTable.prototype = Object.create(Table && Table.prototype);\n HeadTable.prototype.constructor = HeadTable;\n HeadTable.fn = HeadTable.prototype;\n HeadTable.fn.init = HeadTable.fn.constructor;\n HeadTable.prototype.parse = function parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.revision = data.readLong();\n this.checkSumAdjustment = data.readLong();\n this.magicNumber = data.readLong();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.read(8);\n this.modified = data.read(8);\n this.xMin = data.readShort_();\n this.yMin = data.readShort_();\n this.xMax = data.readShort_();\n this.yMax = data.readShort_();\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort_();\n this.indexToLocFormat = data.readShort_();\n this.glyphDataFormat = data.readShort_();\n };\n HeadTable.prototype.render = function render(indexToLocFormat) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeLong(this.revision);\n out.writeLong(0);\n out.writeLong(this.magicNumber);\n out.writeShort(this.flags);\n out.writeShort(this.unitsPerEm);\n out.write(this.created);\n out.write(this.modified);\n out.writeShort_(this.xMin);\n out.writeShort_(this.yMin);\n out.writeShort_(this.xMax);\n out.writeShort_(this.yMax);\n out.writeShort(this.macStyle);\n out.writeShort(this.lowestRecPPEM);\n out.writeShort_(this.fontDirectionHint);\n out.writeShort_(indexToLocFormat);\n out.writeShort_(this.glyphDataFormat);\n return out.get();\n };\n return HeadTable;\n }(Table);\n var LocaTable = function (Table) {\n function LocaTable() {\n Table.apply(this, arguments);\n }\n extendStatic(LocaTable, Table);\n LocaTable.prototype = Object.create(Table && Table.prototype);\n LocaTable.prototype.constructor = LocaTable;\n LocaTable.fn = LocaTable.prototype;\n LocaTable.fn.init = LocaTable.fn.constructor;\n LocaTable.prototype.parse = function parse(data) {\n data.offset(this.offset);\n var format = this.file.head.indexToLocFormat;\n if (format === 0) {\n this.offsets = data.times(this.length / 2, function () {\n return 2 * data.readShort();\n });\n } else {\n this.offsets = data.times(this.length / 4, data.readLong);\n }\n };\n LocaTable.prototype.offsetOf = function offsetOf(id) {\n return this.offsets[id];\n };\n LocaTable.prototype.lengthOf = function lengthOf(id) {\n return this.offsets[id + 1] - this.offsets[id];\n };\n LocaTable.prototype.render = function render(offsets) {\n var out = BinaryStream();\n var needsLongFormat = offsets[offsets.length - 1] > 65535;\n for (var i = 0; i < offsets.length; ++i) {\n if (needsLongFormat) {\n out.writeLong(offsets[i]);\n } else {\n out.writeShort(offsets[i] / 2);\n }\n }\n return {\n format: needsLongFormat ? 1 : 0,\n table: out.get()\n };\n };\n return LocaTable;\n }(Table);\n var HheaTable = function (Table) {\n function HheaTable() {\n Table.apply(this, arguments);\n }\n extendStatic(HheaTable, Table);\n HheaTable.prototype = Object.create(Table && Table.prototype);\n HheaTable.prototype.constructor = HheaTable;\n HheaTable.fn = HheaTable.prototype;\n HheaTable.fn.init = HheaTable.fn.constructor;\n HheaTable.prototype.parse = function parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort_();\n this.minRightSideBearing = data.readShort_();\n this.xMaxExtent = data.readShort_();\n this.caretSlopeRise = data.readShort_();\n this.caretSlopeRun = data.readShort_();\n this.caretOffset = data.readShort_();\n data.skip(4 * 2);\n this.metricDataFormat = data.readShort_();\n this.numOfLongHorMetrics = data.readShort();\n };\n HheaTable.prototype.render = function render(ids) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort_(this.ascent);\n out.writeShort_(this.descent);\n out.writeShort_(this.lineGap);\n out.writeShort(this.advanceWidthMax);\n out.writeShort_(this.minLeftSideBearing);\n out.writeShort_(this.minRightSideBearing);\n out.writeShort_(this.xMaxExtent);\n out.writeShort_(this.caretSlopeRise);\n out.writeShort_(this.caretSlopeRun);\n out.writeShort_(this.caretOffset);\n out.write([\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]);\n out.writeShort_(this.metricDataFormat);\n out.writeShort(ids.length);\n return out.get();\n };\n return HheaTable;\n }(Table);\n var MaxpTable = function (Table) {\n function MaxpTable() {\n Table.apply(this, arguments);\n }\n extendStatic(MaxpTable, Table);\n MaxpTable.prototype = Object.create(Table && Table.prototype);\n MaxpTable.prototype.constructor = MaxpTable;\n MaxpTable.fn = MaxpTable.prototype;\n MaxpTable.fn.init = MaxpTable.fn.constructor;\n MaxpTable.prototype.parse = function parse(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.numGlyphs = data.readShort();\n this.maxPoints = data.readShort();\n this.maxContours = data.readShort();\n this.maxComponentPoints = data.readShort();\n this.maxComponentContours = data.readShort();\n this.maxZones = data.readShort();\n this.maxTwilightPoints = data.readShort();\n this.maxStorage = data.readShort();\n this.maxFunctionDefs = data.readShort();\n this.maxInstructionDefs = data.readShort();\n this.maxStackElements = data.readShort();\n this.maxSizeOfInstructions = data.readShort();\n this.maxComponentElements = data.readShort();\n this.maxComponentDepth = data.readShort();\n };\n MaxpTable.prototype.render = function render(glyphIds) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort(glyphIds.length);\n out.writeShort(this.maxPoints);\n out.writeShort(this.maxContours);\n out.writeShort(this.maxComponentPoints);\n out.writeShort(this.maxComponentContours);\n out.writeShort(this.maxZones);\n out.writeShort(this.maxTwilightPoints);\n out.writeShort(this.maxStorage);\n out.writeShort(this.maxFunctionDefs);\n out.writeShort(this.maxInstructionDefs);\n out.writeShort(this.maxStackElements);\n out.writeShort(this.maxSizeOfInstructions);\n out.writeShort(this.maxComponentElements);\n out.writeShort(this.maxComponentDepth);\n return out.get();\n };\n return MaxpTable;\n }(Table);\n var HmtxTable = function (Table) {\n function HmtxTable() {\n Table.apply(this, arguments);\n }\n extendStatic(HmtxTable, Table);\n HmtxTable.prototype = Object.create(Table && Table.prototype);\n HmtxTable.prototype.constructor = HmtxTable;\n HmtxTable.fn = HmtxTable.prototype;\n HmtxTable.fn.init = HmtxTable.fn.constructor;\n HmtxTable.prototype.parse = function parse(data) {\n data.offset(this.offset);\n var dir = this.file, hhea = dir.hhea;\n this.metrics = data.times(hhea.numOfLongHorMetrics, function () {\n return {\n advance: data.readShort(),\n lsb: data.readShort_()\n };\n });\n var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n this.leftSideBearings = data.times(lsbCount, data.readShort_);\n };\n HmtxTable.prototype.forGlyph = function forGlyph(id) {\n var metrics = this.metrics;\n var n = metrics.length;\n if (id < n) {\n return metrics[id];\n }\n return {\n advance: metrics[n - 1].advance,\n lsb: this.leftSideBearings[id - n]\n };\n };\n HmtxTable.prototype.render = function render(glyphIds) {\n var this$1 = this;\n var out = BinaryStream();\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this$1.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n return out.get();\n };\n return HmtxTable;\n }(Table);\n var GlyfTable = function () {\n var SimpleGlyph = function SimpleGlyph(raw) {\n this.raw = raw;\n };\n var prototypeAccessors = { compound: {} };\n prototypeAccessors.compound.get = function () {\n return false;\n };\n SimpleGlyph.prototype.render = function render() {\n return this.raw.get();\n };\n Object.defineProperties(SimpleGlyph.prototype, prototypeAccessors);\n var ARG_1_AND_2_ARE_WORDS = 1;\n var WE_HAVE_A_SCALE = 8;\n var MORE_COMPONENTS = 32;\n var WE_HAVE_AN_X_AND_Y_SCALE = 64;\n var WE_HAVE_A_TWO_BY_TWO = 128;\n var CompoundGlyph = function CompoundGlyph(data) {\n this.raw = data;\n var ids = this.glyphIds = [];\n var offsets = this.idOffsets = [];\n while (true) {\n var flags = data.readShort();\n offsets.push(data.offset());\n ids.push(data.readShort());\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.skip(8);\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.skip(4);\n } else if (flags & WE_HAVE_A_SCALE) {\n data.skip(2);\n }\n }\n };\n var prototypeAccessors$1 = { compound: {} };\n prototypeAccessors$1.compound.get = function () {\n return true;\n };\n CompoundGlyph.prototype.render = function render(old2new) {\n var this$1 = this;\n var out = BinaryStream(this.raw.get());\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this$1.glyphIds[i];\n out.offset(this$1.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n return out.get();\n };\n Object.defineProperties(CompoundGlyph.prototype, prototypeAccessors$1);\n return function (Table) {\n function anonymous() {\n Table.apply(this, arguments);\n }\n extendStatic(anonymous, Table);\n anonymous.prototype = Object.create(Table && Table.prototype);\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n anonymous.prototype.parse = function parse() {\n this.cache = {};\n };\n anonymous.prototype.glyphFor = function glyphFor(id) {\n var cache = this.cache;\n if (hasOwnProperty$1(cache, id)) {\n return cache[id];\n }\n var loca = this.file.loca;\n var length = loca.lengthOf(id);\n if (length === 0) {\n return cache[id] = null;\n }\n var data = this.rawData;\n var offset = this.offset + loca.offsetOf(id);\n var raw = BinaryStream(data.slice(offset, length));\n var numberOfContours = raw.readShort_();\n var xMin = raw.readShort_();\n var yMin = raw.readShort_();\n var xMax = raw.readShort_();\n var yMax = raw.readShort_();\n var glyph = cache[id] = numberOfContours < 0 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n glyph.numberOfContours = numberOfContours;\n glyph.xMin = xMin;\n glyph.yMin = yMin;\n glyph.xMax = xMax;\n glyph.yMax = yMax;\n return glyph;\n };\n anonymous.prototype.render = function render(glyphs, oldIds, old2new) {\n var out = BinaryStream(), offsets = [];\n for (var i = 0; i < oldIds.length; ++i) {\n var id = oldIds[i];\n var glyph = glyphs[id];\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n };\n return anonymous;\n }(Table);\n }();\n var NameTable = function () {\n var NameEntry = function NameEntry(text, entry) {\n this.text = text;\n this.length = text.length;\n this.platformID = entry.platformID;\n this.platformSpecificID = entry.platformSpecificID;\n this.languageID = entry.languageID;\n this.nameID = entry.nameID;\n };\n return function (Table) {\n function anonymous() {\n Table.apply(this, arguments);\n }\n extendStatic(anonymous, Table);\n anonymous.prototype = Object.create(Table && Table.prototype);\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n anonymous.prototype.parse = function parse(data) {\n data.offset(this.offset);\n data.readShort();\n var count = data.readShort();\n var stringOffset = this.offset + data.readShort();\n var nameRecords = data.times(count, function () {\n return {\n platformID: data.readShort(),\n platformSpecificID: data.readShort(),\n languageID: data.readShort(),\n nameID: data.readShort(),\n length: data.readShort(),\n offset: data.readShort() + stringOffset\n };\n });\n var strings = this.strings = {};\n for (var i = 0; i < nameRecords.length; ++i) {\n var rec = nameRecords[i];\n data.offset(rec.offset);\n var text = data.readString(rec.length);\n if (!strings[rec.nameID]) {\n strings[rec.nameID] = [];\n }\n strings[rec.nameID].push(new NameEntry(text, rec));\n }\n this.postscriptEntry = strings[6][0];\n this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, '');\n };\n anonymous.prototype.render = function render(psName) {\n var this$1 = this;\n var strings = this.strings;\n var strCount = 0;\n for (var i in strings) {\n if (hasOwnProperty$1(strings, i)) {\n strCount += strings[i].length;\n }\n }\n var out = BinaryStream();\n var strTable = BinaryStream();\n out.writeShort(0);\n out.writeShort(strCount);\n out.writeShort(6 + 12 * strCount);\n for (i in strings) {\n if (hasOwnProperty$1(strings, i)) {\n var list = i == 6 ? [new NameEntry(psName, this$1.postscriptEntry)] : strings[i];\n for (var j = 0; j < list.length; ++j) {\n var str = list[j];\n out.writeShort(str.platformID);\n out.writeShort(str.platformSpecificID);\n out.writeShort(str.languageID);\n out.writeShort(str.nameID);\n out.writeShort(str.length);\n out.writeShort(strTable.offset());\n strTable.writeString(str.text);\n }\n }\n }\n out.write(strTable.get());\n return out.get();\n };\n return anonymous;\n }(Table);\n }();\n var PostTable = function () {\n var POSTSCRIPT_GLYPHS = '.notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat'.split(/\\s+/g);\n return function (Table) {\n function anonymous() {\n Table.apply(this, arguments);\n }\n extendStatic(anonymous, Table);\n anonymous.prototype = Object.create(Table && Table.prototype);\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n anonymous.prototype.parse = function parse(data) {\n var this$1 = this;\n data.offset(this.offset);\n this.format = data.readLong();\n this.italicAngle = data.readFixed_();\n this.underlinePosition = data.readShort_();\n this.underlineThickness = data.readShort_();\n this.isFixedPitch = data.readLong();\n this.minMemType42 = data.readLong();\n this.maxMemType42 = data.readLong();\n this.minMemType1 = data.readLong();\n this.maxMemType1 = data.readLong();\n var numberOfGlyphs;\n switch (this.format) {\n case 65536:\n case 196608:\n break;\n case 131072:\n numberOfGlyphs = data.readShort();\n this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n this.names = [];\n var limit = this.offset + this.length;\n while (data.offset() < limit) {\n this$1.names.push(data.readString(data.readByte()));\n }\n break;\n case 151552:\n numberOfGlyphs = data.readShort();\n this.offsets = data.read(numberOfGlyphs);\n break;\n case 262144:\n this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n break;\n }\n };\n anonymous.prototype.glyphFor = function glyphFor(code) {\n switch (this.format) {\n case 65536:\n return POSTSCRIPT_GLYPHS[code] || '.notdef';\n case 131072:\n var index = this.glyphNameIndex[code];\n if (index < POSTSCRIPT_GLYPHS.length) {\n return POSTSCRIPT_GLYPHS[index];\n }\n return this.names[index - POSTSCRIPT_GLYPHS.length] || '.notdef';\n case 151552:\n case 196608:\n return '.notdef';\n case 262144:\n return this.map[code] || 65535;\n }\n };\n anonymous.prototype.render = function render(mapping) {\n var this$1 = this;\n if (this.format == 196608) {\n return this.raw();\n }\n var out = BinaryStream(this.rawData.slice(this.offset, 32));\n out.writeLong(131072);\n out.offset(32);\n var indexes = [];\n var strings = [];\n for (var i = 0; i < mapping.length; ++i) {\n var id = mapping[i];\n var post = this$1.glyphFor(id);\n var index = POSTSCRIPT_GLYPHS.indexOf(post);\n if (index >= 0) {\n indexes.push(index);\n } else {\n indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n strings.push(post);\n }\n }\n out.writeShort(mapping.length);\n for (i = 0; i < indexes.length; ++i) {\n out.writeShort(indexes[i]);\n }\n for (i = 0; i < strings.length; ++i) {\n out.writeByte(strings[i].length);\n out.writeString(strings[i]);\n }\n return out.get();\n };\n return anonymous;\n }(Table);\n }();\n var CmapTable = function () {\n var CmapEntry = function CmapEntry(data, offset, codeMap) {\n var self = this;\n self.platformID = data.readShort();\n self.platformSpecificID = data.readShort();\n self.offset = offset + data.readLong();\n data.saveExcursion(function () {\n var code;\n data.offset(self.offset);\n self.format = data.readShort();\n switch (self.format) {\n case 0:\n self.length = data.readShort();\n self.language = data.readShort();\n for (var i = 0; i < 256; ++i) {\n codeMap[i] = data.readByte();\n }\n break;\n case 4:\n self.length = data.readShort();\n self.language = data.readShort();\n var segCount = data.readShort() / 2;\n data.skip(6);\n var endCode = data.times(segCount, data.readShort);\n data.skip(2);\n var startCode = data.times(segCount, data.readShort);\n var idDelta = data.times(segCount, data.readShort_);\n var idRangeOffset = data.times(segCount, data.readShort);\n var count = (self.length + self.offset - data.offset()) / 2;\n var glyphIds = data.times(count, data.readShort);\n for (i = 0; i < segCount; ++i) {\n var start = startCode[i], end = endCode[i];\n for (code = start; code <= end; ++code) {\n var glyphId;\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n codeMap[code] = glyphId & 65535;\n }\n }\n break;\n case 6:\n self.length = data.readShort();\n self.language = data.readShort();\n code = data.readShort();\n var length = data.readShort();\n while (length-- > 0) {\n codeMap[code++] = data.readShort();\n }\n break;\n case 12:\n data.readShort();\n self.length = data.readLong();\n self.language = data.readLong();\n var ngroups = data.readLong();\n while (ngroups-- > 0) {\n code = data.readLong();\n var endCharCode = data.readLong();\n var glyphCode = data.readLong();\n while (code <= endCharCode) {\n codeMap[code++] = glyphCode++;\n }\n }\n break;\n default:\n if (window.console) {\n window.console.error('Unhandled CMAP format: ' + self.format);\n }\n }\n });\n };\n function renderCharmap(ncid2ogid, ogid2ngid) {\n var codes = sortedKeys(ncid2ogid);\n var startCodes = [];\n var endCodes = [];\n var last = null;\n var diff = null;\n function new_gid(charcode) {\n return ogid2ngid[ncid2ogid[charcode]];\n }\n for (var i = 0; i < codes.length; ++i) {\n var code = codes[i];\n var gid = new_gid(code);\n var delta = gid - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(65535);\n startCodes.push(65535);\n var segCount = startCodes.length;\n var segCountX2 = segCount * 2;\n var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n var rangeShift = segCountX2 - searchRange;\n var deltas = [];\n var rangeOffsets = [];\n var glyphIds = [];\n for (i = 0; i < segCount; ++i) {\n var startCode = startCodes[i];\n var endCode = endCodes[i];\n if (startCode == 65535) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n var startGlyph = new_gid(startCode);\n if (startCode - startGlyph >= 32768) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n for (var j = startCode; j <= endCode; ++j) {\n glyphIds.push(new_gid(j));\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n var out = BinaryStream();\n out.writeShort(3);\n out.writeShort(1);\n out.writeLong(12);\n out.writeShort(4);\n out.writeShort(16 + segCount * 8 + glyphIds.length * 2);\n out.writeShort(0);\n out.writeShort(segCountX2);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n endCodes.forEach(out.writeShort);\n out.writeShort(0);\n startCodes.forEach(out.writeShort);\n deltas.forEach(out.writeShort_);\n rangeOffsets.forEach(out.writeShort);\n glyphIds.forEach(out.writeShort);\n return out.get();\n }\n return function (Table) {\n function anonymous() {\n Table.apply(this, arguments);\n }\n extendStatic(anonymous, Table);\n anonymous.prototype = Object.create(Table && Table.prototype);\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n anonymous.prototype.parse = function parse(data) {\n var self = this;\n var offset = self.offset;\n data.offset(offset);\n self.codeMap = {};\n self.version = data.readShort();\n var tableCount = data.readShort();\n self.tables = data.times(tableCount, function () {\n return new CmapEntry(data, offset, self.codeMap);\n });\n };\n anonymous.render = function render(ncid2ogid, ogid2ngid) {\n var out = BinaryStream();\n out.writeShort(0);\n out.writeShort(1);\n out.write(renderCharmap(ncid2ogid, ogid2ngid));\n return out.get();\n };\n return anonymous;\n }(Table);\n }();\n var OS2Table = function (Table) {\n function OS2Table() {\n Table.apply(this, arguments);\n }\n extendStatic(OS2Table, Table);\n OS2Table.prototype = Object.create(Table && Table.prototype);\n OS2Table.prototype.constructor = OS2Table;\n OS2Table.fn = OS2Table.prototype;\n OS2Table.fn.init = OS2Table.fn.constructor;\n OS2Table.prototype.parse = function parse(data) {\n data.offset(this.offset);\n this.version = data.readShort();\n this.averageCharWidth = data.readShort_();\n this.weightClass = data.readShort();\n this.widthClass = data.readShort();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort_();\n this.ySubscriptYSize = data.readShort_();\n this.ySubscriptXOffset = data.readShort_();\n this.ySubscriptYOffset = data.readShort_();\n this.ySuperscriptXSize = data.readShort_();\n this.ySuperscriptYSize = data.readShort_();\n this.ySuperscriptXOffset = data.readShort_();\n this.ySuperscriptYOffset = data.readShort_();\n this.yStrikeoutSize = data.readShort_();\n this.yStrikeoutPosition = data.readShort_();\n this.familyClass = data.readShort_();\n this.panose = data.times(10, data.readByte);\n this.charRange = data.times(4, data.readLong);\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n if (this.version > 0) {\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = data.times(2, data.readLong);\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n this.maxContext = data.readShort();\n }\n }\n };\n OS2Table.prototype.render = function render() {\n return this.raw();\n };\n return OS2Table;\n }(Table);\n var subsetTag = 100000;\n function nextSubsetTag() {\n var ret = '', n = String(subsetTag);\n for (var i = 0; i < n.length; ++i) {\n ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n }\n ++subsetTag;\n return ret;\n }\n var Subfont = function Subfont(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.ogid2ngid = { 0: 0 };\n this.ngid2ogid = { 0: 0 };\n this.ncid2ogid = {};\n this.next = this.firstChar = 1;\n this.nextGid = 1;\n this.psName = nextSubsetTag() + '+' + this.font.psName;\n };\n Subfont.prototype.use = function use(ch) {\n var self = this;\n if (typeof ch == 'string') {\n return ucs2decode(ch).reduce(function (ret, code) {\n return ret + String.fromCharCode(self.use(code));\n }, '');\n }\n var code = self.unicodes[ch];\n if (!code) {\n code = self.next++;\n self.subset[code] = ch;\n self.unicodes[ch] = code;\n var old_gid = self.font.cmap.codeMap[ch];\n if (old_gid) {\n self.ncid2ogid[code] = old_gid;\n if (self.ogid2ngid[old_gid] == null) {\n var new_gid = self.nextGid++;\n self.ogid2ngid[old_gid] = new_gid;\n self.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n return code;\n };\n Subfont.prototype.encodeText = function encodeText(text) {\n return this.use(text);\n };\n Subfont.prototype.glyphIds = function glyphIds() {\n return sortedKeys(this.ogid2ngid);\n };\n Subfont.prototype.glyphsFor = function glyphsFor(glyphIds, result) {\n var this$1 = this;\n if (!result) {\n result = {};\n }\n for (var i = 0; i < glyphIds.length; ++i) {\n var id = glyphIds[i];\n if (!result[id]) {\n var glyph = result[id] = this$1.font.glyf.glyphFor(id);\n if (glyph && glyph.compound) {\n this$1.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n return result;\n };\n Subfont.prototype.render = function render() {\n var this$1 = this;\n var glyphs = this.glyphsFor(this.glyphIds());\n for (var old_gid in glyphs) {\n if (hasOwnProperty$1(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n if (this$1.ogid2ngid[old_gid] == null) {\n var new_gid = this$1.nextGid++;\n this$1.ogid2ngid[old_gid] = new_gid;\n this$1.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n var new_gid_ids = sortedKeys(this.ngid2ogid);\n var old_gid_ids = new_gid_ids.map(function (id) {\n return this.ngid2ogid[id];\n }, this);\n var font = this.font;\n var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n var loca = font.loca.render(glyf.offsets);\n this.lastChar = this.next - 1;\n var tables = {\n 'cmap': CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n 'glyf': glyf.table,\n 'loca': loca.table,\n 'hmtx': font.hmtx.render(old_gid_ids),\n 'hhea': font.hhea.render(old_gid_ids),\n 'maxp': font.maxp.render(old_gid_ids),\n 'post': font.post.render(old_gid_ids),\n 'name': font.name.render(this.psName),\n 'head': font.head.render(loca.format),\n 'OS/2': font.os2.render()\n };\n return this.font.directory.render(tables);\n };\n Subfont.prototype.cidToGidMap = function cidToGidMap() {\n var this$1 = this;\n var out = BinaryStream(), len = 0;\n for (var cid = this.firstChar; cid < this.next; ++cid) {\n while (len < cid) {\n out.writeShort(0);\n len++;\n }\n var old_gid = this$1.ncid2ogid[cid];\n if (old_gid) {\n var new_gid = this$1.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n len++;\n }\n return out.get();\n };\n var TTFFont = function TTFFont(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n if (data.readString(4) == 'ttcf') {\n var offset;\n var parse = function () {\n data.offset(offset);\n self.parse();\n };\n if (!name) {\n throw new Error('Must specify a name for TTC files');\n }\n data.readLong();\n var numFonts = data.readLong();\n for (var i = 0; i < numFonts; ++i) {\n offset = data.readLong();\n data.saveExcursion(parse);\n if (self.psName == name) {\n return;\n }\n }\n throw new Error('Font ' + name + ' not found in collection');\n } else {\n data.offset(0);\n self.parse();\n }\n };\n TTFFont.prototype.parse = function parse() {\n var dir = this.directory = new Directory(this.contents);\n this.head = dir.readTable('head', HeadTable);\n this.loca = dir.readTable('loca', LocaTable);\n this.hhea = dir.readTable('hhea', HheaTable);\n this.maxp = dir.readTable('maxp', MaxpTable);\n this.hmtx = dir.readTable('hmtx', HmtxTable);\n this.glyf = dir.readTable('glyf', GlyfTable);\n this.name = dir.readTable('name', NameTable);\n this.post = dir.readTable('post', PostTable);\n this.cmap = dir.readTable('cmap', CmapTable);\n this.os2 = dir.readTable('OS/2', OS2Table);\n this.psName = this.name.postscriptName;\n this.ascent = this.os2.ascent || this.hhea.ascent;\n this.descent = this.os2.descent || this.hhea.descent;\n this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n this.scale = 1000 / this.head.unitsPerEm;\n };\n TTFFont.prototype.widthOfGlyph = function widthOfGlyph(glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n };\n TTFFont.prototype.makeSubset = function makeSubset() {\n return new Subfont(this);\n };\n var fromCharCode = String.fromCharCode;\n var BOM = 'þÿ';\n function encodeUnit(codeUnit) {\n return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 255);\n }\n function encodeUTF16BE(input) {\n var output = '';\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n if (c < 65535) {\n output += encodeUnit(c);\n } else {\n var lead = (c - 65536 >> 10) + 55296;\n var trail = (c - 65536 & 1023) + 56320;\n output += encodeUnit(lead);\n output += encodeUnit(trail);\n }\n }\n return output;\n }\n var browser = kendo.support.browser;\n var NL = '\\n';\n var RESOURCE_COUNTER = 0;\n var PAPER_SIZE = {\n a0: [\n 2383.94,\n 3370.39\n ],\n a1: [\n 1683.78,\n 2383.94\n ],\n a2: [\n 1190.55,\n 1683.78\n ],\n a3: [\n 841.89,\n 1190.55\n ],\n a4: [\n 595.28,\n 841.89\n ],\n a5: [\n 419.53,\n 595.28\n ],\n a6: [\n 297.64,\n 419.53\n ],\n a7: [\n 209.76,\n 297.64\n ],\n a8: [\n 147.4,\n 209.76\n ],\n a9: [\n 104.88,\n 147.4\n ],\n a10: [\n 73.7,\n 104.88\n ],\n b0: [\n 2834.65,\n 4008.19\n ],\n b1: [\n 2004.09,\n 2834.65\n ],\n b2: [\n 1417.32,\n 2004.09\n ],\n b3: [\n 1000.63,\n 1417.32\n ],\n b4: [\n 708.66,\n 1000.63\n ],\n b5: [\n 498.9,\n 708.66\n ],\n b6: [\n 354.33,\n 498.9\n ],\n b7: [\n 249.45,\n 354.33\n ],\n b8: [\n 175.75,\n 249.45\n ],\n b9: [\n 124.72,\n 175.75\n ],\n b10: [\n 87.87,\n 124.72\n ],\n c0: [\n 2599.37,\n 3676.54\n ],\n c1: [\n 1836.85,\n 2599.37\n ],\n c2: [\n 1298.27,\n 1836.85\n ],\n c3: [\n 918.43,\n 1298.27\n ],\n c4: [\n 649.13,\n 918.43\n ],\n c5: [\n 459.21,\n 649.13\n ],\n c6: [\n 323.15,\n 459.21\n ],\n c7: [\n 229.61,\n 323.15\n ],\n c8: [\n 161.57,\n 229.61\n ],\n c9: [\n 113.39,\n 161.57\n ],\n c10: [\n 79.37,\n 113.39\n ],\n executive: [\n 521.86,\n 756\n ],\n folio: [\n 612,\n 936\n ],\n legal: [\n 612,\n 1008\n ],\n letter: [\n 612,\n 792\n ],\n tabloid: [\n 792,\n 1224\n ]\n };\n function makeOutput() {\n var indentLevel = 0, output = BinaryStream();\n function out() {\n var arguments$1 = arguments;\n for (var i = 0; i < arguments.length; ++i) {\n var x = arguments$1[i];\n if (x === undefined) {\n throw new Error('Cannot output undefined to PDF');\n } else if (x instanceof PDFValue) {\n x.beforeRender(out);\n x.render(out);\n } else if (isArray(x)) {\n renderArray(x, out);\n } else if (isDate(x)) {\n renderDate(x, out);\n } else if (typeof x == 'number') {\n if (isNaN(x)) {\n throw new Error('Cannot output NaN to PDF');\n }\n var num = x.toFixed(7);\n if (num.indexOf('.') >= 0) {\n num = num.replace(/\\.?0+$/, '');\n }\n if (num == '-0') {\n num = '0';\n }\n output.writeString(num);\n } else if (/string|boolean/.test(typeof x)) {\n output.writeString(String(x));\n } else if (typeof x.get == 'function') {\n output.write(x.get());\n } else if (typeof x == 'object') {\n if (!x) {\n output.writeString('null');\n } else {\n out(new PDFDictionary(x));\n }\n }\n }\n }\n out.writeData = function (data) {\n output.write(data);\n };\n out.withIndent = function (f) {\n ++indentLevel;\n f(out);\n --indentLevel;\n };\n out.indent = function () {\n out(NL, pad('', indentLevel * 2, ' '));\n out.apply(null, arguments);\n };\n out.offset = function () {\n return output.offset();\n };\n out.toString = function () {\n throw new Error('FIX CALLER');\n };\n out.get = function () {\n return output.get();\n };\n out.stream = function () {\n return output;\n };\n return out;\n }\n function wrapObject(value, id) {\n var beforeRender = value.beforeRender;\n var renderValue = value.render;\n value.beforeRender = function () {\n };\n value.render = function (out) {\n out(id, ' 0 R');\n };\n value.renderFull = function (out) {\n value._offset = out.offset();\n out(id, ' 0 obj ');\n beforeRender.call(value, out);\n renderValue.call(value, out);\n out(' endobj');\n };\n }\n function getPaperOptions(getOption) {\n if (typeof getOption != 'function') {\n var options = getOption;\n getOption = function (key, def) {\n return key in options ? options[key] : def;\n };\n }\n var paperSize = getOption('paperSize', PAPER_SIZE.a4);\n if (!paperSize) {\n return {};\n }\n if (typeof paperSize == 'string') {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n if (paperSize == null) {\n throw new Error('Unknown paper size');\n }\n }\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n if (getOption('landscape', false)) {\n paperSize = [\n Math.max(paperSize[0], paperSize[1]),\n Math.min(paperSize[0], paperSize[1])\n ];\n }\n var margin = getOption('margin');\n if (margin) {\n if (typeof margin == 'string' || typeof margin == 'number') {\n margin = unitsToPoints(margin, 0);\n margin = {\n left: margin,\n top: margin,\n right: margin,\n bottom: margin\n };\n } else {\n margin = {\n left: unitsToPoints(margin.left, 0),\n top: unitsToPoints(margin.top, 0),\n right: unitsToPoints(margin.right, 0),\n bottom: unitsToPoints(margin.bottom, 0)\n };\n }\n if (getOption('addMargin')) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n return {\n paperSize: paperSize,\n margin: margin\n };\n }\n var FONT_CACHE = {\n 'Times-Roman': true,\n 'Times-Bold': true,\n 'Times-Italic': true,\n 'Times-BoldItalic': true,\n 'Helvetica': true,\n 'Helvetica-Bold': true,\n 'Helvetica-Oblique': true,\n 'Helvetica-BoldOblique': true,\n 'Courier': true,\n 'Courier-Bold': true,\n 'Courier-Oblique': true,\n 'Courier-BoldOblique': true,\n 'Symbol': true,\n 'ZapfDingbats': true\n };\n function loadBinary(url, cont) {\n var m;\n if (browser.msie && (m = /^data:.*?;base64,/i.exec(url))) {\n cont(base64ToUint8Array(url.substr(m[0].length)));\n return;\n }\n function error() {\n if (window.console) {\n if (window.console.error) {\n window.console.error('Cannot load URL: %s', url);\n } else {\n window.console.log('Cannot load URL: %s', url);\n }\n }\n cont(null);\n }\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n if (HAS_TYPED_ARRAYS) {\n req.responseType = 'arraybuffer';\n }\n req.onload = function () {\n if (req.status == 200 || req.status == 304) {\n if (HAS_TYPED_ARRAYS) {\n cont(new Uint8Array(req.response));\n } else {\n cont(new window.VBArray(req.responseBody).toArray());\n }\n } else {\n error();\n }\n };\n req.onerror = error;\n req.send(null);\n }\n function loadFont(url, cont) {\n var font = FONT_CACHE[url];\n if (font) {\n cont(font);\n } else {\n loadBinary(url, function (data) {\n if (data == null) {\n throw new Error('Cannot load font from ' + url);\n } else {\n var font = new TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n }\n var IMAGE_CACHE = {};\n function clearImageCache() {\n IMAGE_CACHE = {};\n }\n function loadImage(url, size, cont, options) {\n var img = IMAGE_CACHE[url], bloburl, blob;\n if (img) {\n cont(img);\n } else {\n img = new Image();\n if (!/^data:/i.test(url)) {\n img.crossOrigin = 'Anonymous';\n }\n if (HAS_TYPED_ARRAYS && !/^data:/i.test(url)) {\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n blob = xhr.response;\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n };\n xhr.onerror = _onerror;\n xhr.open('GET', url, true);\n xhr.responseType = 'blob';\n xhr.send();\n } else {\n _load(url);\n }\n }\n function _load(url) {\n img.src = url;\n if (img.complete && !browser.msie) {\n _onload();\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n function _trycanvas() {\n if (!size) {\n size = {\n width: img.width,\n height: img.height\n };\n }\n var canvas = document.createElement('canvas');\n canvas.width = size.width;\n canvas.height = size.height;\n var ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0, size.width, size.height);\n var imgdata;\n try {\n imgdata = ctx.getImageData(0, 0, size.width, size.height);\n } catch (ex) {\n _onerror();\n return;\n } finally {\n if (bloburl) {\n URL.revokeObjectURL(bloburl);\n }\n }\n var hasAlpha = false, rgb = BinaryStream(), alpha = BinaryStream();\n var rawbytes = imgdata.data;\n var i = 0;\n while (i < rawbytes.length) {\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n var a = rawbytes[i++];\n if (a < 255) {\n hasAlpha = true;\n }\n alpha.writeByte(a);\n }\n if (hasAlpha || options.keepPNG) {\n img = new PDFRawImage(size.width, size.height, rgb, alpha);\n } else {\n var data = canvas.toDataURL('image/jpeg', options.jpegQuality);\n data = data.substr(data.indexOf(';base64,') + 8);\n var stream = BinaryStream();\n stream.writeBase64(data);\n img = new PDFJpegImage(stream);\n }\n cont(IMAGE_CACHE[url] = img);\n }\n function _onerror() {\n cont(IMAGE_CACHE[url] = 'ERROR');\n }\n function _onload() {\n if (size) {\n var svg = blob && blob.type === 'image/svg+xml';\n var upscale = size.width >= img.width || size.height >= img.height;\n if (!svg && upscale) {\n size = null;\n }\n }\n if (!size && blob && /^image\\/jpe?g$/i.test(blob.type)) {\n var reader = new FileReader();\n reader.onload = function () {\n try {\n var img = new PDFJpegImage(BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n } catch (ex) {\n _trycanvas();\n }\n };\n reader.readAsArrayBuffer(blob);\n } else {\n _trycanvas();\n }\n }\n }\n function manyLoader(loadOne) {\n return function (urls, callback) {\n var n = urls.length, i = n;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n while (i-- > 0) {\n loadOne(urls[i], next);\n }\n };\n }\n var loadFonts = manyLoader(loadFont);\n var loadImages = function (images, callback, options) {\n options = $.extend({\n jpegQuality: 0.92,\n keepPNG: false\n }, options);\n var urls = Object.keys(images), n = urls.length;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n urls.forEach(function (url) {\n loadImage(url, images[url], next, options);\n });\n };\n var PDFDocument = function PDFDocument(options) {\n var self = this;\n var out = makeOutput();\n var objcount = 0;\n var objects = [];\n function getOption(name, defval) {\n return options && options[name] != null ? options[name] : defval;\n }\n self.getOption = getOption;\n self.attach = function (value) {\n if (objects.indexOf(value) < 0) {\n wrapObject(value, ++objcount);\n objects.push(value);\n }\n return value;\n };\n self.pages = [];\n self.FONTS = {};\n self.IMAGES = {};\n self.GRAD_COL_FUNCTIONS = {};\n self.GRAD_OPC_FUNCTIONS = {};\n self.GRAD_COL = {};\n self.GRAD_OPC = {};\n var catalog = self.attach(new PDFCatalog());\n var pageTree = self.attach(new PDFPageTree());\n if (getOption('autoPrint')) {\n var nameTree = {};\n nameTree.JavaScript = new PDFDictionary({\n Names: [\n new PDFString('JS'),\n self.attach(new PDFDictionary({\n S: _('JavaScript'),\n JS: new PDFString('print(true);')\n }))\n ]\n });\n catalog.props.Names = new PDFDictionary(nameTree);\n }\n catalog.setPages(pageTree);\n var info = self.attach(new PDFDictionary({\n Producer: new PDFString(getOption('producer', 'Kendo UI PDF Generator'), true),\n Title: new PDFString(getOption('title', ''), true),\n Author: new PDFString(getOption('author', ''), true),\n Subject: new PDFString(getOption('subject', ''), true),\n Keywords: new PDFString(getOption('keywords', ''), true),\n Creator: new PDFString(getOption('creator', 'Kendo UI PDF Generator'), true),\n CreationDate: getOption('date', new Date())\n }));\n self.addPage = function (options) {\n var paperOptions = getPaperOptions(function (name, defval) {\n return options && options[name] != null ? options[name] : defval;\n });\n var paperSize = paperOptions.paperSize;\n var margin = paperOptions.margin;\n var contentWidth = paperSize[0];\n var contentHeight = paperSize[1];\n if (margin) {\n contentWidth -= margin.left + margin.right;\n contentHeight -= margin.top + margin.bottom;\n }\n var content = new PDFStream(makeOutput(), null, true);\n var props = {\n Contents: self.attach(content),\n Parent: pageTree,\n MediaBox: [\n 0,\n 0,\n paperSize[0],\n paperSize[1]\n ]\n };\n var page = new PDFPage(self, props);\n page._content = content;\n pageTree.addPage(self.attach(page));\n page.transform(1, 0, 0, -1, 0, paperSize[1]);\n if (margin) {\n page.translate(margin.left, margin.top);\n page.rect(0, 0, contentWidth, contentHeight);\n page.clip();\n }\n self.pages.push(page);\n return page;\n };\n self.render = function () {\n var i;\n out('%PDF-1.4', NL, '%ÂÁÚÏÎ', NL, NL);\n for (i = 0; i < objects.length; ++i) {\n objects[i].renderFull(out);\n out(NL, NL);\n }\n var xrefOffset = out.offset();\n out('xref', NL, 0, ' ', objects.length + 1, NL);\n out('0000000000 65535 f ', NL);\n for (i = 0; i < objects.length; ++i) {\n out(zeropad(objects[i]._offset, 10), ' 00000 n ', NL);\n }\n out(NL);\n out('trailer', NL);\n out(new PDFDictionary({\n Size: objects.length + 1,\n Root: catalog,\n Info: info\n }), NL, NL);\n out('startxref', NL, xrefOffset, NL);\n out('%%EOF', NL);\n return out.stream().offset(0);\n };\n self.loadFonts = loadFonts;\n self.loadImages = loadImages;\n };\n PDFDocument.prototype.getFont = function getFont(url) {\n var font = this.FONTS[url];\n if (!font) {\n font = FONT_CACHE[url];\n if (!font) {\n throw new Error('Font ' + url + ' has not been loaded');\n }\n if (font === true) {\n font = this.attach(new PDFStandardFont(url));\n } else {\n font = this.attach(new PDFFont(this, font));\n }\n this.FONTS[url] = font;\n }\n return font;\n };\n PDFDocument.prototype.getImage = function getImage(url) {\n var img = this.IMAGES[url];\n if (!img) {\n img = IMAGE_CACHE[url];\n if (!img) {\n throw new Error('Image ' + url + ' has not been loaded');\n }\n if (img === 'ERROR') {\n return null;\n }\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n return img;\n };\n PDFDocument.prototype.getOpacityGS = function getOpacityGS(opacity, forStroke) {\n var id = parseFloat(opacity).toFixed(3);\n opacity = parseFloat(id);\n id += forStroke ? 'S' : 'F';\n var cache = this._opacityGSCache || (this._opacityGSCache = {});\n var gs = cache[id];\n if (!gs) {\n var props = { Type: _('ExtGState') };\n if (forStroke) {\n props.CA = opacity;\n } else {\n props.ca = opacity;\n }\n gs = this.attach(new PDFDictionary(props));\n gs._resourceName = _('GS' + ++RESOURCE_COUNTER);\n cache[id] = gs;\n }\n return gs;\n };\n PDFDocument.prototype.dict = function dict(props) {\n return new PDFDictionary(props);\n };\n PDFDocument.prototype.name = function name(str) {\n return _(str);\n };\n PDFDocument.prototype.stream = function stream(props, content) {\n return new PDFStream(content, props);\n };\n function pad(str, len, ch) {\n while (str.length < len) {\n str = ch + str;\n }\n return str;\n }\n function zeropad(n, len) {\n return pad(String(n), len, '0');\n }\n function hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n var isArray = Array.isArray || function (obj) {\n return obj instanceof Array;\n };\n function isDate(obj) {\n return obj instanceof Date;\n }\n function renderArray(a, out) {\n out('[');\n if (a.length > 0) {\n out.withIndent(function () {\n for (var i = 0; i < a.length; ++i) {\n if (i > 0 && i % 8 === 0) {\n out.indent(a[i]);\n } else {\n out(' ', a[i]);\n }\n }\n });\n }\n out(' ]');\n }\n function renderDate(date, out) {\n out('(D:', zeropad(date.getUTCFullYear(), 4), zeropad(date.getUTCMonth() + 1, 2), zeropad(date.getUTCDate(), 2), zeropad(date.getUTCHours(), 2), zeropad(date.getUTCMinutes(), 2), zeropad(date.getUTCSeconds(), 2), 'Z)');\n }\n function mm2pt(mm) {\n return mm * (72 / 25.4);\n }\n function cm2pt(cm) {\n return mm2pt(cm * 10);\n }\n function in2pt(inch) {\n return inch * 72;\n }\n function unitsToPoints(x, def) {\n if (typeof x == 'number') {\n return x;\n }\n if (typeof x == 'string') {\n var m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n if (m) {\n var num = parseFloat(m[1]);\n if (!isNaN(num)) {\n if (m[2] == 'pt') {\n return num;\n }\n return {\n 'mm': mm2pt,\n 'cm': cm2pt,\n 'in': in2pt\n }[m[2]](num);\n }\n }\n }\n if (def != null) {\n return def;\n }\n throw new Error('Can\\'t parse unit: ' + x);\n }\n var PDFValue = function PDFValue() {\n };\n PDFValue.prototype.beforeRender = function beforeRender() {\n };\n var PDFString = function (PDFValue) {\n function PDFString(value, utf16be) {\n PDFValue.call(this);\n this.value = value;\n this.utf16be = Boolean(utf16be);\n }\n extendStatic(PDFString, PDFValue);\n PDFString.prototype = Object.create(PDFValue && PDFValue.prototype);\n PDFString.prototype.constructor = PDFString;\n PDFString.fn = PDFString.prototype;\n PDFString.fn.init = PDFString.fn.constructor;\n PDFString.prototype.render = function render(out) {\n var txt = this.value;\n if (this.utf16be) {\n txt = BOM + encodeUTF16BE(txt);\n txt = txt.replace(/([\\(\\)\\\\])/g, '\\\\$1');\n out('(', txt, ')');\n } else {\n var data = [40];\n for (var i = 0; i < txt.length; ++i) {\n var code = txt.charCodeAt(i) & 255;\n if (code == 40 || code == 41 || code == 92) {\n data.push(92);\n }\n data.push(code);\n }\n data.push(41);\n out.writeData(data);\n }\n };\n PDFString.prototype.toString = function toString() {\n return this.value;\n };\n return PDFString;\n }(PDFValue);\n var PDFHexString = function (PDFString) {\n function PDFHexString(value) {\n PDFString.call(this, value);\n this.value = value;\n }\n extendStatic(PDFHexString, PDFString);\n PDFHexString.prototype = Object.create(PDFString && PDFString.prototype);\n PDFHexString.prototype.constructor = PDFHexString;\n PDFHexString.fn = PDFHexString.prototype;\n PDFHexString.fn.init = PDFHexString.fn.constructor;\n PDFHexString.prototype.render = function render(out) {\n var this$1 = this;\n out('<');\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this$1.value.charCodeAt(i).toString(16), 4));\n }\n out('>');\n };\n return PDFHexString;\n }(PDFString);\n var PDFName = function (PDFValue) {\n function PDFName(name) {\n PDFValue.call(this);\n this.name = name;\n }\n extendStatic(PDFName, PDFValue);\n PDFName.prototype = Object.create(PDFValue && PDFValue.prototype);\n PDFName.prototype.constructor = PDFName;\n PDFName.fn = PDFName.prototype;\n PDFName.fn.init = PDFName.fn.constructor;\n PDFName.get = function get(name) {\n return _(name);\n };\n PDFName.prototype.render = function render(out) {\n out('/' + this.escape());\n };\n PDFName.prototype.escape = function escape() {\n return this.name.replace(/[^\\x21-\\x7E]/g, function (c) {\n return '#' + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n };\n PDFName.prototype.toString = function toString() {\n return this.name;\n };\n return PDFName;\n }(PDFValue);\n var PDFName_cache = {};\n function _(name) {\n if (hasOwnProperty(PDFName_cache, name)) {\n return PDFName_cache[name];\n }\n return PDFName_cache[name] = new PDFName(name);\n }\n var PDFDictionary = function (PDFValue) {\n function PDFDictionary(props) {\n PDFValue.call(this);\n this.props = props;\n }\n extendStatic(PDFDictionary, PDFValue);\n PDFDictionary.prototype = Object.create(PDFValue && PDFValue.prototype);\n PDFDictionary.prototype.constructor = PDFDictionary;\n PDFDictionary.fn = PDFDictionary.prototype;\n PDFDictionary.fn.init = PDFDictionary.fn.constructor;\n PDFDictionary.prototype.render = function render(out) {\n var props = this.props, empty = true;\n out('<<');\n out.withIndent(function () {\n for (var i in props) {\n if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n empty = false;\n out.indent(_(i), ' ', props[i]);\n }\n }\n });\n if (!empty) {\n out.indent();\n }\n out('>>');\n };\n return PDFDictionary;\n }(PDFValue);\n var PDFStream = function (PDFValue) {\n function PDFStream(data, props, compress) {\n PDFValue.call(this);\n if (typeof data == 'string') {\n var tmp = BinaryStream();\n tmp.write(data);\n data = tmp;\n }\n this.data = data;\n this.props = props || {};\n this.compress = compress;\n }\n extendStatic(PDFStream, PDFValue);\n PDFStream.prototype = Object.create(PDFValue && PDFValue.prototype);\n PDFStream.prototype.constructor = PDFStream;\n PDFStream.fn = PDFStream.prototype;\n PDFStream.fn.init = PDFStream.fn.constructor;\n PDFStream.prototype.render = function render(out) {\n var data = this.data.get(), props = this.props;\n if (this.compress && kendoPdf.supportsDeflate()) {\n if (!props.Filter) {\n props.Filter = [];\n } else if (!(props.Filter instanceof Array)) {\n props.Filter = [props.Filter];\n }\n props.Filter.unshift(_('FlateDecode'));\n data = kendoPdf.deflate(data);\n }\n props.Length = data.length;\n out(new PDFDictionary(props), ' stream', NL);\n out.writeData(data);\n out(NL, 'endstream');\n };\n return PDFStream;\n }(PDFValue);\n var PDFCatalog = function (PDFDictionary) {\n function PDFCatalog() {\n PDFDictionary.call(this, { Type: _('Catalog') });\n }\n extendStatic(PDFCatalog, PDFDictionary);\n PDFCatalog.prototype = Object.create(PDFDictionary && PDFDictionary.prototype);\n PDFCatalog.prototype.constructor = PDFCatalog;\n PDFCatalog.fn = PDFCatalog.prototype;\n PDFCatalog.fn.init = PDFCatalog.fn.constructor;\n PDFCatalog.prototype.setPages = function setPages(pagesObj) {\n this.props.Pages = pagesObj;\n };\n return PDFCatalog;\n }(PDFDictionary);\n var PDFPageTree = function (PDFDictionary) {\n function PDFPageTree() {\n PDFDictionary.call(this, {\n Type: _('Pages'),\n Kids: [],\n Count: 0\n });\n }\n extendStatic(PDFPageTree, PDFDictionary);\n PDFPageTree.prototype = Object.create(PDFDictionary && PDFDictionary.prototype);\n PDFPageTree.prototype.constructor = PDFPageTree;\n PDFPageTree.fn = PDFPageTree.prototype;\n PDFPageTree.fn.init = PDFPageTree.fn.constructor;\n PDFPageTree.prototype.addPage = function addPage(pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n };\n return PDFPageTree;\n }(PDFDictionary);\n var SOF_CODES = [\n 192,\n 193,\n 194,\n 195,\n 197,\n 198,\n 199,\n 201,\n 202,\n 203,\n 205,\n 206,\n 207\n ];\n var PDFJpegImage = function PDFJpegImage(data) {\n data.offset(0);\n var width, height, colorSpace, bitsPerComponent;\n var soi = data.readShort();\n if (soi != 65496) {\n throw new Error('Invalid JPEG image');\n }\n while (!data.eof()) {\n var ff = data.readByte();\n if (ff != 255) {\n throw new Error('Invalid JPEG image');\n }\n var marker = data.readByte();\n var length = data.readShort();\n if (SOF_CODES.indexOf(marker) >= 0) {\n bitsPerComponent = data.readByte();\n height = data.readShort();\n width = data.readShort();\n colorSpace = data.readByte();\n break;\n }\n data.skip(length - 2);\n }\n if (colorSpace == null) {\n throw new Error('Invalid JPEG image');\n }\n var props = {\n Type: _('XObject'),\n Subtype: _('Image'),\n Width: width,\n Height: height,\n BitsPerComponent: bitsPerComponent,\n Filter: _('DCTDecode')\n };\n switch (colorSpace) {\n case 1:\n props.ColorSpace = _('DeviceGray');\n break;\n case 3:\n props.ColorSpace = _('DeviceRGB');\n break;\n case 4:\n props.ColorSpace = _('DeviceCMYK');\n props.Decode = [\n 1,\n 0,\n 1,\n 0,\n 1,\n 0,\n 1,\n 0\n ];\n break;\n }\n this.asStream = function () {\n data.offset(0);\n var stream = new PDFStream(data, props);\n stream._resourceName = _('I' + ++RESOURCE_COUNTER);\n return stream;\n };\n };\n var PDFRawImage = function PDFRawImage(width, height, rgb, alpha) {\n this.asStream = function (pdf) {\n var mask = new PDFStream(alpha, {\n Type: _('XObject'),\n Subtype: _('Image'),\n Width: width,\n Height: height,\n BitsPerComponent: 8,\n ColorSpace: _('DeviceGray')\n }, true);\n var stream = new PDFStream(rgb, {\n Type: _('XObject'),\n Subtype: _('Image'),\n Width: width,\n Height: height,\n BitsPerComponent: 8,\n ColorSpace: _('DeviceRGB'),\n SMask: pdf.attach(mask)\n }, true);\n stream._resourceName = _('I' + ++RESOURCE_COUNTER);\n return stream;\n };\n };\n var PDFStandardFont = function (PDFDictionary) {\n function PDFStandardFont(name) {\n PDFDictionary.call(this, {\n Type: _('Font'),\n Subtype: _('Type1'),\n BaseFont: _(name)\n });\n this._resourceName = _('F' + ++RESOURCE_COUNTER);\n }\n extendStatic(PDFStandardFont, PDFDictionary);\n PDFStandardFont.prototype = Object.create(PDFDictionary && PDFDictionary.prototype);\n PDFStandardFont.prototype.constructor = PDFStandardFont;\n PDFStandardFont.fn = PDFStandardFont.prototype;\n PDFStandardFont.fn.init = PDFStandardFont.fn.constructor;\n PDFStandardFont.prototype.encodeText = function encodeText(str) {\n return new PDFString(String(str));\n };\n return PDFStandardFont;\n }(PDFDictionary);\n var PDFFont = function (PDFDictionary) {\n function PDFFont(pdf, font, props) {\n PDFDictionary.call(this, {});\n props = this.props;\n props.Type = _('Font');\n props.Subtype = _('Type0');\n props.Encoding = _('Identity-H');\n this._pdf = pdf;\n this._font = font;\n this._sub = font.makeSubset();\n this._resourceName = _('F' + ++RESOURCE_COUNTER);\n var head = font.head;\n this.name = font.psName;\n var scale = this.scale = font.scale;\n this.bbox = [\n head.xMin * scale,\n head.yMin * scale,\n head.xMax * scale,\n head.yMax * scale\n ];\n this.italicAngle = font.post.italicAngle;\n this.ascent = font.ascent * scale;\n this.descent = font.descent * scale;\n this.lineGap = font.lineGap * scale;\n this.capHeight = font.os2.capHeight || this.ascent;\n this.xHeight = font.os2.xHeight || 0;\n this.stemV = 0;\n this.familyClass = (font.os2.familyClass || 0) >> 8;\n this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n this.isScript = this.familyClass == 10;\n this.flags = (font.post.isFixedPitch ? 1 : 0) | (this.isSerif ? 1 << 1 : 0) | (this.isScript ? 1 << 3 : 0) | (this.italicAngle !== 0 ? 1 << 6 : 0) | 1 << 5;\n }\n extendStatic(PDFFont, PDFDictionary);\n PDFFont.prototype = Object.create(PDFDictionary && PDFDictionary.prototype);\n PDFFont.prototype.constructor = PDFFont;\n PDFFont.fn = PDFFont.prototype;\n PDFFont.fn.init = PDFFont.fn.constructor;\n PDFFont.prototype.encodeText = function encodeText(text) {\n return new PDFHexString(this._sub.encodeText(String(text)));\n };\n PDFFont.prototype.getTextWidth = function getTextWidth(fontSize, text) {\n var this$1 = this;\n var width = 0, codeMap = this._font.cmap.codeMap;\n for (var i = 0; i < text.length; ++i) {\n var glyphId = codeMap[text.charCodeAt(i)];\n width += this$1._font.widthOfGlyph(glyphId || 0);\n }\n return width * fontSize / 1000;\n };\n PDFFont.prototype.beforeRender = function beforeRender() {\n var self = this;\n var sub = self._sub;\n var data = sub.render();\n var fontStream = new PDFStream(BinaryStream(data), { Length1: data.length }, true);\n var descriptor = self._pdf.attach(new PDFDictionary({\n Type: _('FontDescriptor'),\n FontName: _(self._sub.psName),\n FontBBox: self.bbox,\n Flags: self.flags,\n StemV: self.stemV,\n ItalicAngle: self.italicAngle,\n Ascent: self.ascent,\n Descent: self.descent,\n CapHeight: self.capHeight,\n XHeight: self.xHeight,\n FontFile2: self._pdf.attach(fontStream)\n }));\n var cmap = sub.ncid2ogid;\n var firstChar = sub.firstChar;\n var lastChar = sub.lastChar;\n var charWidths = [];\n (function loop(i, chunk) {\n if (i <= lastChar) {\n var gid = cmap[i];\n if (gid == null) {\n loop(i + 1);\n } else {\n if (!chunk) {\n charWidths.push(i, chunk = []);\n }\n chunk.push(self._font.widthOfGlyph(gid));\n loop(i + 1, chunk);\n }\n }\n }(firstChar));\n var descendant = new PDFDictionary({\n Type: _('Font'),\n Subtype: _('CIDFontType2'),\n BaseFont: _(self._sub.psName),\n CIDSystemInfo: new PDFDictionary({\n Registry: new PDFString('Adobe'),\n Ordering: new PDFString('Identity'),\n Supplement: 0\n }),\n FontDescriptor: descriptor,\n FirstChar: firstChar,\n LastChar: lastChar,\n DW: Math.round(self._font.widthOfGlyph(0)),\n W: charWidths,\n CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n });\n var dict = self.props;\n dict.BaseFont = _(self._sub.psName);\n dict.DescendantFonts = [self._pdf.attach(descendant)];\n var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n var unimapStream = new PDFStream(makeOutput(), null, true);\n unimapStream.data(unimap);\n dict.ToUnicode = self._pdf.attach(unimapStream);\n };\n PDFFont.prototype._makeCidToGidMap = function _makeCidToGidMap() {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n };\n return PDFFont;\n }(PDFDictionary);\n var PDFToUnicodeCmap = function (PDFValue) {\n function PDFToUnicodeCmap(firstChar, lastChar, map) {\n PDFValue.call(this);\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n }\n extendStatic(PDFToUnicodeCmap, PDFValue);\n PDFToUnicodeCmap.prototype = Object.create(PDFValue && PDFValue.prototype);\n PDFToUnicodeCmap.prototype.constructor = PDFToUnicodeCmap;\n PDFToUnicodeCmap.fn = PDFToUnicodeCmap.prototype;\n PDFToUnicodeCmap.fn.init = PDFToUnicodeCmap.fn.constructor;\n PDFToUnicodeCmap.prototype.render = function render(out) {\n out.indent('/CIDInit /ProcSet findresource begin');\n out.indent('12 dict begin');\n out.indent('begincmap');\n out.indent('/CIDSystemInfo <<');\n out.indent(' /Registry (Adobe)');\n out.indent(' /Ordering (UCS)');\n out.indent(' /Supplement 0');\n out.indent('>> def');\n out.indent('/CMapName /Adobe-Identity-UCS def');\n out.indent('/CMapType 2 def');\n out.indent('1 begincodespacerange');\n out.indent(' <0000>');\n out.indent('endcodespacerange');\n var self = this;\n out.indent(self.lastChar - self.firstChar + 1, ' beginbfchar');\n out.withIndent(function () {\n for (var code = self.firstChar; code <= self.lastChar; ++code) {\n var unicode = self.map[code];\n var str = ucs2encode([unicode]);\n out.indent('<', zeropad(code.toString(16), 4), '>', '<');\n for (var i = 0; i < str.length; ++i) {\n out(zeropad(str.charCodeAt(i).toString(16), 4));\n }\n out('>');\n }\n });\n out.indent('endbfchar');\n out.indent('endcmap');\n out.indent('CMapName currentdict /CMap defineresource pop');\n out.indent('end');\n out.indent('end');\n };\n return PDFToUnicodeCmap;\n }(PDFValue);\n function makeHash(a) {\n return a.map(function (x) {\n return isArray(x) ? makeHash(x) : typeof x == 'number' ? (Math.round(x * 1000) / 1000).toFixed(3) : x;\n }).join(' ');\n }\n function cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n var hash = makeHash([\n r1,\n g1,\n b1,\n r2,\n g2,\n b2\n ]);\n var func = pdf.GRAD_COL_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [\n 0,\n 1\n ],\n Range: [\n 0,\n 1,\n 0,\n 1,\n 0,\n 1\n ],\n N: 1,\n C0: [\n r1,\n g1,\n b1\n ],\n C1: [\n r2,\n g2,\n b2\n ]\n }));\n }\n return func;\n }\n function cacheOpacityGradientFunction(pdf, a1, a2) {\n var hash = makeHash([\n a1,\n a2\n ]);\n var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [\n 0,\n 1\n ],\n Range: [\n 0,\n 1\n ],\n N: 1,\n C0: [a1],\n C1: [a2]\n }));\n }\n return func;\n }\n function makeGradientFunctions(pdf, stops) {\n var hasAlpha = false;\n var opacities = [];\n var colors = [];\n var offsets = [];\n var encode = [];\n var i, prev, cur, prevColor, curColor;\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n colors.push(cacheColorGradientFunction(pdf, prevColor.r, prevColor.g, prevColor.b, curColor.r, curColor.g, curColor.b));\n if (prevColor.a < 1 || curColor.a < 1) {\n hasAlpha = true;\n }\n offsets.push(cur.offset);\n encode.push(0, 1);\n }\n if (hasAlpha) {\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n opacities.push(cacheOpacityGradientFunction(pdf, prevColor.a, curColor.a));\n }\n }\n offsets.pop();\n return {\n hasAlpha: hasAlpha,\n colors: assemble(colors),\n opacities: hasAlpha ? assemble(opacities) : null\n };\n function assemble(funcs) {\n if (funcs.length == 1) {\n return funcs[0];\n }\n return {\n FunctionType: 3,\n Functions: funcs,\n Domain: [\n 0,\n 1\n ],\n Bounds: offsets,\n Encode: encode\n };\n }\n }\n function cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n var shading, hash;\n if (!box) {\n var a = [isRadial].concat(coords);\n stops.forEach(function (x) {\n a.push(x.offset, x.color.r, x.color.g, x.color.b);\n });\n hash = makeHash(a);\n shading = pdf.GRAD_COL[hash];\n }\n if (!shading) {\n shading = new PDFDictionary({\n Type: _('Shading'),\n ShadingType: isRadial ? 3 : 2,\n ColorSpace: _('DeviceRGB'),\n Coords: coords,\n Domain: [\n 0,\n 1\n ],\n Function: funcs,\n Extend: [\n true,\n true\n ]\n });\n pdf.attach(shading);\n shading._resourceName = 'S' + ++RESOURCE_COUNTER;\n if (hash) {\n pdf.GRAD_COL[hash] = shading;\n }\n }\n return shading;\n }\n function cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n var opacity, hash;\n if (!box) {\n var a = [isRadial].concat(coords);\n stops.forEach(function (x) {\n a.push(x.offset, x.color.a);\n });\n hash = makeHash(a);\n opacity = pdf.GRAD_OPC[hash];\n }\n if (!opacity) {\n opacity = new PDFDictionary({\n Type: _('ExtGState'),\n AIS: false,\n CA: 1,\n ca: 1,\n SMask: {\n Type: _('Mask'),\n S: _('Luminosity'),\n G: pdf.attach(new PDFStream('/a0 gs /s0 sh', {\n Type: _('XObject'),\n Subtype: _('Form'),\n FormType: 1,\n BBox: box ? [\n box.left,\n box.top + box.height,\n box.left + box.width,\n box.top\n ] : [\n 0,\n 1,\n 1,\n 0\n ],\n Group: {\n Type: _('Group'),\n S: _('Transparency'),\n CS: _('DeviceGray'),\n I: true\n },\n Resources: {\n ExtGState: {\n a0: {\n CA: 1,\n ca: 1\n }\n },\n Shading: {\n s0: {\n ColorSpace: _('DeviceGray'),\n Coords: coords,\n Domain: [\n 0,\n 1\n ],\n ShadingType: isRadial ? 3 : 2,\n Function: funcs,\n Extend: [\n true,\n true\n ]\n }\n }\n }\n }))\n }\n });\n pdf.attach(opacity);\n opacity._resourceName = 'O' + ++RESOURCE_COUNTER;\n if (hash) {\n pdf.GRAD_OPC[hash] = opacity;\n }\n }\n return opacity;\n }\n function cacheGradient(pdf, gradient, box) {\n var isRadial = gradient.type == 'radial';\n var funcs = makeGradientFunctions(pdf, gradient.stops);\n var coords = isRadial ? [\n gradient.start.x,\n gradient.start.y,\n gradient.start.r,\n gradient.end.x,\n gradient.end.y,\n gradient.end.r\n ] : [\n gradient.start.x,\n gradient.start.y,\n gradient.end.x,\n gradient.end.y\n ];\n var shading = cacheColorGradient(pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box);\n var opacity = funcs.hasAlpha ? cacheOpacityGradient(pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box) : null;\n return {\n hasAlpha: funcs.hasAlpha,\n shading: shading,\n opacity: opacity\n };\n }\n var PDFPage = function (PDFDictionary) {\n function PDFPage(pdf, props) {\n PDFDictionary.call(this, props);\n this._pdf = pdf;\n this._rcount = 0;\n this._textMode = false;\n this._fontResources = {};\n this._gsResources = {};\n this._xResources = {};\n this._patResources = {};\n this._shResources = {};\n this._opacity = 1;\n this._matrix = [\n 1,\n 0,\n 0,\n 1,\n 0,\n 0\n ];\n this._annotations = [];\n this._font = null;\n this._fontSize = null;\n this._contextStack = [];\n props = this.props;\n props.Type = _('Page');\n props.ProcSet = [\n _('PDF'),\n _('Text'),\n _('ImageB'),\n _('ImageC'),\n _('ImageI')\n ];\n props.Resources = new PDFDictionary({\n Font: new PDFDictionary(this._fontResources),\n ExtGState: new PDFDictionary(this._gsResources),\n XObject: new PDFDictionary(this._xResources),\n Pattern: new PDFDictionary(this._patResources),\n Shading: new PDFDictionary(this._shResources)\n });\n props.Annots = this._annotations;\n }\n extendStatic(PDFPage, PDFDictionary);\n PDFPage.prototype = Object.create(PDFDictionary && PDFDictionary.prototype);\n PDFPage.prototype.constructor = PDFPage;\n PDFPage.fn = PDFPage.prototype;\n PDFPage.fn.init = PDFPage.fn.constructor;\n PDFPage.prototype._out = function _out() {\n this._content.data.apply(null, arguments);\n };\n PDFPage.prototype.transform = function transform(a, b, c, d, e, f) {\n if (!isIdentityMatrix(arguments)) {\n this._matrix = mmul(arguments, this._matrix);\n this._out(a, ' ', b, ' ', c, ' ', d, ' ', e, ' ', f, ' cm');\n this._out(NL);\n }\n };\n PDFPage.prototype.translate = function translate(dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n };\n PDFPage.prototype.scale = function scale(sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n };\n PDFPage.prototype.rotate = function rotate(angle) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n };\n PDFPage.prototype.beginText = function beginText() {\n this._textMode = true;\n this._out('BT', NL);\n };\n PDFPage.prototype.endText = function endText() {\n this._textMode = false;\n this._out('ET', NL);\n };\n PDFPage.prototype._requireTextMode = function _requireTextMode() {\n if (!this._textMode) {\n throw new Error('Text mode required; call page.beginText() first');\n }\n };\n PDFPage.prototype._requireFont = function _requireFont() {\n if (!this._font) {\n throw new Error('No font selected; call page.setFont() first');\n }\n };\n PDFPage.prototype.setFont = function setFont(font, size) {\n this._requireTextMode();\n if (font == null) {\n font = this._font;\n } else if (!(font instanceof PDFFont)) {\n font = this._pdf.getFont(font);\n }\n if (size == null) {\n size = this._fontSize;\n }\n this._fontResources[font._resourceName] = font;\n this._font = font;\n this._fontSize = size;\n this._out(font._resourceName, ' ', size, ' Tf', NL);\n };\n PDFPage.prototype.setTextLeading = function setTextLeading(size) {\n this._requireTextMode();\n this._out(size, ' TL', NL);\n };\n PDFPage.prototype.setTextRenderingMode = function setTextRenderingMode(mode) {\n this._requireTextMode();\n this._out(mode, ' Tr', NL);\n };\n PDFPage.prototype.showText = function showText(text, requestedWidth) {\n this._requireFont();\n if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n var outputWidth = this._font.getTextWidth(this._fontSize, text);\n var scale = requestedWidth / outputWidth * 100;\n this._out(scale, ' Tz ');\n }\n this._out(this._font.encodeText(text), ' Tj', NL);\n };\n PDFPage.prototype.showTextNL = function showTextNL(text) {\n this._requireFont();\n this._out(this._font.encodeText(text), ' \\'', NL);\n };\n PDFPage.prototype.addLink = function addLink(uri, box) {\n var ll = this._toPage({\n x: box.left,\n y: box.bottom\n });\n var ur = this._toPage({\n x: box.right,\n y: box.top\n });\n this._annotations.push(new PDFDictionary({\n Type: _('Annot'),\n Subtype: _('Link'),\n Rect: [\n ll.x,\n ll.y,\n ur.x,\n ur.y\n ],\n Border: [\n 0,\n 0,\n 0\n ],\n A: new PDFDictionary({\n Type: _('Action'),\n S: _('URI'),\n URI: new PDFString(uri)\n })\n }));\n };\n PDFPage.prototype.setStrokeColor = function setStrokeColor(r, g, b) {\n this._out(r, ' ', g, ' ', b, ' RG', NL);\n };\n PDFPage.prototype.setOpacity = function setOpacity(opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n };\n PDFPage.prototype.setStrokeOpacity = function setStrokeOpacity(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, ' gs', NL);\n }\n };\n PDFPage.prototype.setFillColor = function setFillColor(r, g, b) {\n this._out(r, ' ', g, ' ', b, ' rg', NL);\n };\n PDFPage.prototype.setFillOpacity = function setFillOpacity(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, ' gs', NL);\n }\n };\n PDFPage.prototype.gradient = function gradient(gradient, box) {\n this.save();\n this.rect(box.left, box.top, box.width, box.height);\n this.clip();\n if (!gradient.userSpace) {\n this.transform(box.width, 0, 0, box.height, box.left, box.top);\n }\n var g = cacheGradient(this._pdf, gradient, box);\n var sname = g.shading._resourceName, oname;\n this._shResources[sname] = g.shading;\n if (g.hasAlpha) {\n oname = g.opacity._resourceName;\n this._gsResources[oname] = g.opacity;\n this._out('/' + oname + ' gs ');\n }\n this._out('/' + sname + ' sh', NL);\n this.restore();\n };\n PDFPage.prototype.setDashPattern = function setDashPattern(dashArray, dashPhase) {\n this._out(dashArray, ' ', dashPhase, ' d', NL);\n };\n PDFPage.prototype.setLineWidth = function setLineWidth(width) {\n this._out(width, ' w', NL);\n };\n PDFPage.prototype.setLineCap = function setLineCap(lineCap) {\n this._out(lineCap, ' J', NL);\n };\n PDFPage.prototype.setLineJoin = function setLineJoin(lineJoin) {\n this._out(lineJoin, ' j', NL);\n };\n PDFPage.prototype.setMitterLimit = function setMitterLimit(mitterLimit) {\n this._out(mitterLimit, ' M', NL);\n };\n PDFPage.prototype.save = function save() {\n this._contextStack.push(this._context());\n this._out('q', NL);\n };\n PDFPage.prototype.restore = function restore() {\n this._out('Q', NL);\n this._context(this._contextStack.pop());\n };\n PDFPage.prototype.moveTo = function moveTo(x, y) {\n this._out(x, ' ', y, ' m', NL);\n };\n PDFPage.prototype.lineTo = function lineTo(x, y) {\n this._out(x, ' ', y, ' l', NL);\n };\n PDFPage.prototype.bezier = function bezier(x1, y1, x2, y2, x3, y3) {\n this._out(x1, ' ', y1, ' ', x2, ' ', y2, ' ', x3, ' ', y3, ' c', NL);\n };\n PDFPage.prototype.bezier1 = function bezier1(x1, y1, x3, y3) {\n this._out(x1, ' ', y1, ' ', x3, ' ', y3, ' y', NL);\n };\n PDFPage.prototype.bezier2 = function bezier2(x2, y2, x3, y3) {\n this._out(x2, ' ', y2, ' ', x3, ' ', y3, ' v', NL);\n };\n PDFPage.prototype.close = function close() {\n this._out('h', NL);\n };\n PDFPage.prototype.rect = function rect(x, y, w, h) {\n this._out(x, ' ', y, ' ', w, ' ', h, ' re', NL);\n };\n PDFPage.prototype.ellipse = function ellipse(x, y, rx, ry) {\n function _X(v) {\n return x + v;\n }\n function _Y(v) {\n return y + v;\n }\n var k = 0.5522847498307936;\n this.moveTo(_X(0), _Y(ry));\n this.bezier(_X(rx * k), _Y(ry), _X(rx), _Y(ry * k), _X(rx), _Y(0));\n this.bezier(_X(rx), _Y(-ry * k), _X(rx * k), _Y(-ry), _X(0), _Y(-ry));\n this.bezier(_X(-rx * k), _Y(-ry), _X(-rx), _Y(-ry * k), _X(-rx), _Y(0));\n this.bezier(_X(-rx), _Y(ry * k), _X(-rx * k), _Y(ry), _X(0), _Y(ry));\n };\n PDFPage.prototype.circle = function circle(x, y, r) {\n this.ellipse(x, y, r, r);\n };\n PDFPage.prototype.stroke = function stroke() {\n this._out('S', NL);\n };\n PDFPage.prototype.nop = function nop() {\n this._out('n', NL);\n };\n PDFPage.prototype.clip = function clip() {\n this._out('W n', NL);\n };\n PDFPage.prototype.clipStroke = function clipStroke() {\n this._out('W S', NL);\n };\n PDFPage.prototype.closeStroke = function closeStroke() {\n this._out('s', NL);\n };\n PDFPage.prototype.fill = function fill() {\n this._out('f', NL);\n };\n PDFPage.prototype.fillStroke = function fillStroke() {\n this._out('B', NL);\n };\n PDFPage.prototype.drawImage = function drawImage(url) {\n var img = this._pdf.getImage(url);\n if (img) {\n this._xResources[img._resourceName] = img;\n this._out(img._resourceName, ' Do', NL);\n }\n };\n PDFPage.prototype.comment = function comment(txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function (line) {\n self._out('% ', line, NL);\n });\n };\n PDFPage.prototype._context = function _context(val) {\n if (val != null) {\n this._opacity = val.opacity;\n this._matrix = val.matrix;\n } else {\n return {\n opacity: this._opacity,\n matrix: this._matrix\n };\n }\n };\n PDFPage.prototype._toPage = function _toPage(p) {\n var m = this._matrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n return {\n x: a * p.x + c * p.y + e,\n y: b * p.x + d * p.y + f\n };\n };\n return PDFPage;\n }(PDFDictionary);\n function unquote(str) {\n return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, '$2');\n }\n function parseFontDef(fontdef) {\n var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n var m = rx.exec(fontdef);\n if (!m) {\n return {\n fontSize: 12,\n fontFamily: 'sans-serif'\n };\n }\n var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n return {\n italic: m[2] && m[2].toLowerCase() == 'italic',\n variant: m[4],\n bold: m[6] && /bold|700/i.test(m[6]),\n fontSize: fontSize,\n lineHeight: m[12] ? m[12] == 'normal' ? fontSize : parseInt(m[12], 10) : null,\n fontFamily: m[14].split(/\\s*,\\s*/g).map(unquote)\n };\n }\n function getFontURL(style) {\n function mkFamily(name) {\n if (style.bold) {\n name += '|bold';\n }\n if (style.italic) {\n name += '|italic';\n }\n return name.toLowerCase();\n }\n var fontFamily = style.fontFamily;\n var name, url;\n if (fontFamily instanceof Array) {\n for (var i = 0; i < fontFamily.length; ++i) {\n name = mkFamily(fontFamily[i]);\n url = FONT_MAPPINGS[name];\n if (url) {\n break;\n }\n }\n } else {\n url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n }\n while (typeof url == 'function') {\n url = url();\n }\n if (!url) {\n url = 'Times-Roman';\n }\n return url;\n }\n var FONT_MAPPINGS = {\n 'serif': 'Times-Roman',\n 'serif|bold': 'Times-Bold',\n 'serif|italic': 'Times-Italic',\n 'serif|bold|italic': 'Times-BoldItalic',\n 'sans-serif': 'Helvetica',\n 'sans-serif|bold': 'Helvetica-Bold',\n 'sans-serif|italic': 'Helvetica-Oblique',\n 'sans-serif|bold|italic': 'Helvetica-BoldOblique',\n 'monospace': 'Courier',\n 'monospace|bold': 'Courier-Bold',\n 'monospace|italic': 'Courier-Oblique',\n 'monospace|bold|italic': 'Courier-BoldOblique',\n 'zapfdingbats': 'ZapfDingbats',\n 'zapfdingbats|bold': 'ZapfDingbats',\n 'zapfdingbats|italic': 'ZapfDingbats',\n 'zapfdingbats|bold|italic': 'ZapfDingbats'\n };\n function fontAlias(alias, name) {\n alias = alias.toLowerCase();\n FONT_MAPPINGS[alias] = function () {\n return FONT_MAPPINGS[name];\n };\n FONT_MAPPINGS[alias + '|bold'] = function () {\n return FONT_MAPPINGS[name + '|bold'];\n };\n FONT_MAPPINGS[alias + '|italic'] = function () {\n return FONT_MAPPINGS[name + '|italic'];\n };\n FONT_MAPPINGS[alias + '|bold|italic'] = function () {\n return FONT_MAPPINGS[name + '|bold|italic'];\n };\n }\n fontAlias('Times New Roman', 'serif');\n fontAlias('Courier New', 'monospace');\n fontAlias('Arial', 'sans-serif');\n fontAlias('Helvetica', 'sans-serif');\n fontAlias('Verdana', 'sans-serif');\n fontAlias('Tahoma', 'sans-serif');\n fontAlias('Georgia', 'sans-serif');\n fontAlias('Monaco', 'monospace');\n fontAlias('Andale Mono', 'monospace');\n function defineFont(name, url) {\n if (arguments.length == 1) {\n for (var i in name) {\n if (hasOwnProperty(name, i)) {\n defineFont(i, name[i]);\n }\n }\n } else {\n name = name.toLowerCase();\n FONT_MAPPINGS[name] = url;\n switch (name) {\n case 'dejavu sans':\n FONT_MAPPINGS['sans-serif'] = url;\n break;\n case 'dejavu sans|bold':\n FONT_MAPPINGS['sans-serif|bold'] = url;\n break;\n case 'dejavu sans|italic':\n FONT_MAPPINGS['sans-serif|italic'] = url;\n break;\n case 'dejavu sans|bold|italic':\n FONT_MAPPINGS['sans-serif|bold|italic'] = url;\n break;\n case 'dejavu serif':\n FONT_MAPPINGS['serif'] = url;\n break;\n case 'dejavu serif|bold':\n FONT_MAPPINGS['serif|bold'] = url;\n break;\n case 'dejavu serif|italic':\n FONT_MAPPINGS['serif|italic'] = url;\n break;\n case 'dejavu serif|bold|italic':\n FONT_MAPPINGS['serif|bold|italic'] = url;\n break;\n case 'dejavu mono':\n FONT_MAPPINGS['monospace'] = url;\n break;\n case 'dejavu mono|bold':\n FONT_MAPPINGS['monospace|bold'] = url;\n break;\n case 'dejavu mono|italic':\n FONT_MAPPINGS['monospace|italic'] = url;\n break;\n case 'dejavu mono|bold|italic':\n FONT_MAPPINGS['monospace|bold|italic'] = url;\n break;\n }\n }\n }\n function mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1 * a2 + b1 * c2,\n a1 * b2 + b1 * d2,\n c1 * a2 + d1 * c2,\n c1 * b2 + d1 * d2,\n e1 * a2 + f1 * c2 + e2,\n e1 * b2 + f1 * d2 + f2\n ];\n }\n function isIdentityMatrix(m) {\n return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n }\n var TEXT_RENDERING_MODE = {\n fill: 0,\n stroke: 1,\n fillAndStroke: 2,\n invisible: 3,\n fillAndClip: 4,\n strokeAndClip: 5,\n fillStrokeClip: 6,\n clip: 7\n };\n var TEXT_RENDERING_MODE$1 = TEXT_RENDERING_MODE;\n var DASH_PATTERNS = {\n dash: [4],\n dashDot: [\n 4,\n 2,\n 1,\n 2\n ],\n dot: [\n 1,\n 2\n ],\n longDash: [\n 8,\n 2\n ],\n longDashDot: [\n 8,\n 2,\n 1,\n 2\n ],\n longDashDotDot: [\n 8,\n 2,\n 1,\n 2,\n 1,\n 2\n ],\n solid: []\n };\n var LINE_CAP = {\n butt: 0,\n round: 1,\n square: 2\n };\n var LINE_JOIN = {\n miter: 0,\n round: 1,\n bevel: 2\n };\n function render$1(group, callback) {\n var fonts = [], images = {}, options = group.options;\n function getOption(name, defval, hash) {\n if (!hash) {\n hash = options;\n }\n if (hash.pdf && hash.pdf[name] != null) {\n return hash.pdf[name];\n }\n return defval;\n }\n var multiPage = getOption('multiPage');\n var imgDPI = getOption('imgDPI');\n if (imgDPI) {\n clearImageCache();\n }\n group.traverse(function (element) {\n dispatch({\n Image: function (element) {\n var url = element.src();\n if (imgDPI) {\n var box = element.bbox().size;\n var prev = images[url];\n box = {\n width: Math.ceil(box.width * imgDPI / 72),\n height: Math.ceil(box.height * imgDPI / 72)\n };\n if (prev) {\n box.width = Math.max(prev.width, box.width);\n box.height = Math.max(prev.height, box.height);\n }\n images[url] = box;\n } else {\n images[url] = null;\n }\n },\n Text: function (element) {\n var style = parseFontDef(element.options.font);\n var url = getFontURL(style);\n if (fonts.indexOf(url) < 0) {\n fonts.push(url);\n }\n }\n }, element);\n });\n function doIt() {\n if (--count > 0) {\n return;\n }\n var pdf = new PDFDocument({\n producer: getOption('producer'),\n title: getOption('title'),\n author: getOption('author'),\n subject: getOption('subject'),\n keywords: getOption('keywords'),\n creator: getOption('creator'),\n date: getOption('date'),\n autoPrint: getOption('autoPrint')\n });\n function drawPage(group) {\n var options = group.options;\n var tmp = optimize(group);\n var bbox = tmp.bbox;\n group = tmp.root;\n var paperSize = getOption('paperSize', getOption('paperSize', 'auto'), options), addMargin = false;\n if (paperSize == 'auto') {\n if (bbox) {\n var size = bbox.getSize();\n paperSize = [\n size.width,\n size.height\n ];\n addMargin = true;\n var origin = bbox.getOrigin();\n tmp = new drawing.Group();\n tmp.transform(new kendoGeometry.Matrix(1, 0, 0, 1, -origin.x, -origin.y));\n tmp.append(group);\n group = tmp;\n } else {\n paperSize = 'A4';\n }\n }\n var page;\n page = pdf.addPage({\n paperSize: paperSize,\n margin: getOption('margin', getOption('margin'), options),\n addMargin: addMargin,\n landscape: getOption('landscape', getOption('landscape', false), options)\n });\n drawElement(group, page, pdf);\n }\n if (multiPage) {\n group.children.forEach(drawPage);\n } else {\n drawPage(group);\n }\n callback(pdf.render(), pdf);\n }\n var count = 2;\n loadFonts(fonts, doIt);\n loadImages(images, doIt, {\n jpegQuality: getOption('jpegQuality', 0.92),\n keepPNG: getOption('keepPNG', false)\n });\n }\n function toDataURL(group, callback) {\n render$1(group, function (data) {\n callback('data:application/pdf;base64,' + data.base64());\n });\n }\n function toBlob(group, callback) {\n render$1(group, function (data) {\n callback(new window.Blob([data.get()], { type: 'application/pdf' }));\n });\n }\n function saveAs$1(group, filename, proxy, callback) {\n if (window.Blob && !supportBrowser.safari) {\n toBlob(group, function (blob) {\n kendo.saveAs({\n dataURI: blob,\n fileName: filename\n });\n if (callback) {\n callback(blob);\n }\n });\n } else {\n toDataURL(group, function (dataURL) {\n kendo.saveAs({\n dataURI: dataURL,\n fileName: filename,\n proxyURL: proxy\n });\n if (callback) {\n callback(dataURL);\n }\n });\n }\n }\n function dispatch(handlers, element) {\n var handler = handlers[element.nodeType];\n if (handler) {\n return handler.call.apply(handler, arguments);\n }\n return element;\n }\n function drawElement(element, page, pdf) {\n if (element.options._pdfDebug) {\n page.comment('BEGIN: ' + element.options._pdfDebug);\n }\n var transform = element.transform();\n var opacity = element.opacity();\n page.save();\n if (opacity != null && opacity < 1) {\n page.setOpacity(opacity);\n }\n setStrokeOptions(element, page, pdf);\n setFillOptions(element, page, pdf);\n if (transform) {\n var m = transform.matrix();\n page.transform(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n setClipping(element, page, pdf);\n dispatch({\n Path: drawPath,\n MultiPath: drawMultiPath,\n Circle: drawCircle,\n Arc: drawArc,\n Text: drawText,\n Image: drawImage$1,\n Group: drawGroup,\n Rect: drawRect\n }, element, page, pdf);\n page.restore();\n if (element.options._pdfDebug) {\n page.comment('END: ' + element.options._pdfDebug);\n }\n }\n function setStrokeOptions(element, page) {\n var stroke = element.stroke && element.stroke();\n if (!stroke) {\n return;\n }\n var color = stroke.color;\n if (color) {\n color = parseColor$1(color);\n if (color == null) {\n return;\n }\n page.setStrokeColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setStrokeOpacity(color.a);\n }\n }\n var width = stroke.width;\n if (width != null) {\n if (width === 0) {\n return;\n }\n page.setLineWidth(width);\n }\n var dashType = stroke.dashType;\n if (dashType) {\n page.setDashPattern(DASH_PATTERNS[dashType], 0);\n }\n var lineCap = stroke.lineCap;\n if (lineCap) {\n page.setLineCap(LINE_CAP[lineCap]);\n }\n var lineJoin = stroke.lineJoin;\n if (lineJoin) {\n page.setLineJoin(LINE_JOIN[lineJoin]);\n }\n var opacity = stroke.opacity;\n if (opacity != null) {\n page.setStrokeOpacity(opacity);\n }\n }\n function setFillOptions(element, page) {\n var fill = element.fill && element.fill();\n if (!fill) {\n return;\n }\n if (fill instanceof drawing.Gradient) {\n return;\n }\n var color = fill.color;\n if (color) {\n color = parseColor$1(color);\n if (color == null) {\n return;\n }\n page.setFillColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setFillOpacity(color.a);\n }\n }\n var opacity = fill.opacity;\n if (opacity != null) {\n page.setFillOpacity(opacity);\n }\n }\n function setClipping(element, page, pdf) {\n var clip = element.clip();\n if (clip) {\n _drawPath(clip, page, pdf);\n page.clip();\n }\n }\n function shouldDraw(thing) {\n return thing && (thing instanceof drawing.Gradient || thing.color && !/^(none|transparent)$/i.test(thing.color) && (thing.width == null || thing.width > 0) && (thing.opacity == null || thing.opacity > 0));\n }\n function maybeGradient(element, page, pdf, stroke) {\n var fill = element.fill();\n if (fill instanceof drawing.Gradient) {\n if (stroke) {\n page.clipStroke();\n } else {\n page.clip();\n }\n var isRadial = fill instanceof drawing.RadialGradient;\n var start, end;\n if (isRadial) {\n start = {\n x: fill.center().x,\n y: fill.center().y,\n r: 0\n };\n end = {\n x: fill.center().x,\n y: fill.center().y,\n r: fill.radius()\n };\n } else {\n start = {\n x: fill.start().x,\n y: fill.start().y\n };\n end = {\n x: fill.end().x,\n y: fill.end().y\n };\n }\n var stops = fill.stops.elements().map(function (stop) {\n var offset = stop.offset();\n if (/%$/.test(offset)) {\n offset = parseFloat(offset) / 100;\n } else {\n offset = parseFloat(offset);\n }\n var color = parseColor$1(stop.color());\n color.a *= stop.opacity();\n return {\n offset: offset,\n color: color\n };\n });\n stops.unshift(stops[0]);\n stops.push(stops[stops.length - 1]);\n var gradient = {\n userSpace: fill.userSpace(),\n type: isRadial ? 'radial' : 'linear',\n start: start,\n end: end,\n stops: stops\n };\n var box = element.rawBBox();\n var tl = box.topLeft(), size = box.getSize();\n box = {\n left: tl.x,\n top: tl.y,\n width: size.width,\n height: size.height\n };\n page.gradient(gradient, box);\n return true;\n }\n }\n function maybeFillStroke(element, page, pdf) {\n if (shouldDraw(element.fill()) && shouldDraw(element.stroke())) {\n if (!maybeGradient(element, page, pdf, true)) {\n page.fillStroke();\n }\n } else if (shouldDraw(element.fill())) {\n if (!maybeGradient(element, page, pdf, false)) {\n page.fill();\n }\n } else if (shouldDraw(element.stroke())) {\n page.stroke();\n } else {\n page.nop();\n }\n }\n function maybeDrawRect(path, page) {\n var segments = path.segments;\n if (segments.length == 4 && path.options.closed) {\n var a = [];\n for (var i = 0; i < segments.length; ++i) {\n if (segments[i].controlIn()) {\n return false;\n }\n a[i] = segments[i].anchor();\n }\n var isRect = a[0].y == a[1].y && a[1].x == a[2].x && a[2].y == a[3].y && a[3].x == a[0].x || a[0].x == a[1].x && a[1].y == a[2].y && a[2].x == a[3].x && a[3].y == a[0].y;\n if (isRect) {\n page.rect(a[0].x, a[0].y, a[2].x - a[0].x, a[2].y - a[0].y);\n return true;\n }\n }\n }\n function _drawPath(element, page, pdf) {\n var segments = element.segments;\n if (segments.length === 0) {\n return;\n }\n if (!maybeDrawRect(element, page, pdf)) {\n for (var prev, i = 0; i < segments.length; ++i) {\n var seg = segments[i];\n var anchor = seg.anchor();\n if (!prev) {\n page.moveTo(anchor.x, anchor.y);\n } else {\n var prevOut = prev.controlOut();\n var controlIn = seg.controlIn();\n if (prevOut && controlIn) {\n page.bezier(prevOut.x, prevOut.y, controlIn.x, controlIn.y, anchor.x, anchor.y);\n } else {\n page.lineTo(anchor.x, anchor.y);\n }\n }\n prev = seg;\n }\n if (element.options.closed) {\n page.close();\n }\n }\n }\n function drawPath(element, page, pdf) {\n _drawPath(element, page, pdf);\n maybeFillStroke(element, page, pdf);\n }\n function drawMultiPath(element, page, pdf) {\n var paths = element.paths;\n for (var i = 0; i < paths.length; ++i) {\n _drawPath(paths[i], page, pdf);\n }\n maybeFillStroke(element, page, pdf);\n }\n function drawCircle(element, page, pdf) {\n var g = element.geometry();\n page.circle(g.center.x, g.center.y, g.radius);\n maybeFillStroke(element, page, pdf);\n }\n function drawArc(element, page, pdf) {\n var points = element.geometry().curvePoints();\n page.moveTo(points[0].x, points[0].y);\n for (var i = 1; i < points.length;) {\n page.bezier(points[i].x, points[i++].y, points[i].x, points[i++].y, points[i].x, points[i++].y);\n }\n maybeFillStroke(element, page, pdf);\n }\n function drawText(element, page) {\n var style = parseFontDef(element.options.font);\n var pos = element._position;\n var mode;\n if (element.fill() && element.stroke()) {\n mode = TEXT_RENDERING_MODE$1.fillAndStroke;\n } else if (element.fill()) {\n mode = TEXT_RENDERING_MODE$1.fill;\n } else if (element.stroke()) {\n mode = TEXT_RENDERING_MODE$1.stroke;\n }\n page.transform(1, 0, 0, -1, pos.x, pos.y + style.fontSize);\n page.beginText();\n page.setFont(getFontURL(style), style.fontSize);\n page.setTextRenderingMode(mode);\n page.showText(element.content(), element._pdfRect ? element._pdfRect.width() : null);\n page.endText();\n }\n function drawGroup(element, page, pdf) {\n if (element._pdfLink) {\n page.addLink(element._pdfLink.url, element._pdfLink);\n }\n var children = element.children;\n for (var i = 0; i < children.length; ++i) {\n drawElement(children[i], page, pdf);\n }\n }\n function drawImage$1(element, page) {\n var url = element.src();\n if (!url) {\n return;\n }\n var rect = element.rect();\n var tl = rect.getOrigin();\n var sz = rect.getSize();\n page.transform(sz.width, 0, 0, -sz.height, tl.x, tl.y + sz.height);\n page.drawImage(url);\n }\n function drawRect(element, page, pdf) {\n var geometry = element.geometry();\n page.rect(geometry.origin.x, geometry.origin.y, geometry.size.width, geometry.size.height);\n maybeFillStroke(element, page, pdf);\n }\n function parseColor$1(value) {\n var color = kendo.parseColor(value, true);\n return color ? color.toRGB() : null;\n }\n function optimize(root) {\n var clipbox = false;\n var matrix = kendoGeometry.Matrix.unit();\n var currentBox = null;\n var changed;\n do {\n changed = false;\n root = opt(root);\n } while (root && changed);\n return {\n root: root,\n bbox: currentBox\n };\n function change(newShape) {\n changed = true;\n return newShape;\n }\n function visible(shape) {\n return shape.visible() && shape.opacity() > 0 && (shouldDraw(shape.fill()) || shouldDraw(shape.stroke()));\n }\n function optArray(a) {\n var b = [];\n for (var i = 0; i < a.length; ++i) {\n var el = opt(a[i]);\n if (el != null) {\n b.push(el);\n }\n }\n return b;\n }\n function withClipping(shape, f) {\n var saveclipbox = clipbox;\n var savematrix = matrix;\n if (shape.transform()) {\n matrix = matrix.multiplyCopy(shape.transform().matrix());\n }\n var clip = shape.clip();\n if (clip) {\n clip = clip.bbox();\n if (clip) {\n clip = clip.bbox(matrix);\n clipbox = clipbox ? kendoGeometry.Rect.intersect(clipbox, clip) : clip;\n }\n }\n try {\n return f();\n } finally {\n clipbox = saveclipbox;\n matrix = savematrix;\n }\n }\n function inClipbox(shape) {\n if (clipbox == null) {\n return false;\n }\n var box = shape.rawBBox().bbox(matrix);\n if (clipbox && box) {\n box = kendoGeometry.Rect.intersect(box, clipbox);\n }\n return box;\n }\n function opt(shape) {\n return withClipping(shape, function () {\n if (!(shape instanceof drawing.Group || shape instanceof drawing.MultiPath)) {\n var box = inClipbox(shape);\n if (!box) {\n return change(null);\n }\n currentBox = currentBox ? kendoGeometry.Rect.union(currentBox, box) : box;\n }\n return dispatch({\n Path: function (shape) {\n if (shape.segments.length === 0 || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n MultiPath: function (shape) {\n if (!visible(shape)) {\n return change(null);\n }\n var el = new drawing.MultiPath(shape.options);\n el.paths = optArray(shape.paths);\n if (el.paths.length === 0) {\n return change(null);\n }\n return el;\n },\n Circle: function (shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Arc: function (shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Text: function (shape) {\n if (!/\\S/.test(shape.content()) || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Image: function (shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n return shape;\n },\n Group: function (shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n var el = new drawing.Group(shape.options);\n el.children = optArray(shape.children);\n el._pdfLink = shape._pdfLink;\n if (shape !== root && el.children.length === 0 && !shape._pdfLink) {\n return change(null);\n }\n return el;\n },\n Rect: function (shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n }\n }, shape);\n });\n }\n }\n function exportPDF(group, options) {\n var promise = util.createPromise();\n for (var i in options) {\n if (i == 'margin' && group.options.pdf && group.options.pdf._ignoreMargin) {\n continue;\n }\n group.options.set('pdf.' + i, options[i]);\n }\n toDataURL(group, promise.resolve);\n return promise;\n }\n function exportPDFToBlob(group, options) {\n var promise = util.createPromise();\n for (var i in options) {\n if (i == 'margin' && group.options.pdf && group.options.pdf._ignoreMargin) {\n continue;\n }\n group.options.set('pdf.' + i, options[i]);\n }\n if (window.Blob && !supportBrowser.safari) {\n toBlob(group, promise.resolve);\n } else {\n toDataURL(group, promise.resolve);\n }\n return promise;\n }\n kendo.deepExtend(kendo.pdf, {\n Document: PDFDocument,\n BinaryStream: BinaryStream,\n defineFont: defineFont,\n parseFontDef: parseFontDef,\n getFontURL: getFontURL,\n loadFonts: loadFonts,\n loadImages: loadImages,\n getPaperOptions: getPaperOptions,\n clearImageCache: clearImageCache,\n TEXT_RENDERING_MODE: TEXT_RENDERING_MODE,\n exportPDF: exportPDF,\n exportPDFToBlob: exportPDFToBlob,\n saveAs: saveAs$1,\n toDataURL: toDataURL,\n toBlob: toBlob,\n render: render$1\n });\n kendo.drawing.exportPDF = kendo.pdf.exportPDF;\n kendo.drawing.pdf = kendo.pdf;\n }(window.kendo.jQuery));\n return kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('pdf/mixins', ['pdf/core'], f);\n}(function () {\n (function ($, undefined) {\n kendo.PDFMixin = {\n extend: function (proto) {\n proto.events.push('pdfExport');\n proto.options.pdf = this.options;\n proto.saveAsPDF = this.saveAsPDF;\n proto._drawPDF = this._drawPDF;\n proto._drawPDFShadow = this._drawPDFShadow;\n },\n options: {\n fileName: 'Export.pdf',\n proxyURL: '',\n paperSize: 'auto',\n allPages: false,\n landscape: false,\n margin: null,\n title: null,\n author: null,\n subject: null,\n keywords: null,\n creator: 'Kendo UI PDF Generator v.' + kendo.version,\n date: null\n },\n saveAsPDF: function () {\n var progress = new $.Deferred();\n var promise = progress.promise();\n var args = { promise: promise };\n if (this.trigger('pdfExport', args)) {\n return;\n }\n var options = this.options.pdf;\n options.multiPage = options.multiPage || options.allPages;\n this._drawPDF(progress).then(function (root) {\n return kendo.drawing.exportPDF(root, options);\n }).done(function (dataURI) {\n kendo.saveAs({\n dataURI: dataURI,\n fileName: options.fileName,\n proxyURL: options.proxyURL,\n forceProxy: options.forceProxy,\n proxyTarget: options.proxyTarget\n });\n progress.resolve();\n }).fail(function (err) {\n progress.reject(err);\n });\n return promise;\n },\n _drawPDF: function (progress) {\n var promise = new $.Deferred();\n kendo.drawing.drawDOM(this.wrapper).done(function (group) {\n var args = {\n page: group,\n pageNumber: 1,\n progress: 1,\n totalPages: 1\n };\n progress.notify(args);\n promise.resolve(args.page);\n }).fail(function (err) {\n promise.reject(err);\n });\n return promise;\n },\n _drawPDFShadow: function (settings, drawOptions) {\n settings = settings || {};\n var wrapper = this.wrapper;\n var shadow = $('
');\n if (settings.width) {\n shadow.css({\n width: settings.width,\n overflow: 'visible'\n });\n }\n wrapper.before(shadow);\n shadow.append(settings.content || wrapper.clone(true, true));\n var defer = $.Deferred();\n setTimeout(function () {\n var promise = kendo.drawing.drawDOM(shadow, drawOptions);\n promise.always(function () {\n shadow.remove();\n }).then(function () {\n defer.resolve.apply(defer, arguments);\n }).fail(function () {\n defer.reject.apply(defer, arguments);\n }).progress(function () {\n defer.progress.apply(defer, arguments);\n });\n }, 15);\n return defer.promise();\n }\n };\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.pdf', [\n 'kendo.core',\n 'kendo.drawing',\n 'pdf/core',\n 'pdf/mixins'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'pdf',\n name: 'PDF export',\n description: 'PDF Generation framework',\n mixin: true,\n category: 'framework',\n depends: [\n 'core',\n 'drawing'\n ]\n };\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}