{"version":3,"sources":["kendo.pdf.js"],"names":["f","define","defined","value","UNDEFINED","round","precision","power","pow","math","p","limitValue","min","max","rad","degrees","DEG_TO_RAD","deg","radians","isNumber","val","isNaN","valueOrDefault","defaultValue","sqr","objectKey","object","key","parts","push","sort","join","hashKey","str","i","hash","length","charCodeAt","hashObject","arrayLimits","arr","MAX_NUM","MIN_NUM","arrayMin","arrayMax","sparseArrayMin","sparseArrayLimits","sparseArrayMax","n","isFinite","undefined","last","array","append","first","second","apply","renderTemplate","text","kendo","template","useWithBlock","paramName","renderAttr","name","renderAllAttr","attrs","output","renderStyle","renderSize","size","renderPos","pos","result","toHyphens","split","isTransparent","color","arabicToRoman","literals",1,10,100,2,20,200,3,30,300,4,40,400,5,50,500,6,60,600,7,70,700,8,80,800,9,90,900,1000,"values","roman","shift","romanToArabic","r","digits","prev","v","toLowerCase","x","l","c","d","m","charAt","memoize","cache","Object","create","id","arguments","this","ucs2decode","string","extra","counter","ucs2encode","map","String","fromCharCode","Math","window","deepExtend","PI","Number","MAX_VALUE","now","Date","getTime","util","drawing","dataviz","amd","a1","a2","a3","parseFloat","makeOutput","out","num","Error","PDFValue","beforeRender","render","isArray","renderArray","isDate","renderDate","toFixed","indexOf","replace","writeString","test","get","write","PDFDictionary","indentLevel","BinaryStream","writeData","data","withIndent","indent","NL","pad","offset","toString","stream","wrapObject","renderValue","renderFull","_offset","call","getPaperOptions","getOption","options","paperSize","margin","def","PAPER_SIZE","a4","unitsToPoints","left","top","right","bottom","PDFDocument","defval","catalog","pageTree","self","objcount","objects","attach","pages","FONTS","IMAGES","GRAD_COL_FUNCTIONS","GRAD_OPC_FUNCTIONS","GRAD_COL","GRAD_OPC","PDFCatalog","PDFPageTree","setPages","addPage","content","props","page","paperOptions","contentWidth","contentHeight","PDFStream","Contents","Parent","MediaBox","PDFPage","_content","transform","translate","rect","clip","xrefOffset","zeropad","Size","Root","Info","Producer","PDFString","version","Title","Author","Subject","Keywords","Creator","CreationDate","loadBinary","url","cont","error","console","log","req","XMLHttpRequest","open","HAS_TYPED_ARRAYS","responseType","onload","status","Uint8Array","response","VBArray","responseBody","toArray","onerror","send","loadFont","font","FONT_CACHE","pdf","TTFFont","loadImage","_load","img","src","complete","support","browser","msie","_onload","_onerror","IMAGE_CACHE","reader","canvas","ctx","imgdata","hasAlpha","rgb","alpha","rawbytes","a","blob","type","FileReader","PDFJpegImage","width","height","URL","revokeObjectURL","bloburl","readAsArrayBuffer","document","createElement","getContext","drawImage","getImageData","ex","writeByte","PDFRawImage","toDataURL","substr","writeBase64","xhr","Image","crossOrigin","createObjectURL","manyLoader","loadOne","urls","callback","len","ch","hasOwnProperty","obj","prototype","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","mm2pt","mm","cm2pt","cm","in2pt","inch","exec","in","defclass","Ctor","proto","Base","_","PDFName_cache","PDFName","asStream","Type","Subtype","Width","Height","BitsPerComponent","ColorSpace","Filter","_resourceName","RESOURCE_COUNTER","mask","SMask","makeHash","cacheColorGradientFunction","r1","g1","b1","r2","g2","b2","func","FunctionType","Domain","Range","N","C0","C1","cacheOpacityGradientFunction","makeGradientFunctions","stops","assemble","funcs","Functions","Bounds","offsets","Encode","encode","cur","prevColor","curColor","opacities","colors","g","b","pop","cacheColorGradient","isRadial","coords","box","shading","concat","forEach","ShadingType","Coords","Function","Extend","cacheOpacityGradient","opacity","AIS","CA","ca","S","G","FormType","BBox","Group","CS","I","Resources","ExtGState","a0","Shading","s0","cacheGradient","gradient","start","y","end","userSpace","eof","readByte","ensure","readShort","writeShort","w","readShort_","writeShort_","readLong","writeLong","readLong_","writeLong_","readFixed","writeFixed","readFixed_","writeFixed_","read","times","readString","ret","Array","slice","tmp","set","buffer","bytes","skip","nbytes","saveExcursion","base64","atob","BASE64","decode","unquote","parseFontDef","fontdef","fontSize","rx","parseInt","italic","variant","bold","lineHeight","fontFamily","getFontURL","style","mkFamily","FONT_MAPPINGS","fontAlias","alias","defineFont","mmul","c1","d1","e1","f1","c2","d2","e2","f2","isIdentityMatrix","PDFHexString","PDFStandardFont","PDFFont","PDFToUnicodeCmap","keyStr","enc1","enc2","enc3","enc4","chr1","chr2","chr3","input","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","loadFonts","loadImages","getFont","getImage","getOpacityGS","forStroke","gs","_opacityGSCache","dict","txt","esc","escape","empty","compress","pako","deflate","unshift","Length","pagesObj","Pages","Kids","Count","pageObj","BaseFont","encodeText","head","scale","Encoding","_pdf","_font","_sub","makeSubset","psName","bbox","xMin","yMin","xMax","yMax","italicAngle","post","ascent","descent","lineGap","capHeight","os2","xHeight","stemV","familyClass","isSerif","isScript","flags","isFixedPitch","getTextWidth","glyphId","codeMap","cmap","widthOfGlyph","descendant","unimap","unimapStream","sub","fontStream","Length1","descriptor","FontName","FontBBox","Flags","StemV","ItalicAngle","Ascent","Descent","CapHeight","XHeight","FontFile2","ncid2ogid","firstChar","lastChar","charWidths","loop","chunk","gid","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","FirstChar","LastChar","DW","W","CIDToGIDMap","_makeCidToGidMap","DescendantFonts","subset","ToUnicode","cidToGidMap","code","unicode","_rcount","_textMode","_fontResources","_gsResources","_xResources","_patResources","_shResources","_opacity","_matrix","_annotations","_fontSize","_contextStack","ProcSet","Font","XObject","Pattern","Annots","_out","e","dx","dy","sx","sy","rotate","angle","cos","sin","beginText","endText","_requireTextMode","_requireFont","setFont","setTextLeading","setTextRenderingMode","mode","showText","requestedWidth","outputWidth","showTextNL","addLink","uri","ll","_toPage","ur","Rect","Border","A","URI","setStrokeColor","setOpacity","setFillOpacity","setStrokeOpacity","setFillColor","sname","oname","save","restore","setDashPattern","dashArray","dashPhase","setLineWidth","setLineCap","lineCap","setLineJoin","lineJoin","setMitterLimit","mitterLimit","_context","moveTo","lineTo","bezier","x1","y1","x2","y2","x3","y3","bezier1","bezier2","close","h","ellipse","ry","_X","_Y","k","circle","stroke","nop","clipStroke","closeStroke","fill","fillStroke","comment","line","matrix","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","Document","TEXT_RENDERING_MODE","fillAndStroke","invisible","fillAndClip","strokeAndClip","fillStrokeClip","sortedKeys","keys","Directory","tables","entry","raw","scalerType","tableCount","searchRange","entrySelector","rangeShift","tag","checksum","deftable","methods","file","definition","rawData","parse","nextSubsetTag","subsetTag","Subfont","unicodes","ogid2ngid",0,"ngid2ogid","next","nextGid","numFonts","contents","HeadTable","LocaTable","HheaTable","MaxpTable","HmtxTable","GlyfTable","NameTable","PostTable","CmapTable","OS2Table","PDF","readTable","table","directoryLength","headOffset","tableData","sum","adjustment","maxpow2","floor","LN2","revision","checkSumAdjustment","magicNumber","unitsPerEm","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","format","offsetOf","lengthOf","needsLongFormat","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","SimpleGlyph","CompoundGlyph","idOffsets","MORE_COMPONENTS","ARG_1_AND_2_ARE_WORDS","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_SCALE","compound","old2new","glyphFor","loca","numberOfContours","glyph","glyphs","oldIds","NameEntry","platformID","platformSpecificID","languageID","nameID","count","stringOffset","nameRecords","strings","rec","postscriptEntry","postscriptName","strTable","list","j","strCount","POSTSCRIPT_GLYPHS","numberOfGlyphs","limit","underlinePosition","underlineThickness","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","names","index","mapping","indexes","CmapEntry","segCount","endCode","startCode","idDelta","idRangeOffset","ngroups","endCharCode","glyphCode","language","renderCharmap","new_gid","charcode","delta","segCountX2","deltas","rangeOffsets","startGlyph","codes","startCodes","endCodes","diff","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","panose","charRange","vendorID","selection","firstCharIndex","lastCharIndex","winAscent","winDescent","codePageRange","defaultChar","breakChar","maxContext","use","old_gid","reduce","glyphsFor","glyf","new_gid_ids","old_gid_ids","hmtx","OS/2","directory","cid","$","zeroSize","baseline","measureText","measureBox","TextMetrics","current","measure","fonts","promises","load","logToConsole","Promise","all","then","doc","Class","LRUCache","extend","init","_size","_length","_map","put","lru","_head","_tail","newer","older","defaultMeasureBox","_cache","_initOptions","baselineMarkerSize","styleKey","cacheKey","cachedResult","baselineMarker","_baselineMarker","cloneNode","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","jQuery","encodeBase64","encodeUTF8","KEY_STR","inArray","ObserversMixin","observers","_observers","addObserver","element","removeObserver","splice","trigger","methodName","event","observer","idx","_suspended","optionsChange","geometryChange","suspend","resume","_observerField","field","mixins","group","doIt","drawPage","addMargin","origin","optimize","root","getSize","getOrigin","geo","Matrix","landscape","drawElement","producer","title","author","subject","keywords","creator","multiPage","children","images","traverse","dispatch","Text","toBlob","Blob","saveAs","filename","proxy","safari","dataURI","fileName","dataURL","proxyURL","handlers","handler","nodeType","_pdfDebug","setStrokeOptions","setFillOptions","setClipping","Path","drawPath","MultiPath","drawMultiPath","Circle","drawCircle","Arc","drawArc","drawText","drawGroup","drawRect","dashType","parseColor","DASH_PATTERNS","LINE_CAP","LINE_JOIN","Gradient","_drawPath","shouldDraw","thing","maybeGradient","tl","RadialGradient","center","radius","elements","stop","rawBBox","topLeft","maybeFillStroke","maybeDrawRect","path","isRect","segments","closed","controlIn","anchor","seg","prevOut","controlOut","paths","geometry","points","curvePoints","_position","_pdfRect","_pdfLink","sz","exportPDF","defer","Deferred","_ignoreMargin","resolve","promise","toRGB","change","newShape","changed","visible","shape","optArray","el","opt","withClipping","saveclipbox","clipbox","savematrix","multiplyCopy","intersect","inClipbox","currentBox","union","unit","dash","dashDot","dot","longDash","longDashDot","longDashDotDot","solid","butt","square","miter","bevel","toStream","PDFMixin","events","saveAsPDF","_drawPDF","_drawPDFShadow","allPages","progress","args","done","forceProxy","proxyTarget","fail","err","reject","drawDOM","wrapper","pageNumber","totalPages","notify","settings","drawOptions","shadow","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/main', ['kendo.core'], f);\n}(function () {\n (function () {\n var math = Math, kendo = window.kendo, deepExtend = kendo.deepExtend;\n var DEG_TO_RAD = math.PI / 180, MAX_NUM = Number.MAX_VALUE, MIN_NUM = -Number.MAX_VALUE, UNDEFINED = 'undefined';\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n function round(value, precision) {\n var power = pow(precision);\n return math.round(value * power) / power;\n }\n function pow(p) {\n if (p) {\n return math.pow(10, p);\n } else {\n return 1;\n }\n }\n function limitValue(value, min, max) {\n return math.max(math.min(value, max), min);\n }\n function rad(degrees) {\n return degrees * DEG_TO_RAD;\n }\n function deg(radians) {\n return radians / DEG_TO_RAD;\n }\n function isNumber(val) {\n return typeof val === 'number' && !isNaN(val);\n }\n function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n }\n function sqr(value) {\n return value * value;\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 hashObject(object) {\n return hashKey(objectKey(object));\n }\n var now = Date.now;\n if (!now) {\n now = function () {\n return new Date().getTime();\n };\n }\n function arrayLimits(arr) {\n var length = arr.length, i, min = MAX_NUM, max = MIN_NUM;\n for (i = 0; i < length; i++) {\n max = math.max(max, arr[i]);\n min = math.min(min, arr[i]);\n }\n return {\n min: min,\n max: max\n };\n }\n function arrayMin(arr) {\n return arrayLimits(arr).min;\n }\n function arrayMax(arr) {\n return arrayLimits(arr).max;\n }\n function sparseArrayMin(arr) {\n return sparseArrayLimits(arr).min;\n }\n function sparseArrayMax(arr) {\n return sparseArrayLimits(arr).max;\n }\n function sparseArrayLimits(arr) {\n var min = MAX_NUM, max = MIN_NUM;\n for (var i = 0, length = arr.length; i < length; i++) {\n var n = arr[i];\n if (n !== null && isFinite(n)) {\n min = math.min(min, n);\n max = math.max(max, n);\n }\n }\n return {\n min: min === MAX_NUM ? undefined : min,\n max: max === MIN_NUM ? undefined : max\n };\n }\n function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n }\n function append(first, second) {\n first.push.apply(first, second);\n return first;\n }\n function renderTemplate(text) {\n return kendo.template(text, {\n useWithBlock: false,\n paramName: 'd'\n });\n }\n function renderAttr(name, value) {\n return defined(value) && value !== null ? ' ' + name + '=\\'' + value + '\\' ' : '';\n }\n function renderAllAttr(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n return output;\n }\n function renderStyle(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + ':' + value + ';';\n }\n }\n if (output !== '') {\n return output;\n }\n }\n function renderSize(size) {\n if (typeof size !== 'string') {\n size += 'px';\n }\n return size;\n }\n function renderPos(pos) {\n var result = [];\n if (pos) {\n var parts = kendo.toHyphens(pos).split('-');\n for (var i = 0; i < parts.length; i++) {\n result.push('k-pos-' + parts[i]);\n }\n }\n return result.join(' ');\n }\n function isTransparent(color) {\n return color === '' || color === null || color === 'none' || color === 'transparent' || !defined(color);\n }\n function arabicToRoman(n) {\n var literals = {\n 1: 'i',\n 10: 'x',\n 100: 'c',\n 2: 'ii',\n 20: 'xx',\n 200: 'cc',\n 3: 'iii',\n 30: 'xxx',\n 300: 'ccc',\n 4: 'iv',\n 40: 'xl',\n 400: 'cd',\n 5: 'v',\n 50: 'l',\n 500: 'd',\n 6: 'vi',\n 60: 'lx',\n 600: 'dc',\n 7: 'vii',\n 70: 'lxx',\n 700: 'dcc',\n 8: 'viii',\n 80: 'lxxx',\n 800: 'dccc',\n 9: 'ix',\n 90: 'xc',\n 900: 'cm',\n 1000: 'm'\n };\n var values = [\n 1000,\n 900,\n 800,\n 700,\n 600,\n 500,\n 400,\n 300,\n 200,\n 100,\n 90,\n 80,\n 70,\n 60,\n 50,\n 40,\n 30,\n 20,\n 10,\n 9,\n 8,\n 7,\n 6,\n 5,\n 4,\n 3,\n 2,\n 1\n ];\n var roman = '';\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n }\n function romanToArabic(r) {\n r = r.toLowerCase();\n var digits = {\n i: 1,\n v: 5,\n x: 10,\n l: 50,\n c: 100,\n d: 500,\n m: 1000\n };\n var value = 0, prev = 0;\n for (var i = 0; i < r.length; ++i) {\n var v = digits[r.charAt(i)];\n if (!v) {\n return null;\n }\n value += v;\n if (v > prev) {\n value -= 2 * prev;\n }\n prev = v;\n }\n return value;\n }\n function memoize(f) {\n var cache = Object.create(null);\n return function () {\n var id = '';\n for (var i = arguments.length; --i >= 0;) {\n id += ':' + arguments[i];\n }\n if (id in cache) {\n return cache[id];\n }\n return f.apply(this, arguments);\n };\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 deepExtend(kendo, {\n util: {\n MAX_NUM: MAX_NUM,\n MIN_NUM: MIN_NUM,\n append: append,\n arrayLimits: arrayLimits,\n arrayMin: arrayMin,\n arrayMax: arrayMax,\n defined: defined,\n deg: deg,\n hashKey: hashKey,\n hashObject: hashObject,\n isNumber: isNumber,\n isTransparent: isTransparent,\n last: last,\n limitValue: limitValue,\n now: now,\n objectKey: objectKey,\n round: round,\n rad: rad,\n renderAttr: renderAttr,\n renderAllAttr: renderAllAttr,\n renderPos: renderPos,\n renderSize: renderSize,\n renderStyle: renderStyle,\n renderTemplate: renderTemplate,\n sparseArrayLimits: sparseArrayLimits,\n sparseArrayMin: sparseArrayMin,\n sparseArrayMax: sparseArrayMax,\n sqr: sqr,\n valueOrDefault: valueOrDefault,\n romanToArabic: romanToArabic,\n arabicToRoman: arabicToRoman,\n memoize: memoize,\n ucs2encode: ucs2encode,\n ucs2decode: ucs2decode\n }\n });\n kendo.drawing.util = kendo.util;\n kendo.dataviz.util = kendo.util;\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 'kendo.core',\n 'util/main'\n ], f);\n}(function () {\n (function (window, parseFloat, undefined) {\n 'use strict';\n var kendo = window.kendo;\n var HAS_TYPED_ARRAYS = !!window.Uint8Array;\n var NL = '\\n';\n var RESOURCE_COUNTER = 0;\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 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 for (var i = 0; i < arguments.length; ++i) {\n var x = arguments[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(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 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 catalog.setPages(pageTree);\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: new PDFDictionary({\n Producer: new PDFString(getOption('producer', 'Kendo UI PDF Generator v.' + kendo.version)),\n Title: new PDFString(getOption('title', '')),\n Author: new PDFString(getOption('author', '')),\n Subject: new PDFString(getOption('subject', '')),\n Keywords: new PDFString(getOption('keywords', '')),\n Creator: new PDFString(getOption('creator', 'Kendo UI PDF Generator v.' + kendo.version)),\n CreationDate: getOption('date', new Date())\n })\n }), NL, NL);\n out('startxref', NL, xrefOffset, NL);\n out('%%EOF', NL);\n return out.stream().offset(0);\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 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 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 kendo.pdf.TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n }\n var IMAGE_CACHE = {};\n function loadImage(url, cont) {\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 && !kendo.support.browser.msie) {\n _onload();\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n function _onerror() {\n cont(IMAGE_CACHE[url] = 'TAINTED');\n }\n function _onload() {\n if (blob && /^image\\/jpe?g$/i.test(blob.type)) {\n var reader = new FileReader();\n reader.onload = function () {\n img = new PDFJpegImage(img.width, img.height, BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n };\n reader.readAsArrayBuffer(blob);\n return;\n }\n var canvas = document.createElement('canvas');\n canvas.width = img.width;\n canvas.height = img.height;\n var ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0);\n var imgdata;\n try {\n imgdata = ctx.getImageData(0, 0, img.width, img.height);\n } catch (ex) {\n return _onerror();\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) {\n img = new PDFRawImage(img.width, img.height, rgb, alpha);\n } else {\n var data = canvas.toDataURL('image/jpeg');\n data = data.substr(data.indexOf(';base64,') + 8);\n var stream = BinaryStream();\n stream.writeBase64(data);\n stream.offset(0);\n img = new PDFJpegImage(img.width, img.height, stream);\n }\n cont(IMAGE_CACHE[url] = img);\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 while (i-- > 0) {\n loadOne(urls[i], function () {\n if (--n === 0) {\n callback();\n }\n });\n }\n };\n }\n var loadFonts = manyLoader(loadFont);\n var loadImages = manyLoader(loadImage);\n PDFDocument.prototype = {\n loadFonts: loadFonts,\n loadImages: loadImages,\n getFont: function (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 getImage: function (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 === 'TAINTED') {\n return null;\n }\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n return img;\n },\n getOpacityGS: function (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 dict: function (props) {\n return new PDFDictionary(props);\n },\n name: function (str) {\n return _(str);\n },\n stream: function (props, content) {\n return new PDFStream(content, props);\n }\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(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 function PDFValue() {\n }\n PDFValue.prototype.beforeRender = function () {\n };\n function defclass(Ctor, proto, Base) {\n if (!Base) {\n Base = PDFValue;\n }\n Ctor.prototype = new Base();\n for (var i in proto) {\n if (hasOwnProperty(proto, i)) {\n Ctor.prototype[i] = proto[i];\n }\n }\n return Ctor;\n }\n var PDFString = defclass(function PDFString(value) {\n this.value = value;\n }, {\n render: function (out) {\n var txt = '', esc = this.escape();\n for (var i = 0; i < esc.length; ++i) {\n txt += String.fromCharCode(esc.charCodeAt(i) & 255);\n }\n out('(', txt, ')');\n },\n escape: function () {\n return this.value.replace(/([\\(\\)\\\\])/g, '\\\\$1');\n },\n toString: function () {\n return this.value;\n }\n });\n var PDFHexString = defclass(function PDFHexString(value) {\n this.value = value;\n }, {\n render: function (out) {\n out('<');\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this.value.charCodeAt(i).toString(16), 4));\n }\n out('>');\n }\n }, PDFString);\n var PDFName = defclass(function PDFName(name) {\n this.name = name;\n }, {\n render: function (out) {\n out('/' + this.escape());\n },\n escape: function () {\n return this.name.replace(/[^\\x21-\\x7E]/g, function (c) {\n return '#' + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n },\n toString: function () {\n return this.name;\n }\n });\n var PDFName_cache = {};\n PDFName.get = _;\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 = defclass(function PDFDictionary(props) {\n this.props = props;\n }, {\n render: function (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 });\n var PDFStream = defclass(function PDFStream(data, props, compress) {\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 render: function (out) {\n var data = this.data.get(), props = this.props;\n if (this.compress && window.pako && typeof window.pako.deflate == 'function') {\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 = window.pako.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 });\n var PDFCatalog = defclass(function PDFCatalog(props) {\n props = this.props = props || {};\n props.Type = _('Catalog');\n }, {\n setPages: function (pagesObj) {\n this.props.Pages = pagesObj;\n }\n }, PDFDictionary);\n var PDFPageTree = defclass(function PDFPageTree() {\n this.props = {\n Type: _('Pages'),\n Kids: [],\n Count: 0\n };\n }, {\n addPage: function (pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n }\n }, PDFDictionary);\n function PDFJpegImage(width, height, data) {\n this.asStream = function () {\n var stream = new PDFStream(data, {\n Type: _('XObject'),\n Subtype: _('Image'),\n Width: width,\n Height: height,\n BitsPerComponent: 8,\n ColorSpace: _('DeviceRGB'),\n Filter: _('DCTDecode')\n });\n stream._resourceName = _('I' + ++RESOURCE_COUNTER);\n return stream;\n };\n }\n 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 = defclass(function PDFStandardFont(name) {\n this.props = {\n Type: _('Font'),\n Subtype: _('Type1'),\n BaseFont: _(name)\n };\n this._resourceName = _('F' + ++RESOURCE_COUNTER);\n }, {\n encodeText: function (str) {\n return new PDFString(str + '');\n }\n }, PDFDictionary);\n var PDFFont = defclass(function PDFFont(pdf, font, props) {\n props = this.props = 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 encodeText: function (text) {\n return new PDFHexString(this._sub.encodeText(text + ''));\n },\n getTextWidth: function (fontSize, text) {\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._font.widthOfGlyph(glyphId || 0);\n }\n return width * fontSize / 1000;\n },\n beforeRender: function () {\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 _makeCidToGidMap: function () {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n }\n }, PDFDictionary);\n var PDFToUnicodeCmap = defclass(function PDFUnicodeCMap(firstChar, lastChar, map) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n }, {\n render: function (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 = kendo.util.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 });\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 = defclass(function PDFPage(pdf, 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 = 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 _out: function () {\n this._content.data.apply(null, arguments);\n },\n transform: function (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 translate: function (dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n },\n scale: function (sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n },\n rotate: function (angle) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n },\n beginText: function () {\n this._textMode = true;\n this._out('BT', NL);\n },\n endText: function () {\n this._textMode = false;\n this._out('ET', NL);\n },\n _requireTextMode: function () {\n if (!this._textMode) {\n throw new Error('Text mode required; call page.beginText() first');\n }\n },\n _requireFont: function () {\n if (!this._font) {\n throw new Error('No font selected; call page.setFont() first');\n }\n },\n setFont: function (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 setTextLeading: function (size) {\n this._requireTextMode();\n this._out(size, ' TL', NL);\n },\n setTextRenderingMode: function (mode) {\n this._requireTextMode();\n this._out(mode, ' Tr', NL);\n },\n showText: function (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 showTextNL: function (text) {\n this._requireFont();\n this._out(this._font.encodeText(text), ' \\'', NL);\n },\n addLink: function (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 setStrokeColor: function (r, g, b) {\n this._out(r, ' ', g, ' ', b, ' RG', NL);\n },\n setOpacity: function (opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n },\n setStrokeOpacity: function (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 setFillColor: function (r, g, b) {\n this._out(r, ' ', g, ' ', b, ' rg', NL);\n },\n setFillOpacity: function (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 gradient: function (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 setDashPattern: function (dashArray, dashPhase) {\n this._out(dashArray, ' ', dashPhase, ' d', NL);\n },\n setLineWidth: function (width) {\n this._out(width, ' w', NL);\n },\n setLineCap: function (lineCap) {\n this._out(lineCap, ' J', NL);\n },\n setLineJoin: function (lineJoin) {\n this._out(lineJoin, ' j', NL);\n },\n setMitterLimit: function (mitterLimit) {\n this._out(mitterLimit, ' M', NL);\n },\n save: function () {\n this._contextStack.push(this._context());\n this._out('q', NL);\n },\n restore: function () {\n this._out('Q', NL);\n this._context(this._contextStack.pop());\n },\n moveTo: function (x, y) {\n this._out(x, ' ', y, ' m', NL);\n },\n lineTo: function (x, y) {\n this._out(x, ' ', y, ' l', NL);\n },\n bezier: function (x1, y1, x2, y2, x3, y3) {\n this._out(x1, ' ', y1, ' ', x2, ' ', y2, ' ', x3, ' ', y3, ' c', NL);\n },\n bezier1: function (x1, y1, x3, y3) {\n this._out(x1, ' ', y1, ' ', x3, ' ', y3, ' y', NL);\n },\n bezier2: function (x2, y2, x3, y3) {\n this._out(x2, ' ', y2, ' ', x3, ' ', y3, ' v', NL);\n },\n close: function () {\n this._out('h', NL);\n },\n rect: function (x, y, w, h) {\n this._out(x, ' ', y, ' ', w, ' ', h, ' re', NL);\n },\n ellipse: function (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 circle: function (x, y, r) {\n this.ellipse(x, y, r, r);\n },\n stroke: function () {\n this._out('S', NL);\n },\n nop: function () {\n this._out('n', NL);\n },\n clip: function () {\n this._out('W n', NL);\n },\n clipStroke: function () {\n this._out('W S', NL);\n },\n closeStroke: function () {\n this._out('s', NL);\n },\n fill: function () {\n this._out('f', NL);\n },\n fillStroke: function () {\n this._out('B', NL);\n },\n drawImage: function (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 comment: function (txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function (line) {\n self._out('% ', line, NL);\n });\n },\n _context: function (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 _toPage: function (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 }, PDFDictionary);\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 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 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 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 };\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 }(window, parseFloat));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('pdf/ttf', [\n 'pdf/core',\n 'util/main'\n ], f);\n}(function () {\n (function (window) {\n 'use strict';\n function hasOwnProperty(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 PDF = window.kendo.pdf;\n var BinaryStream = PDF.BinaryStream;\n 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 = {\n readTable: function (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 render: function (tables) {\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(tables, tag)) {\n var table = tables[tag];\n out.writeString(tag);\n out.writeLong(this.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 checksum: function (data) {\n data = BinaryStream(data);\n var sum = 0;\n while (!data.eof()) {\n sum += data.readLong();\n }\n return sum & 4294967295;\n }\n };\n function deftable(methods) {\n function Ctor(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 Ctor.prototype.raw = function () {\n return this.rawData.slice(this.offset, this.length);\n };\n for (var i in methods) {\n if (hasOwnProperty(methods, i)) {\n Ctor[i] = Ctor.prototype[i] = methods[i];\n }\n }\n return Ctor;\n }\n var HeadTable = deftable({\n parse: function (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 render: function (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 });\n var LocaTable = deftable({\n parse: function (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 offsetOf: function (id) {\n return this.offsets[id];\n },\n lengthOf: function (id) {\n return this.offsets[id + 1] - this.offsets[id];\n },\n render: function (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 });\n var HheaTable = deftable({\n parse: function (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 render: function (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 });\n var MaxpTable = deftable({\n parse: function (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 render: function (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 });\n var HmtxTable = deftable({\n parse: function (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 forGlyph: function (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 render: function (glyphIds) {\n var out = BinaryStream();\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n return out.get();\n }\n });\n var GlyfTable = function () {\n function SimpleGlyph(raw) {\n this.raw = raw;\n }\n SimpleGlyph.prototype = {\n compound: false,\n render: function () {\n return this.raw.get();\n }\n };\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 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 CompoundGlyph.prototype = {\n compound: true,\n render: function (old2new) {\n var out = BinaryStream(this.raw.get());\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this.glyphIds[i];\n out.offset(this.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n return out.get();\n }\n };\n return deftable({\n parse: function () {\n this.cache = {};\n },\n glyphFor: function (id) {\n var cache = this.cache;\n if (hasOwnProperty(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 == -1 ? 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 render: function (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 offsets.push(out.offset());\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n }\n });\n }();\n var NameTable = function () {\n 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 deftable({\n parse: function (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 render: function (psName) {\n var strings = this.strings;\n var strCount = 0;\n for (var i in strings) {\n if (hasOwnProperty(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(strings, i)) {\n var list = i == 6 ? [new NameEntry(psName, this.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 });\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 deftable({\n parse: function (data) {\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.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 glyphFor: function (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 render: function (mapping) {\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.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 });\n }();\n var CmapTable = function () {\n 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 deftable({\n parse: function (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 render: function (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 });\n }();\n var OS2Table = deftable({\n parse: function (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 render: function () {\n return this.raw();\n }\n });\n var subsetTag = 100000;\n function nextSubsetTag() {\n var ret = '', n = 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 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 = {\n use: function (ch) {\n var self = this;\n if (typeof ch == 'string') {\n return kendo.util.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 encodeText: function (text) {\n return this.use(text);\n },\n glyphIds: function () {\n return sortedKeys(this.ogid2ngid);\n },\n glyphsFor: function (glyphIds, result) {\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.font.glyf.glyphFor(id);\n if (glyph && glyph.compound) {\n this.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n return result;\n },\n render: function () {\n var glyphs = this.glyphsFor(this.glyphIds());\n for (var old_gid in glyphs) {\n if (hasOwnProperty(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n if (this.ogid2ngid[old_gid] == null) {\n var new_gid = this.nextGid++;\n this.ogid2ngid[old_gid] = new_gid;\n this.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 cidToGidMap: function () {\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.ncid2ogid[cid];\n if (old_gid) {\n var new_gid = this.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n len++;\n }\n return out.get();\n }\n };\n function TTFFont(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n if (data.readString(4) == 'ttcf') {\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 var offset = data.readLong();\n data.saveExcursion(function () {\n data.offset(offset);\n self.parse();\n });\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 = {\n parse: function () {\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 widthOfGlyph: function (glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n },\n makeSubset: function () {\n return new Subfont(this);\n }\n };\n PDF.TTFFont = TTFFont;\n }(window));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('util/text-metrics', [\n 'kendo.core',\n 'util/main'\n ], f);\n}(function () {\n (function ($) {\n var doc = document, kendo = window.kendo, Class = kendo.Class, util = kendo.util, defined = util.defined;\n var LRUCache = 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 lru = this, map = lru._map, entry = {\n key: key,\n value: value\n };\n map[key] = entry;\n if (!lru._head) {\n lru._head = lru._tail = entry;\n } else {\n lru._tail.newer = entry;\n entry.older = lru._tail;\n lru._tail = entry;\n }\n if (lru._length >= lru._size) {\n map[lru._head.key] = null;\n lru._head = lru._head.newer;\n lru._head.older = null;\n } else {\n lru._length++;\n }\n },\n get: function (key) {\n var lru = this, entry = lru._map[key];\n if (entry) {\n if (entry === lru._head && entry !== lru._tail) {\n lru._head = entry.newer;\n lru._head.older = null;\n }\n if (entry !== lru._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = lru._tail;\n entry.newer = null;\n lru._tail.newer = entry;\n lru._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var defaultMeasureBox = $('