2017-03-05 01:44:52 +00:00
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
2017-03-28 22:07:46 +00:00
! function ( e ) { if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = e ( ) ; else if ( "function" == typeof define && define . amd ) { JSZip = e ( ) ; define ( [ ] , e ) } else { var f ; "undefined" != typeof window ? f = window : "undefined" != typeof global ? f = global : "undefined" != typeof $ && $ . global ? f = $ . global : "undefined" != typeof self && ( f = self ) , f . JSZip = e ( ) } } ( function ( ) { var define , module , exports ; return function e ( t , n , r ) { function s ( o , u ) { if ( ! n [ o ] ) { if ( ! t [ o ] ) { var a = typeof require == "function" && require ; if ( ! u && a ) return a ( o , ! 0 ) ; if ( i ) return i ( o , ! 0 ) ; throw new Error ( "Cannot find module '" + o + "'" ) } var f = n [ o ] = { exports : { } } ; t [ o ] [ 0 ] . call ( f . exports , function ( e ) { var n = t [ o ] [ 1 ] [ e ] ; return s ( n ? n : e ) } , f , f . exports , e , t , n , r ) } return n [ o ] . exports } var i = typeof require == "function" && require ; for ( var o = 0 ; o < r . length ; o ++ ) s ( r [ o ] ) ; return s } ( { 1 : [ function ( _dereq _ , module , exports ) { "use strict" ; var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" ; exports . encode = function ( input , utf8 ) { var output = "" ; var chr1 , chr2 , chr3 , enc1 , enc2 , enc3 , enc4 ; var i = 0 ; while ( i < input . length ) { chr1 = input . charCodeAt ( i ++ ) ; chr2 = input . charCodeAt ( i ++ ) ; chr3 = input . charCodeAt ( i ++ ) ; enc1 = chr1 >> 2 ; enc2 = ( chr1 & 3 ) << 4 | chr2 >> 4 ; enc3 = ( chr2 & 15 ) << 2 | chr3 >> 6 ; enc4 = chr3 & 63 ; if ( isNaN ( chr2 ) ) { enc3 = enc4 = 64 } else if ( isNaN ( chr3 ) ) { enc4 = 64 } output = output + _keyStr . charAt ( enc1 ) + _keyStr . charAt ( enc2 ) + _keyStr . charAt ( enc3 ) + _keyStr . charAt ( enc4 ) } return output } ; exports . decode = function ( input , utf8 ) { var output = "" ; var chr1 , chr2 , chr3 ; var enc1 , enc2 , enc3 , enc4 ; var i = 0 ; input = input . replace ( /[^A-Za-z0-9\+\/\=]/g , "" ) ; while ( i < input . length ) { enc1 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc2 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc3 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; enc4 = _keyStr . indexOf ( input . charAt ( i ++ ) ) ; chr1 = enc1 << 2 | enc2 >> 4 ; chr2 = ( enc2 & 15 ) << 4 | enc3 >> 2 ; chr3 = ( enc3 & 3 ) << 6 | enc4 ; output = output + String . fromCharCode ( chr1 ) ; if ( enc3 != 64 ) { output = output + String . fromCharCode ( chr2 ) } if ( enc4 != 64 ) { output = output + String . fromCharCode ( chr3 ) } } return output } } , { } ] , 2 : [ function ( _dereq _ , module , exports ) { "use strict" ; function CompressedObject ( ) { this . compressedSize = 0 ; this . uncompressedSize = 0 ; this . crc32 = 0 ; this . compressionMethod = null ; this . compressedContent = null } CompressedObject . prototype = { getContent : function ( ) { return null } , getCompressedContent : function ( ) { return null } } ; module . exports = CompressedObject } , { } ] , 3 : [ function ( _dereq _ , module , exports ) { "use strict" ; exports . STORE = { magic : "\0\0" , compress : function ( content ) { return content } , uncompress : function ( content ) { return content } , compressInputType : null , uncompressInputType : null } ; exports . DEFLATE = _dereq _ ( "./flate" ) } , { "./flate" : 8 } ] , 4 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "./utils" ) ; var table = [ 0 , 1996959894 , 3993919788 , 2567524794 , 124634137 , 1886057615 , 3915621685 , 2657392035 , 249268274 , 2044508324 , 3772115230 , 2547177864 , 162941995 , 2125561021 , 3887607047 , 2428444049 , 498536548 , 1789927666 , 4089016648 , 2227061214 , 450548861 , 1843258603 , 4107580753 , 2211677639 , 325883990 , 1684777152 , 4251122042 , 2321926636 , 335633487 , 1661365465 , 4195302755 , 2366115317 , 997073096 , 1281953886 , 3579855332 , 2724688242 , 1006888145 , 1258607687 , 3524101629 , 2768942443 , 901097722 , 1119000684 , 3686517206 , 2898065728 , 853044451 , 1172266101 , 3705015759 , 2882616665 , 651767980 , 1373503546 , 3369554304 , 3218104598 , 565507253 , 1454621731 , 3485111705 , 3099436303 , 671266974 , 1594198024 , 3322730930 , 2970347812 , 795835527 , 1483230225 , 3244367275 , 3060149565 , 1994146192 , 31158534 , 2563907772 , 4023717930 , 1907459465 , 112637215 , 2680153253 , 3904427059 , 2013776290 , 251722036 , 2517215374 , 3775830040 , 2137656763 , 141376813 , 2439277719 , 3865271297 , 1802195444 , 476864866 , 2238001368 , 4066508878 , 1812370925 , 453092731 , 2181625025 , 4111451223 , 1706088902 , 314042704 , 2344532202 , 4240017532 , 1658658271 , 366619977 , 2362670323 , 4224994405 , 1303535960 , 984961486 , 2747007092 , 3569037538 , 1256170817 , 1037604311 , 2765210733 , 3554079995 , 1131014506 , 879679996 , 2909243462 , 3663771856 , 1141124467 , 855842277 , 2852801631 , 3708648649 , 1342533948 , 654459306 , 3188396048 , 3373015174 , 1466479909 , 544179635 , 3110523913 , 3462522015 , 1591671054 , 702138776 , 2966460450 , 3352799412 , 1504918807 , 783551873 , 3082640443 , 3233442989 , 3988292384 , 2596254646 , 62317068 , 1957810842 , 3939845945 , 2647816111 , 81470997 , 1943803523 , 3814918930 , 2489596804 , 2
} return res } ; exports . findCompression = function ( compressionMethod ) { for ( var method in compressions ) { if ( ! compressions . hasOwnProperty ( method ) ) { continue } if ( compressions [ method ] . magic === compressionMethod ) { return compressions [ method ] } } return null } ; exports . isRegExp = function ( object ) { return Object . prototype . toString . call ( object ) === "[object RegExp]" } } , { "./compressions" : 3 , "./nodeBuffer" : 11 , "./support" : 17 } ] , 22 : [ function ( _dereq _ , module , exports ) { "use strict" ; var StringReader = _dereq _ ( "./stringReader" ) ; var NodeBufferReader = _dereq _ ( "./nodeBufferReader" ) ; var Uint8ArrayReader = _dereq _ ( "./uint8ArrayReader" ) ; var utils = _dereq _ ( "./utils" ) ; var sig = _dereq _ ( "./signature" ) ; var ZipEntry = _dereq _ ( "./zipEntry" ) ; var support = _dereq _ ( "./support" ) ; var jszipProto = _dereq _ ( "./object" ) ; function ZipEntries ( data , loadOptions ) { this . files = [ ] ; this . loadOptions = loadOptions ; if ( data ) { this . load ( data ) } } ZipEntries . prototype = { checkSignature : function ( expectedSignature ) { var signature = this . reader . readString ( 4 ) ; if ( signature !== expectedSignature ) { throw new Error ( "Corrupted zip or bug : unexpected signature " + "(" + utils . pretty ( signature ) + ", expected " + utils . pretty ( expectedSignature ) + ")" ) } } , readBlockEndOfCentral : function ( ) { this . diskNumber = this . reader . readInt ( 2 ) ; this . diskWithCentralDirStart = this . reader . readInt ( 2 ) ; this . centralDirRecordsOnThisDisk = this . reader . readInt ( 2 ) ; this . centralDirRecords = this . reader . readInt ( 2 ) ; this . centralDirSize = this . reader . readInt ( 4 ) ; this . centralDirOffset = this . reader . readInt ( 4 ) ; this . zipCommentLength = this . reader . readInt ( 2 ) ; this . zipComment = this . reader . readString ( this . zipCommentLength ) ; this . zipComment = jszipProto . utf8decode ( this . zipComment ) } , readBlockZip64EndOfCentral : function ( ) { this . zip64EndOfCentralSize = this . reader . readInt ( 8 ) ; this . versionMadeBy = this . reader . readString ( 2 ) ; this . versionNeeded = this . reader . readInt ( 2 ) ; this . diskNumber = this . reader . readInt ( 4 ) ; this . diskWithCentralDirStart = this . reader . readInt ( 4 ) ; this . centralDirRecordsOnThisDisk = this . reader . readInt ( 8 ) ; this . centralDirRecords = this . reader . readInt ( 8 ) ; this . centralDirSize = this . reader . readInt ( 8 ) ; this . centralDirOffset = this . reader . readInt ( 8 ) ; this . zip64ExtensibleData = { } ; var extraDataSize = this . zip64EndOfCentralSize - 44 , index = 0 , extraFieldId , extraFieldLength , extraFieldValue ; while ( index < extraDataSize ) { extraFieldId = this . reader . readInt ( 2 ) ; extraFieldLength = this . reader . readInt ( 4 ) ; extraFieldValue = this . reader . readString ( extraFieldLength ) ; this . zip64ExtensibleData [ extraFieldId ] = { id : extraFieldId , length : extraFieldLength , value : extraFieldValue } } } , readBlockZip64EndOfCentralLocator : function ( ) { this . diskWithZip64CentralDirStart = this . reader . readInt ( 4 ) ; this . relativeOffsetEndOfZip64CentralDir = this . reader . readInt ( 8 ) ; this . disksCount = this . reader . readInt ( 4 ) ; if ( this . disksCount > 1 ) { throw new Error ( "Multi-volumes zip are not supported" ) } } , readLocalFiles : function ( ) { var i , file ; for ( i = 0 ; i < this . files . length ; i ++ ) { file = this . files [ i ] ; this . reader . setIndex ( file . localHeaderOffset ) ; this . checkSignature ( sig . LOCAL _FILE _HEADER ) ; file . readLocalPart ( this . reader ) ; file . handleUTF8 ( ) } } , readCentralDir : function ( ) { var file ; this . reader . setIndex ( this . centralDirOffset ) ; while ( this . reader . readString ( 4 ) === sig . CENTRAL _FILE _HEADER ) { file = new ZipEntry ( { zip64 : this . zip64 } , this . loadOptions ) ; file . readCentralPart ( this . reader ) ; this . files . push ( file ) } } , readEndOfCentral : function ( ) { var offset = this . reader . lastIndexOfSignature ( sig . CENTRAL _DIRECTORY _END ) ; if ( offset === - 1 ) { throw new Error ( "Corrupted zip : can't find end of central directory" ) } this . reader . setIndex ( offset ) ; this . checkSignature ( sig . CENTRAL _DIRECTORY _END ) ; this . readBlockEndOfCentral ( ) ; if ( this . diskNumber === utils . MAX _VALUE _16BITS || this . diskWithCentralDirStart === utils . MAX _VALUE _16BITS || this . centralDirRecordsOnThisDisk === utils . MAX _VALUE _16BITS || this . centralDirRecords === utils . MAX _VALUE _16BITS || this . centralDirSize === utils . MAX _VALUE _32BITS || this . centralDirOffset === utils . MAX _VALUE _32BITS ) { this . zip64 = true ; offset = this . reader . lastIndexOfSignature ( sig . ZIP64 _CENTRAL _DIRECTORY _LOCATOR ) ; if ( offset === - 1 ) { throw new Error ( "Corrupted zip : can't find the ZIP64 end of central directory locator" ) } this . reader . setIndex ( offset ) ; this . checkSignature ( sig . ZIP64 _CENTRAL _D
var bflush ; for ( ; ; ) { if ( s . lookahead === 0 ) { fill _window ( s ) ; if ( s . lookahead === 0 ) { if ( flush === Z _NO _FLUSH ) { return BS _NEED _MORE } break } } s . match _length = 0 ; bflush = trees . _tr _tally ( s , 0 , s . window [ s . strstart ] ) ; s . lookahead -- ; s . strstart ++ ; if ( bflush ) { flush _block _only ( s , false ) ; if ( s . strm . avail _out === 0 ) { return BS _NEED _MORE } } } s . insert = 0 ; if ( flush === Z _FINISH ) { flush _block _only ( s , true ) ; if ( s . strm . avail _out === 0 ) { return BS _FINISH _STARTED } return BS _FINISH _DONE } if ( s . last _lit ) { flush _block _only ( s , false ) ; if ( s . strm . avail _out === 0 ) { return BS _NEED _MORE } } return BS _BLOCK _DONE } var Config = function ( good _length , max _lazy , nice _length , max _chain , func ) { this . good _length = good _length ; this . max _lazy = max _lazy ; this . nice _length = nice _length ; this . max _chain = max _chain ; this . func = func } ; var configuration _table ; configuration _table = [ new Config ( 0 , 0 , 0 , 0 , deflate _stored ) , new Config ( 4 , 4 , 8 , 4 , deflate _fast ) , new Config ( 4 , 5 , 16 , 8 , deflate _fast ) , new Config ( 4 , 6 , 32 , 32 , deflate _fast ) , new Config ( 4 , 4 , 16 , 16 , deflate _slow ) , new Config ( 8 , 16 , 32 , 32 , deflate _slow ) , new Config ( 8 , 16 , 128 , 128 , deflate _slow ) , new Config ( 8 , 32 , 128 , 256 , deflate _slow ) , new Config ( 32 , 128 , 258 , 1024 , deflate _slow ) , new Config ( 32 , 258 , 258 , 4096 , deflate _slow ) ] ; function lm _init ( s ) { s . window _size = 2 * s . w _size ; zero ( s . head ) ; s . max _lazy _match = configuration _table [ s . level ] . max _lazy ; s . good _match = configuration _table [ s . level ] . good _length ; s . nice _match = configuration _table [ s . level ] . nice _length ; s . max _chain _length = configuration _table [ s . level ] . max _chain ; s . strstart = 0 ; s . block _start = 0 ; s . lookahead = 0 ; s . insert = 0 ; s . match _length = s . prev _length = MIN _MATCH - 1 ; s . match _available = 0 ; s . ins _h = 0 } function DeflateState ( ) { this . strm = null ; this . status = 0 ; this . pending _buf = null ; this . pending _buf _size = 0 ; this . pending _out = 0 ; this . pending = 0 ; this . wrap = 0 ; this . gzhead = null ; this . gzindex = 0 ; this . method = Z _DEFLATED ; this . last _flush = - 1 ; this . w _size = 0 ; this . w _bits = 0 ; this . w _mask = 0 ; this . window = null ; this . window _size = 0 ; this . prev = null ; this . head = null ; this . ins _h = 0 ; this . hash _size = 0 ; this . hash _bits = 0 ; this . hash _mask = 0 ; this . hash _shift = 0 ; this . block _start = 0 ; this . match _length = 0 ; this . prev _match = 0 ; this . match _available = 0 ; this . strstart = 0 ; this . match _start = 0 ; this . lookahead = 0 ; this . prev _length = 0 ; this . max _chain _length = 0 ; this . max _lazy _match = 0 ; this . level = 0 ; this . strategy = 0 ; this . good _match = 0 ; this . nice _match = 0 ; this . dyn _ltree = new utils . Buf16 ( HEAP _SIZE * 2 ) ; this . dyn _dtree = new utils . Buf16 ( ( 2 * D _CODES + 1 ) * 2 ) ; this . bl _tree = new utils . Buf16 ( ( 2 * BL _CODES + 1 ) * 2 ) ; zero ( this . dyn _ltree ) ; zero ( this . dyn _dtree ) ; zero ( this . bl _tree ) ; this . l _desc = null ; this . d _desc = null ; this . bl _desc = null ; this . bl _count = new utils . Buf16 ( MAX _BITS + 1 ) ; this . heap = new utils . Buf16 ( 2 * L _CODES + 1 ) ; zero ( this . heap ) ; this . heap _len = 0 ; this . heap _max = 0 ; this . depth = new utils . Buf16 ( 2 * L _CODES + 1 ) ; zero ( this . depth ) ; this . l _buf = 0 ; this . lit _bufsize = 0 ; this . last _lit = 0 ; this . d _buf = 0 ; this . opt _len = 0 ; this . static _len = 0 ; this . matches = 0 ; this . insert = 0 ; this . bi _buf = 0 ; this . bi _valid = 0 } function deflateResetKeep ( strm ) { var s ; if ( ! strm || ! strm . state ) { return err ( strm , Z _STREAM _ERROR ) } strm . total _in = strm . total _out = 0 ; strm . data _type = Z _UNKNOWN ; s = strm . state ; s . pending = 0 ; s . pending _out = 0 ; if ( s . wrap < 0 ) { s . wrap = - s . wrap } s . status = s . wrap ? INIT _STATE : BUSY _STATE ; strm . adler = s . wrap === 2 ? 0 : 1 ; s . last _flush = Z _NO _FLUSH ; trees . _tr _init ( s ) ; return Z _OK } function deflateReset ( strm ) { var ret = deflateResetKeep ( strm ) ; if ( ret === Z _OK ) { lm _init ( strm . state ) } return ret } function deflateSetHeader ( strm , head ) { if ( ! strm || ! strm . state ) { return Z _STREAM _ERROR } if ( strm . state . wrap !== 2 ) { return Z _STREAM _ERROR } strm . state . gzhead = head ; return Z _OK } function deflateInit2 ( strm , level , method , windowBits , memLevel , strategy ) { if ( ! strm ) { return Z _STREAM _ERROR } var wrap = 1 ; if ( level === Z _DEFAULT _COMPRESSION ) { level = 6 } if ( windowBits < 0 ) { wrap = 0 ; windowBits = - windowBits } else if ( windowBits > 15 ) { wrap = 2 ; windowBits -= 16 } if ( memLevel < 1 || memLevel > MAX _MEM _LEVEL || method !== Z _DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z _FIXED ) { return err ( strm , Z _STREAM _ERROR ) } if ( windowBits === 8 ) { windowBits = 9 } var s = new DeflateState ; strm . state = s ; s . strm = strm ; s . wrap = wrap ; s . gzhead = null ; s . w _bits = windowBits ; s . w _size = 1 << s . w _bits ; s . w _mask = s . w _size - 1 ; s . hash _bits = memLevel + 7 ; s . hash _size = 1 << s . hash _bits ; s . hash _mask = s . hash _size - 1 ; s . hash _shift = ~ ~ ( ( s . hash _b
exports . inflateInfo = "pako inflate (from Nodeca project)" } , { "../utils/common" : 27 , "./adler32" : 29 , "./crc32" : 31 , "./inffast" : 34 , "./inftrees" : 36 } ] , 36 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "../utils/common" ) ; var MAXBITS = 15 ; var ENOUGH _LENS = 852 ; var ENOUGH _DISTS = 592 ; var CODES = 0 ; var LENS = 1 ; var DISTS = 2 ; var lbase = [ 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 13 , 15 , 17 , 19 , 23 , 27 , 31 , 35 , 43 , 51 , 59 , 67 , 83 , 99 , 115 , 131 , 163 , 195 , 227 , 258 , 0 , 0 ] ; var lext = [ 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 17 , 17 , 17 , 17 , 18 , 18 , 18 , 18 , 19 , 19 , 19 , 19 , 20 , 20 , 20 , 20 , 21 , 21 , 21 , 21 , 16 , 72 , 78 ] ; var dbase = [ 1 , 2 , 3 , 4 , 5 , 7 , 9 , 13 , 17 , 25 , 33 , 49 , 65 , 97 , 129 , 193 , 257 , 385 , 513 , 769 , 1025 , 1537 , 2049 , 3073 , 4097 , 6145 , 8193 , 12289 , 16385 , 24577 , 0 , 0 ] ; var dext = [ 16 , 16 , 16 , 16 , 17 , 17 , 18 , 18 , 19 , 19 , 20 , 20 , 21 , 21 , 22 , 22 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 , 27 , 27 , 28 , 28 , 29 , 29 , 64 , 64 ] ; module . exports = function inflate _table ( type , lens , lens _index , codes , table , table _index , work , opts ) { var bits = opts . bits ; var len = 0 ; var sym = 0 ; var min = 0 , max = 0 ; var root = 0 ; var curr = 0 ; var drop = 0 ; var left = 0 ; var used = 0 ; var huff = 0 ; var incr ; var fill ; var low ; var mask ; var next ; var base = null ; var base _index = 0 ; var end ; var count = new utils . Buf16 ( MAXBITS + 1 ) ; var offs = new utils . Buf16 ( MAXBITS + 1 ) ; var extra = null ; var extra _index = 0 ; var here _bits , here _op , here _val ; for ( len = 0 ; len <= MAXBITS ; len ++ ) { count [ len ] = 0 } for ( sym = 0 ; sym < codes ; sym ++ ) { count [ lens [ lens _index + sym ] ] ++ } root = bits ; for ( max = MAXBITS ; max >= 1 ; max -- ) { if ( count [ max ] !== 0 ) { break } } if ( root > max ) { root = max } if ( max === 0 ) { table [ table _index ++ ] = 1 << 24 | 64 << 16 | 0 ; table [ table _index ++ ] = 1 << 24 | 64 << 16 | 0 ; opts . bits = 1 ; return 0 } for ( min = 1 ; min < max ; min ++ ) { if ( count [ min ] !== 0 ) { break } } if ( root < min ) { root = min } left = 1 ; for ( len = 1 ; len <= MAXBITS ; len ++ ) { left <<= 1 ; left -= count [ len ] ; if ( left < 0 ) { return - 1 } } if ( left > 0 && ( type === CODES || max !== 1 ) ) { return - 1 } offs [ 1 ] = 0 ; for ( len = 1 ; len < MAXBITS ; len ++ ) { offs [ len + 1 ] = offs [ len ] + count [ len ] } for ( sym = 0 ; sym < codes ; sym ++ ) { if ( lens [ lens _index + sym ] !== 0 ) { work [ offs [ lens [ lens _index + sym ] ] ++ ] = sym } } if ( type === CODES ) { base = extra = work ; end = 19 } else if ( type === LENS ) { base = lbase ; base _index -= 257 ; extra = lext ; extra _index -= 257 ; end = 256 } else { base = dbase ; extra = dext ; end = - 1 } huff = 0 ; sym = 0 ; len = min ; next = table _index ; curr = root ; drop = 0 ; low = - 1 ; used = 1 << root ; mask = used - 1 ; if ( type === LENS && used > ENOUGH _LENS || type === DISTS && used > ENOUGH _DISTS ) { return 1 } var i = 0 ; for ( ; ; ) { i ++ ; here _bits = len - drop ; if ( work [ sym ] < end ) { here _op = 0 ; here _val = work [ sym ] } else if ( work [ sym ] > end ) { here _op = extra [ extra _index + work [ sym ] ] ; here _val = base [ base _index + work [ sym ] ] } else { here _op = 32 + 64 ; here _val = 0 } incr = 1 << len - drop ; fill = 1 << curr ; min = fill ; do { fill -= incr ; table [ next + ( huff >> drop ) + fill ] = here _bits << 24 | here _op << 16 | here _val | 0 } while ( fill !== 0 ) ; incr = 1 << len - 1 ; while ( huff & incr ) { incr >>= 1 } if ( incr !== 0 ) { huff &= incr - 1 ; huff += incr } else { huff = 0 } sym ++ ; if ( -- count [ len ] === 0 ) { if ( len === max ) { break } len = lens [ lens _index + work [ sym ] ] } if ( len > root && ( huff & mask ) !== low ) { if ( drop === 0 ) { drop = root } next += min ; curr = len - drop ; left = 1 << curr ; while ( curr + drop < max ) { left -= count [ curr + drop ] ; if ( left <= 0 ) { break } curr ++ ; left <<= 1 } used += 1 << curr ; if ( type === LENS && used > ENOUGH _LENS || type === DISTS && used > ENOUGH _DISTS ) { return 1 } low = huff & mask ; table [ low ] = root << 24 | curr << 16 | next - table _index | 0 } } if ( huff !== 0 ) { table [ next + huff ] = len - drop << 24 | 64 << 16 | 0 } opts . bits = root ; return 0 } } , { "../utils/common" : 27 } ] , 37 : [ function ( _dereq _ , module , exports ) { "use strict" ; module . exports = { 2 : "need dictionary" , 1 : "stream end" , 0 : "" , "-1" : "file error" , "-2" : "stream error" , "-3" : "data error" , "-4" : "insufficient memory" , "-5" : "buffer error" , "-6" : "incompatible version" } } , { } ] , 38 : [ function ( _dereq _ , module , exports ) { "use strict" ; var utils = _dereq _ ( "../utils/common" ) ; var Z _FIXED = 4 ; var Z _BINARY = 0 ; var Z _TEXT = 1 ; var Z _UNKNOWN = 2 ; function zero ( buf ) { var len = buf . length ; while ( -- len >= 0 ) { buf [ len ] = 0 } } var STORED _BLOCK = 0 ; var STATIC _TREES = 1 ; var DYN _TREES = 2 ; var MIN _MATCH = 3 ; var MAX _MATCH = 258 ; var LENGTH _CODES = 29 ; var LITERALS = 256 ; var L _CODES = LITERALS + 1 + LENGTH _CODES ; var D _CODES = 30 ; var BL _CODES = 19 ; var HEAP _SIZE = 2 * L _CODES + 1 ; var MAX _BITS = 15 ; var Buf _size = 16 ; var MAX _BL _BITS = 7 ; var END _BLOCK = 256 ; var REP _3 _6 = 16 ; var REPZ _3 _10 = 17 ; var REPZ _11 _138 = 18 ; var extra _lbits = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 5 , 5 , 5 , 5 , 0 ] ; var extra _dbits = [ 0 , 0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , 7 , 8 , 8 , 9 , 9 , 10 , 10 , 11 , 11 , 12 , 12 , 13 , 13 ] ; var extra _blbits = [ 0 , 0 , 0
for ( j = 0 ; j != D [ 225 ] . length ; ++ j ) if ( D [ 225 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 225 ] [ j ] ] = 57600 + j ; d [ 57600 + j ] = D [ 225 ] [ j ] } D [ 226 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰<E7AB88> 窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆<E7B3BA> <E7B486> <EFBFBD> " . split ( "" ) ; for ( j = 0 ; j != D [ 226 ] . length ; ++ j ) if ( D [ 226 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 226 ] [ j ] ] = 57856 + j ; d [ 57856 + j ] = D [ 226 ] [ j ] } D [ 227 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷<E7B983> 縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋<E884AF> <E8858B> <EFBFBD> " . split ( "" ) ; for ( j = 0 ; j != D [ 227 ] . length ; ++ j ) if ( D [ 227 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 227 ] [ j ] ] = 58112 + j ; d [ 58112 + j ] = D [ 227 ] [ j ] } D [ 228 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤<E8899F> 艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈<E89598> <E89588> <EFBFBD> " . split ( "" ) ; for ( j = 0 ; j != D [ 228 ] . length ; ++ j ) if ( D [ 228 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 228 ] [ j ] ] = 58368 + j ; d [ 58368 + j ] = D [ 228 ] [ j ] } D [ 229 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬<E89BA9> 蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞<E8A5A0> <E8A59E> <EFBFBD> " . split ( "" ) ; for ( j = 0 ; j != D [ 229 ] . length ; ++ j ) if ( D [ 229 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 229 ] [ j ] ] = 58624 + j ; d [ 58624 + j ] = D [ 229 ] [ j ] } D [ 230 ] = " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧 <EFBFBD> 諤諱謔諠諢 <EFBFBD>
for ( j = 0 ; j != D [ 197 ] . length ; ++ j ) if ( D [ 197 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 197 ] [ j ] ] = 50432 + j ; d [ 50432 + j ] = D [ 197 ] [ j ] } D [ 198 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸<E88BB6> 苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐<E8AEAB> " . split ( "" ) ; for ( j = 0 ; j != D [ 198 ] . length ; ++ j ) if ( D [ 198 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 198 ] [ j ] ] = 50688 + j ; d [ 50688 + j ] = D [ 198 ] [ j ] } D [ 199 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮<E88EAD> 莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠<E9A9B1> " . split ( "" ) ; for ( j = 0 ; j != D [ 199 ] . length ; ++ j ) if ( D [ 199 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 199 ] [ j ] ] = 50944 + j ; d [ 50944 + j ] = D [ 199 ] [ j ] } D [ 200 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉<E89188> 葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁<E4B889> " . split ( "" ) ; for ( j = 0 ; j != D [ 200 ] . length ; ++ j ) if ( D [ 200 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 200 ] [ j ] ] = 51200 + j ; d [ 51200 + j ] = D [ 200 ] [ j ] } D [ 201 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗<E89395> 蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳<E58D87> " . split ( "" ) ; for ( j = 0 ; j != D [ 201 ] . length ; ++ j ) if ( D [ 201 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 201 ] [ j ] ] = 51456 + j ; d [ 51456 + j ] = D [ 201 ] [ j ] } D [ 202 ] = " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕 <EFBFBD> 蕗蕘蕚蕛蕜 <EFBFBD>
for ( j = 0 ; j != D [ 154 ] . length ; ++ j ) if ( D [ 154 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 154 ] [ j ] ] = 39424 + j ; d [ 39424 + j ] = D [ 154 ] [ j ] } D [ 155 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쌐쌑쌒쌖쌗쌙쌚쌛쌝쌞쌟쌠쌡쌢쌣쌦쌧쌪쌫쌬쌭쌮쌯쌰쌱쌲<EC8CB1> <EC8CB2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀썁썂썃썄썆썇썈썉썊썋썌썍<EC8D8C> <EC8D8D> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜썝썞썟썠썡썢썣썤썥썦썧썪썫썭썮썯썱썳썴썵썶썷썺썻썾썿쎀쎁쎂쎃쎅쎆쎇쎉쎊쎋쎍쎎쎏쎐쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻쎼쎽쎾쎿쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗쏚<EC8F97> " . split ( "" ) ; for ( j = 0 ; j != D [ 155 ] . length ; ++ j ) if ( D [ 155 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 155 ] [ j ] ] = 39680 + j ; d [ 39680 + j ] = D [ 155 ] [ j ] } D [ 156 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쏛쏝쏞쏡쏣쏤쏥쏦쏧쏪쏫쏬쏮쏯쏰쏱쏲쏳쏶쏷쏹쏺쏻쏼쏽쏾<EC8FBD> <EC8FBE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쏿쐀쐁쐂쐃쐄쐅쐆쐇쐉쐊쐋쐌쐍쐎쐏쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚<EC9099> <EC909A> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쐛쐜쐝쐞쐟쐠쐡쐢쐣쐥쐦쐧쐨쐩쐪쐫쐭쐮쐯쐱쐲쐳쐵쐶쐷쐸쐹쐺쐻쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣쑦쑧쑩쑪쑫쑭쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩<EC92A8> " . split ( "" ) ; for ( j = 0 ; j != D [ 156 ] . length ; ++ j ) if ( D [ 156 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 156 ] [ j ] ] = 39936 + j ; d [ 39936 + j ] = D [ 156 ] [ j ] } D [ 157 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺쒻쒽쒾쒿쓀쓁쓂쓃쓄쓅<EC9384> <EC9385> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쓆쓇쓈쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟<EC939E> <EC939F> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 쓠쓡쓢쓣쓤쓥쓦쓧쓨쓪쓫쓬쓭쓮쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋씍씎씏씑씒씓씕씖씗씘씙씚씛씝씞씟씠씡씢씣씤씥씦씧씪씫씭씮씯씱씲씳씴씵씶씷씺씼씾씿앀앁앂앃앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩앪앫앬앭앮앯앲앶앷앸앹앺앻앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔<EC9693> " . split ( "" ) ; for ( j = 0 ; j != D [ 157 ] . length ; ++ j ) if ( D [ 157 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 157 ] [ j ] ] = 40192 + j ; d [ 40192 + j ] = D [ 157 ] [ j ] } D [ 158 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 얖얙얚얛얝얞얟얡얢얣얤얥얦얧얨얪얫얬얭얮얯얰얱얲얳얶<EC96B3> <EC96B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 얷얺얿엀엁엂엃엋엍엏엒엓엕엖엗엙엚엛엜엝엞엟엢엤엦엧<EC97A6> <EC97A7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑옒옓옔옕옖옗옚옝옞옟옠옡옢옣옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉왊왋왌왍왎왏왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫왭왮왰왲왳왴왵왶왷왺왻왽왾왿욁욂욃욄욅욆욇욊욌욎욏욐욑욒욓욖욗욙욚욛욝욞욟욠욡욢욣욦<EC9AA3> " . split ( "" ) ; for ( j = 0 ; j != D [ 158 ] . length ; ++ j ) if ( D [ 158 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 158 ] [ j ] ] = 40448 + j ; d [ 40448 + j ] = D [ 158 ] [ j ] } D [ 159 ] = " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 욨욪욫욬욭욮욯욲욳욵욶욷욻욼욽욾욿웂웄웆웇웈웉웊웋웎 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 웏웑웒웓웕웖웗웘웙웚웛웞웟웢웣웤웥웦웧웪웫웭웮웯웱웲 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 웳웴웵웶 <EFBFBD>
for ( j = 0 ; j != D [ 239 ] . length ; ++ j ) if ( D [ 239 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 239 ] [ j ] ] = 61184 + j ; d [ 61184 + j ] = D [ 239 ] [ j ] } D [ 240 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫<E7B8B1> " . split ( "" ) ; for ( j = 0 ; j != D [ 240 ] . length ; ++ j ) if ( D [ 240 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 240 ] [ j ] ] = 61440 + j ; d [ 61440 + j ] = D [ 240 ] [ j ] } D [ 241 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只<E4B98B> " . split ( "" ) ; for ( j = 0 ; j != D [ 241 ] . length ; ++ j ) if ( D [ 241 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 241 ] [ j ] ] = 61696 + j ; d [ 61696 + j ] = D [ 241 ] [ j ] } D [ 242 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯<E7B79D> " . split ( "" ) ; for ( j = 0 ; j != D [ 242 ] . length ; ++ j ) if ( D [ 242 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 242 ] [ j ] ] = 61952 + j ; d [ 61952 + j ] = D [ 242 ] [ j ] } D [ 243 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策<E69FB5> " . split ( "" ) ; for ( j = 0 ; j != D [ 243 ] . length ; ++ j ) if ( D [ 243 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 243 ] [ j ] ] = 62208 + j ; d [ 62208 + j ] = D [ 243 ] [ j ] } D [ 244 ] = " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2017-05-09 18:11:15 +00:00
for ( j = 0 ; j != D [ 231 ] . length ; ++ j ) if ( D [ 231 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 231 ] [ j ] ] = 59136 + j ; d [ 59136 + j ] = D [ 231 ] [ j ] } D [ 232 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓<E98B91> <E98B93> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮<E599A0> " . split ( "" ) ; for ( j = 0 ; j != D [ 232 ] . length ; ++ j ) if ( D [ 232 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 232 ] [ j ] ] = 59392 + j ; d [ 59392 + j ] = D [ 232 ] [ j ] } D [ 233 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺<E6878C> <E686BA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸<E6BEBF> " . split ( "" ) ; for ( j = 0 ; j != D [ 233 ] . length ; ++ j ) if ( D [ 233 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 233 ] [ j ] ] = 59648 + j ; d [ 59648 + j ] = D [ 233 ] [ j ] } D [ 234 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙<E79E95> <E79E99> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘<E895A1> " . split ( "" ) ; for ( j = 0 ; j != D [ 234 ] . length ; ++ j ) if ( D [ 234 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 234 ] [ j ] ] = 59904 + j ; d [ 59904 + j ] = D [ 234 ] [ j ] } D [ 235 ] = "<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠<E8A7B1> <E8ABA0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌<E98C94> " . split ( "" ) ; for ( j = 0 ; j != D [ 235 ] . length ; ++ j ) if ( D [ 235 ] [ j ] . charCodeAt ( 0 ) !== 65533 ) { e [ D [ 235 ] [ j ] ] = 60160 + j ; d [ 60160 + j ] = D [ 235 ] [ j ] } D [ 236 ] = " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
var o = v . toFixed ( 11 ) . replace ( gnr1 , ".$1" ) ; if ( o . length > ( v < 0 ? 12 : 11 ) ) o = v . toPrecision ( 6 ) ; return o } function gfn4 ( o ) { for ( var i = 0 ; i != o . length ; ++ i ) if ( ( o . charCodeAt ( i ) | 32 ) === 101 ) return o . replace ( gnr4 , ".$1" ) . replace ( gnr5 , "E" ) . replace ( "e" , "E" ) . replace ( gnr6 , "$10$2" ) ; return o } function gfn5 ( o ) { return o . indexOf ( "." ) > - 1 ? o . replace ( gnr2 , "" ) . replace ( gnr1 , ".$1" ) : o } return function general _fmt _num ( v , opts ) { var V = Math . floor ( Math . log ( Math . abs ( v ) ) * Math . LOG10E ) , o ; if ( V >= - 4 && V <= - 1 ) o = v . toPrecision ( 10 + V ) ; else if ( Math . abs ( V ) <= 9 ) o = gfn2 ( v ) ; else if ( V === 10 ) o = v . toFixed ( 10 ) . substr ( 0 , 12 ) ; else o = gfn3 ( v ) ; return gfn5 ( gfn4 ( o ) ) } } ( ) ; SSF . _general _num = general _fmt _num ; function general _fmt ( v , opts ) { switch ( typeof v ) { case "string" : return v ; case "boolean" : return v ? "TRUE" : "FALSE" ; case "number" : return ( v | 0 ) === v ? general _fmt _int ( v , opts ) : general _fmt _num ( v , opts ) ; case "undefined" : return "" ; case "object" : if ( v == null ) return "" } throw new Error ( "unsupported value in General format: " + v ) } SSF . _general = general _fmt ; function fix _hijri ( date , o ) { return 0 } function parse _date _code ( v , opts , b2 ) { if ( v > 2958465 || v < 0 ) return null ; var date = v | 0 , time = Math . floor ( 86400 * ( v - date ) ) , dow = 0 ; var dout = [ ] ; var out = { D : date , T : time , u : 86400 * ( v - date ) - time , y : 0 , m : 0 , d : 0 , H : 0 , M : 0 , S : 0 , q : 0 } ; if ( Math . abs ( out . u ) < 1e-6 ) out . u = 0 ; fixopts ( opts != null ? opts : opts = [ ] ) ; if ( opts . date1904 ) date += 1462 ; if ( out . u > . 999 ) { out . u = 0 ; if ( ++ time == 86400 ) { time = 0 ; ++ date } } if ( date === 60 ) { dout = b2 ? [ 1317 , 10 , 29 ] : [ 1900 , 2 , 29 ] ; dow = 3 } else if ( date === 0 ) { dout = b2 ? [ 1317 , 8 , 29 ] : [ 1900 , 1 , 0 ] ; dow = 6 } else { if ( date > 60 ) -- date ; var d = new Date ( 1900 , 0 , 1 ) ; d . setDate ( d . getDate ( ) + date - 1 ) ; dout = [ d . getFullYear ( ) , d . getMonth ( ) + 1 , d . getDate ( ) ] ; dow = d . getDay ( ) ; if ( date < 60 ) dow = ( dow + 6 ) % 7 ; if ( b2 ) dow = fix _hijri ( d , dout ) } out . y = dout [ 0 ] ; out . m = dout [ 1 ] ; out . d = dout [ 2 ] ; out . S = time % 60 ; time = Math . floor ( time / 60 ) ; out . M = time % 60 ; time = Math . floor ( time / 60 ) ; out . H = time ; out . q = dow ; return out } SSF . parse _date _code = parse _date _code ; function write _date ( type , fmt , val , ss0 ) { var o = "" , ss = 0 , tt = 0 , y = val . y , out , outl = 0 ; switch ( type ) { case 98 : y = val . y + 543 ; case 121 : switch ( fmt . length ) { case 1 : case 2 : out = y % 100 ; outl = 2 ; break ; default : out = y % 1e4 ; outl = 4 ; break } break ; case 109 : switch ( fmt . length ) { case 1 : case 2 : out = val . m ; outl = fmt . length ; break ; case 3 : return months [ val . m - 1 ] [ 1 ] ; case 5 : return months [ val . m - 1 ] [ 0 ] ; default : return months [ val . m - 1 ] [ 2 ] } break ; case 100 : switch ( fmt . length ) { case 1 : case 2 : out = val . d ; outl = fmt . length ; break ; case 3 : return days [ val . q ] [ 0 ] ; default : return days [ val . q ] [ 1 ] } break ; case 104 : switch ( fmt . length ) { case 1 : case 2 : out = 1 + ( val . H + 11 ) % 12 ; outl = fmt . length ; break ; default : throw "bad hour format: " + fmt } break ; case 72 : switch ( fmt . length ) { case 1 : case 2 : out = val . H ; outl = fmt . length ; break ; default : throw "bad hour format: " + fmt } break ; case 77 : switch ( fmt . length ) { case 1 : case 2 : out = val . M ; outl = fmt . length ; break ; default : throw "bad minute format: " + fmt } break ; case 115 : if ( val . u === 0 ) switch ( fmt ) { case "s" : case "ss" : return pad0 ( val . S , fmt . length ) ; case ".0" : case ".00" : case ".000" : } switch ( fmt ) { case "s" : case "ss" : case ".0" : case ".00" : case ".000" : if ( ss0 >= 2 ) tt = ss0 === 3 ? 1e3 : 100 ; else tt = ss0 === 1 ? 10 : 1 ; ss = Math . round ( tt * ( val . S + val . u ) ) ; if ( ss >= 60 * tt ) ss = 0 ; if ( fmt === "s" ) return ss === 0 ? "0" : "" + ss / tt ; o = pad0 ( ss , 2 + ss0 ) ; if ( fmt === "ss" ) return o . substr ( 0 , 2 ) ; return "." + o . substr ( 2 , fmt . length - 1 ) ; default : throw "bad second format: " + fmt } case 90 : switch ( fmt ) { case "[h]" : case "[hh]" : out = val . D * 24 + val . H ; break ; case "[m]" : case "[mm]" : out = ( val . D * 24 + val . H ) * 60 + val . M ; break ; case "[s]" : case "[ss]" : out = ( ( val . D * 24 + val . H ) * 60 + val . M ) * 60 + Math . round ( val . S + val . u ) ; break ; default : throw "bad abstime format: " + fmt } outl = fmt . length === 3 ? 1 : 2 ; break ; case 101 : out = y ; outl = 1 } if ( outl > 0 ) return pad0 ( out , outl ) ; else return "" } function commaify ( s ) { if ( s . length <= 3 ) return s ; var j = s . length % 3 , o = s . substr ( 0 , j ) ; for ( ; j != s . length ; j += 3 ) o += ( o . length > 0 ? "," : "" ) + s . substr ( j , 3 ) ; return o } var write _num = function make _write _num ( ) { var pct1 = /%/g ; function write _num _pct ( type , fmt , val ) { var sfmt = fmt . replace ( pct1 , "" ) , mul = fmt . length - sfmt . length ; return write _num ( type , sfmt , val * Math . pow ( 10 , 2 * mul ) ) + fill ( "%" , mul ) } function write _num _cm ( type , fmt , val ) { var idx = fmt . length - 1 ; while ( fmt . charCodeAt ( idx - 1 ) === 44 ) -- idx ; return write _num ( type , fmt . substr ( 0 , idx ) , val / Math . pow ( 10 , 3 * ( fmt . length - idx ) ) ) } function write _num _exp ( fmt , val ) { var o ; var idx = fmt . indexO
} function readSync ( blob , options ) { switch ( options !== undefined && options . type !== undefined ? options . type : "base64" ) { case "file" : return readFileSync ( blob , options ) ; case "base64" : return parse ( s2a ( Base64 . decode ( blob ) ) , options ) ; case "binary" : return parse ( s2a ( blob ) , options ) } return parse ( blob ) } var MSSZ = 64 ; var ENDOFCHAIN = - 2 ; var HEADER _SIGNATURE = "d0cf11e0a1b11ae1" ; var HEADER _CLSID = "00000000000000000000000000000000" ; var consts = { MAXREGSECT : - 6 , DIFSECT : - 4 , FATSECT : - 3 , ENDOFCHAIN : ENDOFCHAIN , FREESECT : - 1 , HEADER _SIGNATURE : HEADER _SIGNATURE , HEADER _MINOR _VERSION : "3e00" , MAXREGSID : - 6 , NOSTREAM : - 1 , HEADER _CLSID : HEADER _CLSID , EntryTypes : [ "unknown" , "storage" , "stream" , "lockbytes" , "property" , "root" ] } ; exports . read = readSync ; exports . parse = parse ; exports . utils = { ReadShift : ReadShift , CheckField : CheckField , prep _blob : prep _blob , bconcat : bconcat , consts : consts } ; return exports } ( ) ; if ( typeof require !== "undefined" && typeof module !== "undefined" && typeof DO _NOT _EXPORT _CFB === "undefined" ) { module . exports = CFB } function isval ( x ) { return x !== undefined && x !== null } function keys ( o ) { return Object . keys ( o ) } function evert _key ( obj , key ) { var o = [ ] , K = keys ( obj ) ; for ( var i = 0 ; i !== K . length ; ++ i ) o [ obj [ K [ i ] ] [ key ] ] = K [ i ] ; return o } function evert ( obj ) { var o = [ ] , K = keys ( obj ) ; for ( var i = 0 ; i !== K . length ; ++ i ) o [ obj [ K [ i ] ] ] = K [ i ] ; return o } function evert _num ( obj ) { var o = [ ] , K = keys ( obj ) ; for ( var i = 0 ; i !== K . length ; ++ i ) o [ obj [ K [ i ] ] ] = parseInt ( K [ i ] , 10 ) ; return o } function evert _arr ( obj ) { var o = [ ] , K = keys ( obj ) ; for ( var i = 0 ; i !== K . length ; ++ i ) { if ( o [ obj [ K [ i ] ] ] == null ) o [ obj [ K [ i ] ] ] = [ ] ; o [ obj [ K [ i ] ] ] . push ( K [ i ] ) } return o } function datenum ( v , date1904 ) { var epoch = v . getTime ( ) ; if ( date1904 ) epoch += 1462 * 24 * 60 * 60 * 1e3 ; return ( epoch + 22091616e5 ) / ( 24 * 60 * 60 * 1e3 ) } function numdate ( v ) { var date = SSF . parse _date _code ( v ) ; var val = new Date ; if ( date == null ) throw new Error ( "Bad Date Code: " + v ) ; val . setUTCDate ( date . d ) ; val . setUTCMonth ( date . m - 1 ) ; val . setUTCFullYear ( date . y ) ; val . setUTCHours ( date . H ) ; val . setUTCMinutes ( date . M ) ; val . setUTCSeconds ( date . S ) ; return val } function parse _isodur ( s ) { var sec = 0 , mt = 0 , time = false ; var m = s . match ( /P([0-9\.]+Y)?([0-9\.]+M)?([0-9\.]+D)?T([0-9\.]+H)?([0-9\.]+M)?([0-9\.]+S)?/ ) ; if ( ! m ) throw new Error ( "|" + s + "| is not an ISO8601 Duration" ) ; for ( var i = 1 ; i != m . length ; ++ i ) { if ( ! m [ i ] ) continue ; mt = 1 ; if ( i > 3 ) time = true ; switch ( m [ i ] . substr ( m [ i ] . length - 1 ) ) { case "Y" : throw new Error ( "Unsupported ISO Duration Field: " + m [ i ] . substr ( m [ i ] . length - 1 ) ) ; case "D" : mt *= 24 ; case "H" : mt *= 60 ; case "M" : if ( ! time ) throw new Error ( "Unsupported ISO Duration Field: M" ) ; else mt *= 60 ; case "S" : break } sec += mt * parseInt ( m [ i ] , 10 ) } return sec } var good _pd _date = new Date ( "2017-02-19T19:06:09.000Z" ) ; var good _pd = good _pd _date . getFullYear ( ) == 2017 ; function parseDate ( str ) { if ( good _pd ) return new Date ( str ) ; if ( str instanceof Date ) return str ; var n = str . match ( /\d+/g ) || [ "2017" , "2" , "19" , "0" , "0" , "0" ] ; return new Date ( Date . UTC ( + n [ 0 ] , + n [ 1 ] - 1 , + n [ 2 ] , + n [ 3 ] , + n [ 4 ] , + n [ 5 ] ) ) } function cc2str ( arr ) { var o = "" ; for ( var i = 0 ; i != arr . length ; ++ i ) o += String . fromCharCode ( arr [ i ] ) ; return o } function str2cc ( str ) { var o = [ ] ; for ( var i = 0 ; i != str . length ; ++ i ) o . push ( str . charCodeAt ( i ) ) ; return o } function dup ( o ) { if ( typeof JSON != "undefined" && ! Array . isArray ( o ) ) return JSON . parse ( JSON . stringify ( o ) ) ; if ( typeof o != "object" || o == null ) return o ; var out = { } ; for ( var k in o ) if ( o . hasOwnProperty ( k ) ) out [ k ] = dup ( o [ k ] ) ; return out } function fill ( c , l ) { var o = "" ; while ( o . length < l ) o += c ; return o } function getdatastr ( data ) { if ( ! data ) return null ; if ( data . data ) return debom ( data . data ) ; if ( data . asNodeBuffer && has _buf ) return debom ( data . asNodeBuffer ( ) . toString ( "binary" ) ) ; if ( data . asBinary ) return debom ( data . asBinary ( ) ) ; if ( data . _data && data . _data . getContent ) return debom ( cc2str ( Array . prototype . slice . call ( data . _data . getContent ( ) , 0 ) ) ) ; return null } function getdatabin ( data ) { if ( ! data ) return null ; if ( data . data ) return char _codes ( data . data ) ; if ( data . asNodeBuffer && has _buf ) return data . asNodeBuffer ( ) ; if ( data . _data && data . _data . getContent ) { var o = data . _data . getContent ( ) ; if ( typeof o == "string" ) return str2cc ( o ) ; return Array . prototype . slice . call ( o ) } return null } function getdata ( data ) { return data && data . name . slice ( - 4 ) === ".bin" ? getdatabin ( data ) : getdatastr ( data ) } function safegetzipfile ( zip , file ) { var k = keys ( zip . files ) ; var f = file . toLowerCase ( ) , g = f . replace ( / \
1 : { n : "CodePage" , t : VT _I2 } , 2 : { n : "Category" , t : VT _STRING } , 3 : { n : "PresentationFormat" , t : VT _STRING } , 4 : { n : "ByteCount" , t : VT _I4 } , 5 : { n : "LineCount" , t : VT _I4 } , 6 : { n : "ParagraphCount" , t : VT _I4 } , 7 : { n : "SlideCount" , t : VT _I4 } , 8 : { n : "NoteCount" , t : VT _I4 } , 9 : { n : "HiddenCount" , t : VT _I4 } , 10 : { n : "MultimediaClipCount" , t : VT _I4 } , 11 : { n : "Scale" , t : VT _BOOL } , 12 : { n : "HeadingPair" , t : VT _VECTOR | VT _VARIANT } , 13 : { n : "DocParts" , t : VT _VECTOR | VT _LPSTR } , 14 : { n : "Manager" , t : VT _STRING } , 15 : { n : "Company" , t : VT _STRING } , 16 : { n : "LinksDirty" , t : VT _BOOL } , 17 : { n : "CharacterCount" , t : VT _I4 } , 19 : { n : "SharedDoc" , t : VT _BOOL } , 22 : { n : "HLinksChanged" , t : VT _BOOL } , 23 : { n : "AppVersion" , t : VT _I4 , p : "version" } , 26 : { n : "ContentType" , t : VT _STRING } , 27 : { n : "ContentStatus" , t : VT _STRING } , 28 : { n : "Language" , t : VT _STRING } , 29 : { n : "Version" , t : VT _STRING } , 255 : { } } ; var SummaryPIDSI = { 1 : { n : "CodePage" , t : VT _I2 } , 2 : { n : "Title" , t : VT _STRING } , 3 : { n : "Subject" , t : VT _STRING } , 4 : { n : "Author" , t : VT _STRING } , 5 : { n : "Keywords" , t : VT _STRING } , 6 : { n : "Comments" , t : VT _STRING } , 7 : { n : "Template" , t : VT _STRING } , 8 : { n : "LastAuthor" , t : VT _STRING } , 9 : { n : "RevNumber" , t : VT _STRING } , 10 : { n : "EditTime" , t : VT _FILETIME } , 11 : { n : "LastPrinted" , t : VT _FILETIME } , 12 : { n : "CreatedDate" , t : VT _FILETIME } , 13 : { n : "ModifiedDate" , t : VT _FILETIME } , 14 : { n : "PageCount" , t : VT _I4 } , 15 : { n : "WordCount" , t : VT _I4 } , 16 : { n : "CharCount" , t : VT _I4 } , 17 : { n : "Thumbnail" , t : VT _CF } , 18 : { n : "ApplicationName" , t : VT _LPSTR } , 19 : { n : "DocumentSecurity" , t : VT _I4 } , 255 : { } } ; var SpecialProperties = { 2147483648 : { n : "Locale" , t : VT _UI4 } , 2147483651 : { n : "Behavior" , t : VT _UI4 } , 1919054434 : { } } ; ( function ( ) { for ( var y in SpecialProperties ) if ( SpecialProperties . hasOwnProperty ( y ) ) DocSummaryPIDDSI [ y ] = SummaryPIDSI [ y ] = SpecialProperties [ y ] } ) ( ) ; var CountryEnum = { 1 : "US" , 2 : "CA" , 3 : "" , 7 : "RU" , 20 : "EG" , 30 : "GR" , 31 : "NL" , 32 : "BE" , 33 : "FR" , 34 : "ES" , 36 : "HU" , 39 : "IT" , 41 : "CH" , 43 : "AT" , 44 : "GB" , 45 : "DK" , 46 : "SE" , 47 : "NO" , 48 : "PL" , 49 : "DE" , 52 : "MX" , 55 : "BR" , 61 : "AU" , 64 : "NZ" , 66 : "TH" , 81 : "JP" , 82 : "KR" , 84 : "VN" , 86 : "CN" , 90 : "TR" , 105 : "JS" , 213 : "DZ" , 216 : "MA" , 218 : "LY" , 351 : "PT" , 354 : "IS" , 358 : "FI" , 420 : "CZ" , 886 : "TW" , 961 : "LB" , 962 : "JO" , 963 : "SY" , 964 : "IQ" , 965 : "KW" , 966 : "SA" , 971 : "AE" , 972 : "IL" , 974 : "QA" , 981 : "IR" , 65535 : "US" } ; var XLSFillPattern = [ null , "solid" , "mediumGray" , "darkGray" , "lightGray" , "darkHorizontal" , "darkVertical" , "darkDown" , "darkUp" , "darkGrid" , "darkTrellis" , "lightHorizontal" , "lightVertical" , "lightDown" , "lightUp" , "lightGrid" , "lightTrellis" , "gray125" , "gray0625" ] ; function rgbify ( arr ) { return arr . map ( function ( x ) { return [ x >> 16 & 255 , x >> 8 & 255 , x & 255 ] } ) } var XLSIcv = rgbify ( [ 0 , 16777215 , 16711680 , 65280 , 255 , 16776960 , 16711935 , 65535 , 0 , 16777215 , 16711680 , 65280 , 255 , 16776960 , 16711935 , 65535 , 8388608 , 32768 , 128 , 8421376 , 8388736 , 32896 , 12632256 , 8421504 , 10066431 , 10040166 , 16777164 , 13434879 , 6684774 , 16744576 , 26316 , 13421823 , 128 , 16711935 , 16776960 , 65535 , 8388736 , 8388608 , 32896 , 255 , 52479 , 13434879 , 13434828 , 16777113 , 10079487 , 16751052 , 13408767 , 16764057 , 3368703 , 3394764 , 10079232 , 16763904 , 16750848 , 16737792 , 6710937 , 9868950 , 13158 , 3381606 , 13056 , 3355392 , 10040064 , 10040166 , 3355545 , 3355443 , 16777215 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) ; var ct2type = { "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" : "workbooks" , "application/vnd.ms-excel.binIndexWs" : "TODO" , "application/vnd.ms-excel.intlmacrosheet" : "TODO" , "application/vnd.ms-excel.binIndexMs" : "TODO" , "application/vnd.openxmlformats-package.core-properties+xml" : "coreprops" , "application/vnd.openxmlformats-officedocument.custom-properties+xml" : "custprops" , "application/vnd.openxmlformats-officedocument.extended-properties+xml" : "extprops" , "application/vnd.openxmlformats-officedocument.customXmlProperties+xml" : "TODO" , "application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty" : "TODO" , "application/vnd.ms-excel.pivotTable" : "TODO" , "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml" : "TODO" , "application/vnd.ms-office.chartcolorstyle+xml" : "TODO" , "application/vnd.ms-office.chartstyle+xml" : "TODO" , "application/vnd.ms-excel.calcChain" : "calcchains" , "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml" : "calcchains" , "application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings" : "TODO" , "application/vnd.ms-office.activeX" : "TODO" , " application / vnd . ms - office . act
var cch = blob . read _shift ( 1 ) ; if ( cch === 0 ) { blob . l ++ ; return "" } return blob . read _shift ( cch , "sbcs-cont" ) } var parse _ControlInfo = parsenoop ; var parse _URLMoniker = function ( blob ) { var len = blob . read _shift ( 4 ) , start = blob . l ; var extra = false ; if ( len > 24 ) { blob . l += len - 24 ; if ( blob . read _shift ( 16 ) === "795881f43b1d7f48af2c825dc4852763" ) extra = true ; blob . l = start } var url = blob . read _shift ( ( extra ? len - 24 : len ) >> 1 , "utf16le" ) . replace ( chr0 , "" ) ; if ( extra ) blob . l += 24 ; return url } ; var parse _FileMoniker = function ( blob , length ) { var cAnti = blob . read _shift ( 2 ) ; var ansiLength = blob . read _shift ( 4 ) ; var ansiPath = blob . read _shift ( ansiLength , "cstr" ) ; var endServer = blob . read _shift ( 2 ) ; var versionNumber = blob . read _shift ( 2 ) ; var cbUnicodePathSize = blob . read _shift ( 4 ) ; if ( cbUnicodePathSize === 0 ) return ansiPath . replace ( /\\/g , "/" ) ; var cbUnicodePathBytes = blob . read _shift ( 4 ) ; var usKeyValue = blob . read _shift ( 2 ) ; var unicodePath = blob . read _shift ( cbUnicodePathBytes >> 1 , "utf16le" ) . replace ( chr0 , "" ) ; return unicodePath } ; var parse _HyperlinkMoniker = function ( blob , length ) { var clsid = blob . read _shift ( 16 ) ; length -= 16 ; switch ( clsid ) { case "e0c9ea79f9bace118c8200aa004ba90b" : return parse _URLMoniker ( blob , length ) ; case "0303000000000000c000000000000046" : return parse _FileMoniker ( blob , length ) ; default : throw new Error ( "Unsupported Moniker " + clsid ) } } ; var parse _HyperlinkString = function ( blob , length ) { var len = blob . read _shift ( 4 ) ; var o = blob . read _shift ( len , "utf16le" ) . replace ( chr0 , "" ) ; return o } ; var parse _Hyperlink = function ( blob , length ) { var end = blob . l + length ; var sVer = blob . read _shift ( 4 ) ; if ( sVer !== 2 ) throw new Error ( "Unrecognized streamVersion: " + sVer ) ; var flags = blob . read _shift ( 2 ) ; blob . l += 2 ; var displayName , targetFrameName , moniker , oleMoniker , location , guid , fileTime ; if ( flags & 16 ) displayName = parse _HyperlinkString ( blob , end - blob . l ) ; if ( flags & 128 ) targetFrameName = parse _HyperlinkString ( blob , end - blob . l ) ; if ( ( flags & 257 ) === 257 ) moniker = parse _HyperlinkString ( blob , end - blob . l ) ; if ( ( flags & 257 ) === 1 ) oleMoniker = parse _HyperlinkMoniker ( blob , end - blob . l ) ; if ( flags & 8 ) location = parse _HyperlinkString ( blob , end - blob . l ) ; if ( flags & 32 ) guid = blob . read _shift ( 16 ) ; if ( flags & 64 ) fileTime = parse _FILETIME ( blob , 8 ) ; blob . l = end ; var target = targetFrameName || moniker || oleMoniker ; if ( location ) target += "#" + location ; return { Target : target } } ; function parse _LongRGBA ( blob , length ) { var r = blob . read _shift ( 1 ) , g = blob . read _shift ( 1 ) , b = blob . read _shift ( 1 ) , a = blob . read _shift ( 1 ) ; return [ r , g , b , a ] } function parse _LongRGB ( blob , length ) { var x = parse _LongRGBA ( blob , length ) ; x [ 3 ] = 0 ; return x } function parse _XLSCell ( blob , length ) { var rw = blob . read _shift ( 2 ) ; var col = blob . read _shift ( 2 ) ; var ixfe = blob . read _shift ( 2 ) ; return { r : rw , c : col , ixfe : ixfe } } function parse _frtHeader ( blob ) { var rt = blob . read _shift ( 2 ) ; var flags = blob . read _shift ( 2 ) ; blob . l += 8 ; return { type : rt , flags : flags } } function parse _OptXLUnicodeString ( blob , length , opts ) { return length === 0 ? "" : parse _XLUnicodeString2 ( blob , length , opts ) } var parse _HideObjEnum = parseuint16 ; function parse _XTI ( blob , length ) { var iSupBook = blob . read _shift ( 2 ) , itabFirst = blob . read _shift ( 2 , "i" ) , itabLast = blob . read _shift ( 2 , "i" ) ; return [ iSupBook , itabFirst , itabLast ] } function parse _RkRec ( blob , length ) { var ixfe = blob . read _shift ( 2 ) ; var RK = parse _RkNumber ( blob ) ; return [ ixfe , RK ] } function parse _AddinUdf ( blob , length , opts ) { blob . l += 4 ; length -= 4 ; var l = blob . l + length ; var udfName = parse _ShortXLUnicodeString ( blob , length , opts ) ; var cb = blob . read _shift ( 2 ) ; l -= blob . l ; if ( cb !== l ) throw new Error ( "Malformed AddinUdf: padding = " + l + " != " + cb ) ; blob . l += cb ; return udfName } function parse _Ref8U ( blob , length ) { var rwFirst = blob . read _shift ( 2 ) ; var rwLast = blob . read _shift ( 2 ) ; var colFirst = blob . read _shift ( 2 ) ; var colLast = blob . read _shift ( 2 ) ; return { s : { c : colFirst , r : rwFirst } , e : { c : colLast , r : rwLast } } } function parse _RefU ( blob , length ) { var rwFirst = blob . read _shift ( 2 ) ; var rwLast = blob . read _shift ( 2 ) ; var colFirst = blob . read _shift ( 1 ) ; var colLast = blob . read _shift ( 1 ) ; return { s : { c : colFirst , r : rwFirst } , e : { c : colLast , r : rwLast } } } var parse _Ref = parse _RefU ; function parse _FtCmo ( blob , length ) { blob . l += 4 ; var ot = blob . read _shift ( 2 ) ; var id = blob . read _shift ( 2 ) ; var flags = blob . read _shift ( 2 ) ; blob . l += 12 ; return [ id , ot , flags ] } function parse _FtNts ( blob , length ) { var out = { } ; blob . l += 4 ; blob . l += 16 ; out . fSharedNote = blob . read _shift ( 2 ) ; blob . l += 4 ;
if ( record [ 1 ] . charAt ( 0 ) == "P" ) formats . push ( rstr . substr ( 3 ) . replace ( /;;/g , ";" ) ) ; break ; case "C" : for ( rj = 1 ; rj < record . length ; ++ rj ) switch ( record [ rj ] . charAt ( 0 ) ) { case "X" : C = parseInt ( record [ rj ] . substr ( 1 ) ) - 1 ; break ; case "Y" : R = parseInt ( record [ rj ] . substr ( 1 ) ) - 1 ; C = 0 ; for ( j = arr . length ; j <= R ; ++ j ) arr [ j ] = [ ] ; break ; case "K" : val = record [ rj ] . substr ( 1 ) ; if ( val . charAt ( 0 ) === '"' ) val = val . substr ( 1 , val . length - 2 ) ; else if ( val === "TRUE" ) val = true ; else if ( val === "FALSE" ) val = false ; else if ( + val === + val ) { val = + val ; if ( next _cell _format !== null && SSF . is _date ( next _cell _format ) ) val = numdate ( val ) } arr [ R ] [ C ] = val ; next _cell _format = null ; break ; case "E" : break ; default : if ( opts && opts . WTF ) throw new Error ( "SYLK bad record " + rstr ) } break ; case "F" : for ( rj = 1 ; rj < record . length ; ++ rj ) switch ( record [ rj ] . charAt ( 0 ) ) { case "X" : C = parseInt ( record [ rj ] . substr ( 1 ) ) - 1 ; break ; case "Y" : R = parseInt ( record [ rj ] . substr ( 1 ) ) - 1 ; C = 0 ; for ( j = arr . length ; j <= R ; ++ j ) arr [ j ] = [ ] ; break ; case "M" : Mval = parseInt ( record [ rj ] . substr ( 1 ) ) / 20 ; break ; case "F" : break ; case "P" : next _cell _format = formats [ parseInt ( record [ rj ] . substr ( 1 ) ) ] ; break ; case "S" : break ; case "D" : break ; case "N" : break ; case "W" : cw = record [ rj ] . substr ( 1 ) . split ( " " ) ; for ( j = parseInt ( cw [ 0 ] , 10 ) ; j <= parseInt ( cw [ 1 ] , 10 ) ; ++ j ) { Mval = parseInt ( cw [ 2 ] , 10 ) ; colinfo [ j - 1 ] = Mval == 0 ? { hidden : true } : { wch : Mval } ; process _col ( colinfo [ j - 1 ] ) } break ; case "R" : R = parseInt ( record [ rj ] . substr ( 1 ) ) - 1 ; rowinfo [ R ] = { } ; if ( Mval > 0 ) { rowinfo [ R ] . hpt = Mval ; rowinfo [ R ] . hpx = pt2px ( Mval ) } else if ( Mval == 0 ) rowinfo [ R ] . hidden = true ; break ; default : if ( opts && opts . WTF ) throw new Error ( "SYLK bad record " + rstr ) } break ; default : if ( opts && opts . WTF ) throw new Error ( "SYLK bad record " + rstr ) } } if ( rowinfo . length > 0 ) sht [ "!rows" ] = rowinfo ; if ( colinfo . length > 0 ) sht [ "!cols" ] = colinfo ; arr [ arr . length ] = sht ; return arr } function sylk _to _sheet ( str , opts ) { var aoa = sylk _to _aoa ( str , opts ) ; var ws = aoa . pop ( ) ; var o = aoa _to _sheet ( aoa , opts ) ; keys ( ws ) . forEach ( function ( k ) { o [ k ] = ws [ k ] } ) ; return o } function sylk _to _workbook ( str , opts ) { return sheet _to _workbook ( sylk _to _sheet ( str , opts ) , opts ) } function write _ws _cell _sylk ( cell , ws , R , C , opts ) { var o = "C;Y" + ( R + 1 ) + ";X" + ( C + 1 ) + ";K" ; switch ( cell . t ) { case "n" : o += cell . v || 0 ; if ( cell . f && ! cell . F ) o += ";E" + a1 _to _rc ( cell . f , { r : R , c : C } ) ; break ; case "b" : o += cell . v ? "TRUE" : "FALSE" ; break ; case "e" : o += cell . w || cell . v ; break ; case "d" : o += '"' + ( cell . w || cell . v ) + '"' ; break ; case "s" : o += '"' + cell . v . replace ( /"/g , "" ) + '"' ; break } return o } function write _ws _cols _sylk ( out , cols ) { cols . forEach ( function ( col , i ) { var rec = "F;W" + ( i + 1 ) + " " + ( i + 1 ) + " " ; if ( col . hidden ) rec += "0" ; else { if ( typeof col . width == "number" ) col . wpx = width2px ( col . width ) ; if ( typeof col . wpx == "number" ) col . wch = px2char ( col . wpx ) ; if ( typeof col . wch == "number" ) rec += Math . round ( col . wch ) } if ( rec . charAt ( rec . length - 1 ) != " " ) out . push ( rec ) } ) } function write _ws _rows _sylk ( out , rows ) { rows . forEach ( function ( row , i ) { var rec = "F;" ; if ( row . hidden ) rec += "M0;" ; else if ( row . hpt ) rec += "M" + 20 * row . hpt + ";" ; else if ( row . hpx ) rec += "M" + 20 * px2pt ( row . hpx ) + ";" ; if ( rec . length > 2 ) out . push ( rec + "R" + ( i + 1 ) ) } ) } function sheet _to _sylk ( ws , opts ) { var preamble = [ "ID;PWXL;N;E" ] , o = [ ] ; var r = decode _range ( ws [ "!ref" ] ) , cell ; var dense = Array . isArray ( ws ) ; var RS = "\r\n" ; preamble . push ( "P;PGeneral" ) ; preamble . push ( "F;P0;DG0G8;M255" ) ; if ( ws [ "!cols" ] ) write _ws _cols _sylk ( preamble , ws [ "!cols" ] ) ; if ( ws [ "!rows" ] ) write _ws _rows _sylk ( preamble , ws [ "!rows" ] ) ; preamble . push ( "B;Y" + ( r . e . r - r . s . r + 1 ) + ";X" + ( r . e . c - r . s . c + 1 ) + ";D" + [ r . s . c , r . s . r , r . e . c , r . e . r ] . join ( " " ) ) ; for ( var R = r . s . r ; R <= r . e . r ; ++ R ) { for ( var C = r . s . c ; C <= r . e . c ; ++ C ) { var coord = encode _cell ( { r : R , c : C } ) ; cell = dense ? ( ws [ R ] || [ ] ) [ C ] : ws [ coord ] ; if ( ! cell || cell . v == null && ( ! cell . f || cell . F ) ) continue ; o . push ( write _ws _cell _sylk ( cell , ws , R , C , opts ) ) } } return preamble . join ( RS ) + RS + o . join ( RS ) + RS + "E" + RS } return { to _workbook : sylk _to _workbook , to _sheet : sylk _to _sheet , from _sheet : sheet _to _sylk } } ( ) ; var DIF = function ( ) { function dif _to _aoa ( d , opts ) { switch ( opts . type ) { case "base64" : return dif _to _aoa _str ( Base64 . decode ( d ) , opts ) ; case "binary" : return dif _to _aoa _str ( d , opts ) ; case "buffer" : return dif _to _aoa _str ( d . toString ( "binary" ) , opts ) ; case "array" : return dif _to _aoa _str ( cc2str ( d ) , opts ) } throw new Error ( "Unrecognized type " + opts . type ) } function dif _to _aoa _str ( str , opts ) { var records = str . split ( "\n" ) , R = - 1 , C = - 1 , ri = 0 , arr = [ ] ; for ( ; ri !== records . length ; ++ ri ) { if ( records [ ri ] . trim ( ) === "BOT" ) { ar
} if ( coll . customWidth ) delete coll . customWidth } var DEF _PPI = 96 , PPI = DEF _PPI ; function px2pt ( px ) { return px * 96 / PPI } function pt2px ( pt ) { return pt * PPI / 96 } var XLMLPatternTypeMap = { None : "none" , Solid : "solid" , Gray50 : "mediumGray" , Gray75 : "darkGray" , Gray25 : "lightGray" , HorzStripe : "darkHorizontal" , VertStripe : "darkVertical" , ReverseDiagStripe : "darkDown" , DiagStripe : "darkUp" , DiagCross : "darkGrid" , ThickDiagCross : "darkTrellis" , ThinHorzStripe : "lightHorizontal" , ThinVertStripe : "lightVertical" , ThinReverseDiagStripe : "lightDown" , ThinHorzCross : "lightGrid" } ; function parse _borders ( t , styles , themes , opts ) { styles . Borders = [ ] ; var border = { } , sub _border = { } ; t [ 0 ] . match ( tagregex ) . forEach ( function ( x ) { var y = parsexmltag ( x ) ; switch ( y [ 0 ] ) { case "<borders" : case "<borders>" : case "</borders>" : break ; case "<border" : case "<border>" : border = { } ; if ( y . diagonalUp ) { border . diagonalUp = y . diagonalUp } if ( y . diagonalDown ) { border . diagonalDown = y . diagonalDown } styles . Borders . push ( border ) ; break ; case "</border>" : break ; case "<left" : case "<left/>" : break ; case "</left>" : break ; case "<right" : case "<right/>" : break ; case "</right>" : break ; case "<top" : case "<top/>" : break ; case "</top>" : break ; case "<bottom" : case "<bottom/>" : break ; case "</bottom>" : break ; case "<diagonal" : case "<diagonal/>" : break ; case "</diagonal>" : break ; case "<horizontal" : case "<horizontal/>" : break ; case "</horizontal>" : break ; case "<vertical" : case "<vertical/>" : break ; case "</vertical>" : break ; case "<start" : case "<start/>" : break ; case "</start>" : break ; case "<end" : case "<end/>" : break ; case "</end>" : break ; case "<color" : case "<color/>" : break ; case "</color>" : break ; default : if ( opts && opts . WTF ) throw new Error ( "unrecognized " + y [ 0 ] + " in borders" ) } } ) } function parse _fills ( t , styles , themes , opts ) { styles . Fills = [ ] ; var fill = { } ; t [ 0 ] . match ( tagregex ) . forEach ( function ( x ) { var y = parsexmltag ( x ) ; switch ( y [ 0 ] ) { case "<fills" : case "<fills>" : case "</fills>" : break ; case "<fill>" : break ; case "</fill>" : styles . Fills . push ( fill ) ; fill = { } ; break ; case "<gradientFill>" : break ; case "</gradientFill>" : styles . Fills . push ( fill ) ; fill = { } ; break ; case "<patternFill" : case "<patternFill>" : if ( y . patternType ) fill . patternType = y . patternType ; break ; case "<patternFill/>" : case "</patternFill>" : break ; case "<bgColor" : if ( ! fill . bgColor ) fill . bgColor = { } ; if ( y . indexed ) fill . bgColor . indexed = parseInt ( y . indexed , 10 ) ; if ( y . theme ) fill . bgColor . theme = parseInt ( y . theme , 10 ) ; if ( y . tint ) fill . bgColor . tint = parseFloat ( y . tint ) ; if ( y . rgb ) fill . bgColor . rgb = y . rgb . slice ( - 6 ) ; break ; case "<bgColor/>" : case "</bgColor>" : break ; case "<fgColor" : if ( ! fill . fgColor ) fill . fgColor = { } ; if ( y . theme ) fill . fgColor . theme = parseInt ( y . theme , 10 ) ; if ( y . tint ) fill . fgColor . tint = parseFloat ( y . tint ) ; if ( y . rgb ) fill . fgColor . rgb = y . rgb . slice ( - 6 ) ; break ; case "<fgColor/>" : case "</fgColor>" : break ; case "<stop" : case "<stop/>" : break ; case "</stop>" : break ; case "<color" : case "<color/>" : break ; case "</color>" : break ; default : if ( opts && opts . WTF ) throw new Error ( "unrecognized " + y [ 0 ] + " in fills" ) } } ) } function parse _fonts ( t , styles , themes , opts ) { styles . Fonts = [ ] ; var font = { } ; t [ 0 ] . match ( tagregex ) . forEach ( function ( x ) { var y = parsexmltag ( x ) ; switch ( y [ 0 ] ) { case "<fonts" : case "<fonts>" : case "</fonts>" : break ; case "<font" : case "<font>" : break ; case "</font>" : case "<font/>" : styles . Fonts . push ( font ) ; font = { } ; break ; case "<name" : if ( y . val ) font . name = y . val ; break ; case "<name/>" : case "</name>" : break ; case "<b" : font . bold = y . val ? parsexmlbool ( y . val ) : 1 ; break ; case "<b/>" : font . bold = 1 ; break ; case "<i" : font . italic = y . val ? parsexmlbool ( y . val ) : 1 ; break ; case "<i/>" : font . italic = 1 ; break ; case "<u" : switch ( y . val ) { case "none" : font . underline = 0 ; break ; case "single" : font . underline = 1 ; break ; case "double" : font . underline = 2 ; break ; case "singleAccounting" : font . underline = 33 ; break ; case "doubleAccounting" : font . underline = 34 ; break } break ; case "<u/>" : font . underline = 1 ; break ; case "<strike" : font . strike = y . val ? parsexmlbool ( y . val ) : 1 ; break ; case "<strike/>" : font . strike = 1 ; break ; case "<outline" : font . outline = y . val ? parsexmlbool ( y . val ) : 1 ; break ; case "<outline/>" : font . outline = 1 ; break ; case "<shadow" : font . shadow = y . val ? parsexmlbool ( y . val ) : 1 ; break ; case "<shadow/>" : font . shadow = 1 ; break ; case "<condense" : font . condense = y . val ? parsexmlbool ( y . val ) : 1 ; break ; case "<condense/>" : font . condense = 1 ; break ; case "<extend" : font . extend = y . val ? parsexmlbool ( y . val ) : 1 ; break ; case "<extend/>" : font . extend = 1 ; break ; ca
type : "#_x0000_t202" , style : "position:absolute; margin-left:80pt;margin-top:5pt;width:104pt;height:64pt;z-index:10;visibility:hidden" , fillcolor : "#ECFAD4" , strokecolor : "#edeaa1" } ) + ">" , writextag ( "v:fill" , writextag ( "o:fill" , null , { type : "gradientUnscaled" , "v:ext" : "view" } ) , { color2 : "#BEFF82" , angle : "-180" , type : "gradient" } ) , writextag ( "v:shadow" , null , { on : "t" , obscured : "t" } ) , writextag ( "v:path" , null , { "o:connecttype" : "none" } ) , '<v:textbox><div style="text-align:left"></div></v:textbox>' , '<x:ClientData ObjectType="Note">' , "<x:MoveWithCells/>" , "<x:SizeWithCells/>" , writetag ( "x:Anchor" , [ c . c , 0 , c . r , 0 , c . c + 3 , 100 , c . r + 5 , 100 ] . join ( "," ) ) , writetag ( "x:AutoFill" , "False" ) , writetag ( "x:Row" , String ( c . r ) ) , writetag ( "x:Column" , String ( c . c ) ) , "<x:Visible/>" , "</x:ClientData>" , "</v:shape>" ] ) } ) ; o . push ( "</xml>" ) ; return o . join ( "" ) } RELS . CMNT = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" ; function parse _comments ( zip , dirComments , sheets , sheetRels , opts ) { for ( var i = 0 ; i != dirComments . length ; ++ i ) { var canonicalpath = dirComments [ i ] ; var comments = parse _cmnt ( getzipdata ( zip , canonicalpath . replace ( /^\// , "" ) , true ) , canonicalpath , opts ) ; if ( ! comments || ! comments . length ) continue ; var sheetNames = keys ( sheets ) ; for ( var j = 0 ; j != sheetNames . length ; ++ j ) { var sheetName = sheetNames [ j ] ; var rels = sheetRels [ sheetName ] ; if ( rels ) { var rel = rels [ canonicalpath ] ; if ( rel ) insertCommentsIntoSheet ( sheetName , sheets [ sheetName ] , comments ) } } } } function insertCommentsIntoSheet ( sheetName , sheet , comments ) { var dense = Array . isArray ( sheet ) ; var cell , r ; comments . forEach ( function ( comment ) { if ( dense ) { r = decode _cell ( comment . ref ) ; if ( ! sheet [ r . r ] ) sheet [ r . r ] = [ ] ; cell = sheet [ r . r ] [ r . c ] } else cell = sheet [ comment . ref ] ; if ( ! cell ) { cell = { } ; if ( dense ) sheet [ r . r ] [ r . c ] = cell ; else sheet [ comment . ref ] = cell ; var range = safe _decode _range ( sheet [ "!ref" ] || "BDWGO1000001:A1" ) ; var thisCell = decode _cell ( comment . ref ) ; if ( range . s . r > thisCell . r ) range . s . r = thisCell . r ; if ( range . e . r < thisCell . r ) range . e . r = thisCell . r ; if ( range . s . c > thisCell . c ) range . s . c = thisCell . c ; if ( range . e . c < thisCell . c ) range . e . c = thisCell . c ; var encoded = encode _range ( range ) ; if ( encoded !== sheet [ "!ref" ] ) sheet [ "!ref" ] = encoded } if ( ! cell . c ) cell . c = [ ] ; var o = { a : comment . author , t : comment . t , r : comment . r } ; if ( comment . h ) o . h = comment . h ; cell . c . push ( o ) } ) } function parse _comments _xml ( data , opts ) { if ( data . match ( /<(?:\w+:)?comments *\/>/ ) ) return [ ] ; var authors = [ ] ; var commentList = [ ] ; var authtag = data . match ( /<(?:\w+:)?authors>([^\u2603]*)<\/(?:\w+:)?authors>/ ) ; if ( authtag && authtag [ 1 ] ) authtag [ 1 ] . split ( /<\/\w*:?author>/ ) . forEach ( function ( x ) { if ( x === "" || x . trim ( ) === "" ) return ; var a = x . match ( /<(?:\w+:)?author[^>]*>(.*)/ ) ; if ( a ) authors . push ( a [ 1 ] ) } ) ; var cmnttag = data . match ( /<(?:\w+:)?commentList>([^\u2603]*)<\/(?:\w+:)?commentList>/ ) ; if ( cmnttag && cmnttag [ 1 ] ) cmnttag [ 1 ] . split ( /<\/\w*:?comment>/ ) . forEach ( function ( x , index ) { if ( x === "" || x . trim ( ) === "" ) return ; var cm = x . match ( /<(?:\w+:)?comment[^>]*>/ ) ; if ( ! cm ) return ; var y = parsexmltag ( cm [ 0 ] ) ; var comment = { author : y . authorId && authors [ y . authorId ] ? authors [ y . authorId ] : "sheetjsghost" , ref : y . ref , guid : y . guid } ; var cell = decode _cell ( y . ref ) ; if ( opts . sheetRows && opts . sheetRows <= cell . r ) return ; var textMatch = x . match ( /<(?:\w+:)?text>([^\u2603]*)<\/(?:\w+:)?text>/ ) ; var rt = ! ! textMatch && ! ! textMatch [ 1 ] && parse _si ( textMatch [ 1 ] ) || { r : "" , t : "" , h : "" } ; comment . r = rt . r ; if ( rt . r == "<t></t>" ) rt . t = rt . h = "" ; comment . t = rt . t . replace ( /\r\n/g , "\n" ) . replace ( /\r/g , "\n" ) ; if ( opts . cellHTML ) comment . h = rt . h ; commentList . push ( comment ) } ) ; return commentList } var CMNT _XML _ROOT = writextag ( "comments" , null , { xmlns : XMLNS . main [ 0 ] } ) ; function write _comments _xml ( data , opts ) { var o = [ XML _HEADER , CMNT _XML _ROOT ] ; var iauthor = [ ] ; o . push ( "<authors>" ) ; data . map ( function ( x ) { return x [ 1 ] } ) . forEach ( function ( comment ) { comment . map ( function ( x ) { return escapexml ( x . a ) } ) . forEach ( function ( a ) { if ( iauthor . indexOf ( a ) > - 1 ) return ; iauthor . push ( a ) ; o . push ( "<author>" + a + "</author>" ) } ) } ) ; o . push ( "</authors>" ) ; o . push ( "<commentList>" ) ; data . forEach ( function ( d ) { d [ 1 ] . forEach ( function ( c ) { o . push ( '<comment ref="' + d [ 0 ] + '" authorId="' + iauthor . indexOf ( escapexml ( c . a ) ) + '"><text>' ) ; o . push ( writetag ( "t" , c . t == null ? "" : c . t ) ) ; o . push ( "</text></comment>" ) } ) } ) ; o . push ( "</commentList>" ) ; if ( o . length > 2 ) { o [ o . length ] = "</comments>" ; o [ 1 ] = o [ 1 ] . re
290 : "MOVE.TOOL" , 291 : "WORKBOOK.SELECT" , 292 : "WORKBOOK.ACTIVATE" , 293 : "ASSIGN.TO.TOOL" , 295 : "COPY.TOOL" , 296 : "RESET.TOOL" , 297 : "CONSTRAIN.NUMERIC" , 298 : "PASTE.TOOL" , 302 : "WORKBOOK.NEW" , 305 : "SCENARIO.CELLS" , 306 : "SCENARIO.DELETE" , 307 : "SCENARIO.ADD" , 308 : "SCENARIO.EDIT" , 309 : "SCENARIO.SHOW" , 310 : "SCENARIO.SHOW.NEXT" , 311 : "SCENARIO.SUMMARY" , 312 : "PIVOT.TABLE.WIZARD" , 313 : "PIVOT.FIELD.PROPERTIES" , 314 : "PIVOT.FIELD" , 315 : "PIVOT.ITEM" , 316 : "PIVOT.ADD.FIELDS" , 318 : "OPTIONS.CALCULATION" , 319 : "OPTIONS.EDIT" , 320 : "OPTIONS.VIEW" , 321 : "ADDIN.MANAGER" , 322 : "MENU.EDITOR" , 323 : "ATTACH.TOOLBARS" , 324 : "VBAActivate" , 325 : "OPTIONS.CHART" , 328 : "VBA.INSERT.FILE" , 330 : "VBA.PROCEDURE.DEFINITION" , 336 : "ROUTING.SLIP" , 338 : "ROUTE.DOCUMENT" , 339 : "MAIL.LOGON" , 342 : "INSERT.PICTURE" , 343 : "EDIT.TOOL" , 344 : "GALLERY.DOUGHNUT" , 350 : "CHART.TREND" , 352 : "PIVOT.ITEM.PROPERTIES" , 354 : "WORKBOOK.INSERT" , 355 : "OPTIONS.TRANSITION" , 356 : "OPTIONS.GENERAL" , 370 : "FILTER.ADVANCED" , 373 : "MAIL.ADD.MAILER" , 374 : "MAIL.DELETE.MAILER" , 375 : "MAIL.REPLY" , 376 : "MAIL.REPLY.ALL" , 377 : "MAIL.FORWARD" , 378 : "MAIL.NEXT.LETTER" , 379 : "DATA.LABEL" , 380 : "INSERT.TITLE" , 381 : "FONT.PROPERTIES" , 382 : "MACRO.OPTIONS" , 383 : "WORKBOOK.HIDE" , 384 : "WORKBOOK.UNHIDE" , 385 : "WORKBOOK.DELETE" , 386 : "WORKBOOK.NAME" , 388 : "GALLERY.CUSTOM" , 390 : "ADD.CHART.AUTOFORMAT" , 391 : "DELETE.CHART.AUTOFORMAT" , 392 : "CHART.ADD.DATA" , 393 : "AUTO.OUTLINE" , 394 : "TAB.ORDER" , 395 : "SHOW.DIALOG" , 396 : "SELECT.ALL" , 397 : "UNGROUP.SHEETS" , 398 : "SUBTOTAL.CREATE" , 399 : "SUBTOTAL.REMOVE" , 400 : "RENAME.OBJECT" , 412 : "WORKBOOK.SCROLL" , 413 : "WORKBOOK.NEXT" , 414 : "WORKBOOK.PREV" , 415 : "WORKBOOK.TAB.SPLIT" , 416 : "FULL.SCREEN" , 417 : "WORKBOOK.PROTECT" , 420 : "SCROLLBAR.PROPERTIES" , 421 : "PIVOT.SHOW.PAGES" , 422 : "TEXT.TO.COLUMNS" , 423 : "FORMAT.CHARTTYPE" , 424 : "LINK.FORMAT" , 425 : "TRACER.DISPLAY" , 430 : "TRACER.NAVIGATE" , 431 : "TRACER.CLEAR" , 432 : "TRACER.ERROR" , 433 : "PIVOT.FIELD.GROUP" , 434 : "PIVOT.FIELD.UNGROUP" , 435 : "CHECKBOX.PROPERTIES" , 436 : "LABEL.PROPERTIES" , 437 : "LISTBOX.PROPERTIES" , 438 : "EDITBOX.PROPERTIES" , 439 : "PIVOT.REFRESH" , 440 : "LINK.COMBO" , 441 : "OPEN.TEXT" , 442 : "HIDE.DIALOG" , 443 : "SET.DIALOG.FOCUS" , 444 : "ENABLE.OBJECT" , 445 : "PUSHBUTTON.PROPERTIES" , 446 : "SET.DIALOG.DEFAULT" , 447 : "FILTER" , 448 : "FILTER.SHOW.ALL" , 449 : "CLEAR.OUTLINE" , 450 : "FUNCTION.WIZARD" , 451 : "ADD.LIST.ITEM" , 452 : "SET.LIST.ITEM" , 453 : "REMOVE.LIST.ITEM" , 454 : "SELECT.LIST.ITEM" , 455 : "SET.CONTROL.VALUE" , 456 : "SAVE.COPY.AS" , 458 : "OPTIONS.LISTS.ADD" , 459 : "OPTIONS.LISTS.DELETE" , 460 : "SERIES.AXES" , 461 : "SERIES.X" , 462 : "SERIES.Y" , 463 : "ERRORBAR.X" , 464 : "ERRORBAR.Y" , 465 : "FORMAT.CHART" , 466 : "SERIES.ORDER" , 467 : "MAIL.LOGOFF" , 468 : "CLEAR.ROUTING.SLIP" , 469 : "APP.ACTIVATE.MICROSOFT" , 470 : "MAIL.EDIT.MAILER" , 471 : "ON.SHEET" , 472 : "STANDARD.WIDTH" , 473 : "SCENARIO.MERGE" , 474 : "SUMMARY.INFO" , 475 : "FIND.FILE" , 476 : "ACTIVE.CELL.FONT" , 477 : "ENABLE.TIPWIZARD" , 478 : "VBA.MAKE.ADDIN" , 480 : "INSERTDATATABLE" , 481 : "WORKGROUP.OPTIONS" , 482 : "MAIL.SEND.MAILER" , 485 : "AUTOCORRECT" , 489 : "POST.DOCUMENT" , 491 : "PICKLIST" , 493 : "VIEW.SHOW" , 494 : "VIEW.DEFINE" , 495 : "VIEW.DELETE" , 509 : "SHEET.BACKGROUND" , 510 : "INSERT.MAP.OBJECT" , 511 : "OPTIONS.MENONO" , 517 : "MSOCHECKS" , 518 : "NORMAL" , 519 : "LAYOUT" , 520 : "RM.PRINT.AREA" , 521 : "CLEAR.PRINT.AREA" , 522 : "ADD.PRINT.AREA" , 523 : "MOVE.BRK" , 545 : "HIDECURR.NOTE" , 546 : "HIDEALL.NOTES" , 547 : "DELETE.NOTE" , 548 : "TRAVERSE.NOTES" , 549 : "ACTIVATE.NOTES" , 620 : "PROTECT.REVISIONS" , 621 : "UNPROTECT.REVISIONS" , 647 : "OPTIONS.ME" , 653 : "WEB.PUBLISH" , 667 : "NEWWEBQUERY" , 673 : "PIVOT.TABLE.CHART" , 753 : "OPTIONS.SAVE" , 755 : "OPTIONS.SPELL" , 808 : "HIDEALL.INKANNOTS" } ; var Ftab = { 0 : "COUNT" , 1 : "IF" , 2 : "ISNA" , 3 : "ISERROR" , 4 : "SUM" , 5 : "AVERAGE" , 6 : "MIN" , 7 : "MAX" , 8 : "ROW" , 9 : "COLUMN" , 10 : "NA" , 11 : "NPV" , 12 : "STDEV" , 13 : "DOLLAR" , 14 : "FIXED" , 15 : "SIN" , 16 : "COS" , 17 : "TAN" , 18 : "ATAN" , 19 : "PI" , 20 : "SQRT" , 21 : "EXP" , 22 : "LN" , 23 : "LOG10" , 24 : "ABS" , 25 : "INT" , 26 : "SIGN" , 27 : "ROUND" , 28 : "LOOKUP" , 29 : "INDEX" , 30 : "REPT" , 31 : "MID" , 32 : "LEN" , 33 : "VALUE" , 34 : "TRUE" , 35 : "FALSE" , 36 : "AND" , 37 : "OR" , 38 : "NOT" , 39 : "MOD" , 40 : "DCOUNT" , 41 : "DSUM" , 42 : "DAVERAGE" , 43 : "DMIN" , 44 : "DMAX" , 45 : "DSTDEV" , 46 : "VAR" , 47 : "DVAR" , 48 : "TEXT" , 49 : "LINEST" , 50 : "TREND" , 51 : "LOGEST" , 52 : "GROWTH" , 53 : "GOTO" , 54 : "HALT" , 55 : "RETURN" , 56 : "PV" , 57 : "FV" , 58 : "NPER" , 59 : "PMT" , 60 : "RATE" , 61 : "MIRR" , 62 : "IRR" , 63 : "RAND" , 64 : "MATCH" , 65 : "DATE" , 66 : "TIME" , 67 : "DAY" , 68 : "MONTH" , 69 : "YEAR" , 70 : "WEEKDAY" , 71 : "
++ ncolspan ; o . write _shift ( 4 , first ) ; o . write _shift ( 4 , last ) } var l = o . l ; o . l = lcs ; o . write _shift ( 4 , ncolspan ) ; o . l = l ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } function write _row _header ( ba , ws , range , R ) { var o = write _BrtRowHdr ( R , range , ws ) ; if ( o . length > 17 ) write _record ( ba , "BrtRowHdr" , o ) } var parse _BrtWsDim = parse _UncheckedRfX ; var write _BrtWsDim = write _UncheckedRfX ; function parse _BrtWsProp ( data , length ) { var z = { } ; data . l += 19 ; z . name = parse _XLSBCodeName ( data , length - 19 ) ; return z } function write _BrtWsProp ( str , o ) { if ( o == null ) o = new _buf ( 84 + 4 * str . length ) ; for ( var i = 0 ; i < 3 ; ++ i ) o . write _shift ( 1 , 0 ) ; write _BrtColor ( { auto : 1 } , o ) ; o . write _shift ( - 4 , - 1 ) ; o . write _shift ( - 4 , - 1 ) ; write _XLSBCodeName ( str , o ) ; return o . slice ( 0 , o . l ) } function parse _BrtCellBlank ( data , length ) { var cell = parse _XLSBCell ( data ) ; return [ cell ] } function write _BrtCellBlank ( cell , ncell , o ) { if ( o == null ) o = new _buf ( 8 ) ; return write _XLSBCell ( ncell , o ) } function parse _BrtCellBool ( data , length ) { var cell = parse _XLSBCell ( data ) ; var fBool = data . read _shift ( 1 ) ; return [ cell , fBool , "b" ] } function write _BrtCellBool ( cell , ncell , o ) { if ( o == null ) o = new _buf ( 9 ) ; write _XLSBCell ( ncell , o ) ; o . write _shift ( 1 , cell . v ? 1 : 0 ) ; return o } function parse _BrtCellError ( data , length ) { var cell = parse _XLSBCell ( data ) ; var bError = data . read _shift ( 1 ) ; return [ cell , bError , "e" ] } function parse _BrtCellIsst ( data , length ) { var cell = parse _XLSBCell ( data ) ; var isst = data . read _shift ( 4 ) ; return [ cell , isst , "s" ] } function write _BrtCellIsst ( cell , ncell , o ) { if ( o == null ) o = new _buf ( 12 ) ; write _XLSBCell ( ncell , o ) ; o . write _shift ( 4 , ncell . v ) ; return o } function parse _BrtCellReal ( data , length ) { var cell = parse _XLSBCell ( data ) ; var value = parse _Xnum ( data ) ; return [ cell , value , "n" ] } function write _BrtCellReal ( cell , ncell , o ) { if ( o == null ) o = new _buf ( 16 ) ; write _XLSBCell ( ncell , o ) ; write _Xnum ( cell . v , o ) ; return o } function parse _BrtCellRk ( data , length ) { var cell = parse _XLSBCell ( data ) ; var value = parse _RkNumber ( data ) ; return [ cell , value , "n" ] } function write _BrtCellRk ( cell , ncell , o ) { if ( o == null ) o = new _buf ( 12 ) ; write _XLSBCell ( ncell , o ) ; write _RkNumber ( cell . v , o ) ; return o } function parse _BrtCellSt ( data , length ) { var cell = parse _XLSBCell ( data ) ; var value = parse _XLWideString ( data ) ; return [ cell , value , "str" ] } function write _BrtCellSt ( cell , ncell , o ) { if ( o == null ) o = new _buf ( 12 + 4 * cell . v . length ) ; write _XLSBCell ( ncell , o ) ; write _XLWideString ( cell . v , o ) ; return o . length > o . l ? o . slice ( 0 , o . l ) : o } function parse _BrtFmlaBool ( data , length , opts ) { var end = data . l + length ; var cell = parse _XLSBCell ( data ) ; cell . r = opts [ "!row" ] ; var value = data . read _shift ( 1 ) ; var o = [ cell , value , "b" ] ; if ( opts . cellFormula ) { data . l += 2 ; var formula = parse _XLSBCellParsedFormula ( data , end - data . l , opts ) ; o [ 3 ] = stringify _formula ( formula , null , cell , opts . supbooks , opts ) } else data . l = end ; return o } function parse _BrtFmlaError ( data , length , opts ) { var end = data . l + length ; var cell = parse _XLSBCell ( data ) ; cell . r = opts [ "!row" ] ; var value = data . read _shift ( 1 ) ; var o = [ cell , value , "e" ] ; if ( opts . cellFormula ) { data . l += 2 ; var formula = parse _XLSBCellParsedFormula ( data , end - data . l , opts ) ; o [ 3 ] = stringify _formula ( formula , null , cell , opts . supbooks , opts ) } else data . l = end ; return o } function parse _BrtFmlaNum ( data , length , opts ) { var end = data . l + length ; var cell = parse _XLSBCell ( data ) ; cell . r = opts [ "!row" ] ; var value = parse _Xnum ( data ) ; var o = [ cell , value , "n" ] ; if ( opts . cellFormula ) { data . l += 2 ; var formula = parse _XLSBCellParsedFormula ( data , end - data . l , opts ) ; o [ 3 ] = stringify _formula ( formula , null , cell , opts . supbooks , opts ) } else data . l = end ; return o } function parse _BrtFmlaString ( data , length , opts ) { var end = data . l + length ; var cell = parse _XLSBCell ( data ) ; cell . r = opts [ "!row" ] ; var value = parse _XLWideString ( data ) ; var o = [ cell , value , "str" ] ; if ( opts . cellFormula ) { data . l += 2 ; var formula = parse _XLSBCellParsedFormula ( data , end - data . l , opts ) ; o [ 3 ] = stringify _formula ( formula , null , cell , opts . supbooks , opts ) } else data . l = end ; return o } var parse _BrtMergeCell = parse _UncheckedRfX ; var write _BrtMergeCell = write _UncheckedRfX ; function write _BrtBeginMergeCells ( cnt , o ) { if ( o == null ) o = new _buf ( 4 ) ; o . write _shift ( 4 , cnt ) ; return o } function parse _BrtHLink ( data , length , opts ) { var end = data . l + length ; var rfx = parse _UncheckedRfX ( data , 16 ) ; var relId = parse _XLNullableWideString ( data ) ; var loc = parse _XLWideString ( data ) ; var tooltip = parse _XLWideString ( data ) ; var display = parse _XLWideString ( data ) ; data . l = end ;
var oval = val ; switch ( ( cp [ 0 ] . match ( /dt:dt="([\w.]+)"/ ) || [ "" , "" ] ) [ 1 ] ) { case "boolean" : oval = parsexmlbool ( val ) ; break ; case "i2" : case "int" : oval = parseInt ( val , 10 ) ; break ; case "r4" : case "float" : oval = parseFloat ( val ) ; break ; case "date" : case "dateTime.tz" : oval = parseDate ( val ) ; break ; case "i8" : case "string" : case "fixed" : case "uuid" : case "bin.base64" : break ; default : throw new Error ( "bad custprop:" + cp [ 0 ] ) } Custprops [ unescapexml ( Rn [ 3 ] ) ] = oval } function safe _format _xlml ( cell , nf , o ) { if ( cell . t === "z" ) return ; if ( ! o || o . cellText !== false ) try { if ( cell . t === "e" ) { cell . w = cell . w || BErr [ cell . v ] } else if ( nf === "General" ) { if ( cell . t === "n" ) { if ( ( cell . v | 0 ) === cell . v ) cell . w = SSF . _general _int ( cell . v ) ; else cell . w = SSF . _general _num ( cell . v ) } else cell . w = SSF . _general ( cell . v ) } else cell . w = xlml _format ( nf || "General" , cell . v ) } catch ( e ) { if ( o . WTF ) throw e } try { var z = XLMLFormatMap [ nf ] || nf || "General" ; if ( o . cellNF ) cell . z = z ; if ( o . cellDates && cell . t == "n" && SSF . is _date ( z ) ) { var _d = SSF . parse _date _code ( cell . v ) ; if ( _d ) { cell . t = "d" ; cell . v = new Date ( Date . UTC ( _d . y , _d . m - 1 , _d . d , _d . H , _d . M , _d . S , _d . u ) ) } } } catch ( e ) { if ( o . WTF ) throw e } } function process _style _xlml ( styles , stag , opts ) { if ( opts . cellStyles ) { if ( stag . Interior ) { var I = stag . Interior ; if ( I . Pattern ) I . patternType = XLMLPatternTypeMap [ I . Pattern ] || I . Pattern } } styles [ stag . ID ] = stag } function parse _xlml _data ( xml , ss , data , cell , base , styles , csty , row , arrayf , o ) { var nf = "General" , sid = cell . StyleID , S = { } ; o = o || { } ; var interiors = [ ] ; var i = 0 ; if ( sid === undefined && row ) sid = row . StyleID ; if ( sid === undefined && csty ) sid = csty . StyleID ; while ( styles [ sid ] !== undefined ) { if ( styles [ sid ] . nf ) nf = styles [ sid ] . nf ; if ( styles [ sid ] . Interior ) interiors . push ( styles [ sid ] . Interior ) ; if ( ! styles [ sid ] . Parent ) break ; sid = styles [ sid ] . Parent } switch ( data . Type ) { case "Boolean" : cell . t = "b" ; cell . v = parsexmlbool ( xml ) ; break ; case "String" : cell . t = "s" ; cell . r = xlml _fixstr ( unescapexml ( xml ) ) ; cell . v = xml . indexOf ( "<" ) > - 1 ? unescapexml ( ss ) : cell . r ; break ; case "DateTime" : cell . v = ( parseDate ( xml ) - new Date ( Date . UTC ( 1899 , 11 , 30 ) ) ) / ( 24 * 60 * 60 * 1e3 ) ; if ( cell . v !== cell . v ) cell . v = unescapexml ( xml ) ; else if ( cell . v < 60 ) cell . v = cell . v - 1 ; if ( ! nf || nf == "General" ) nf = "yyyy-mm-dd" ; case "Number" : if ( cell . v === undefined ) cell . v = + xml ; if ( ! cell . t ) cell . t = "n" ; break ; case "Error" : cell . t = "e" ; cell . v = RBErr [ xml ] ; if ( o . cellText !== false ) cell . w = xml ; break ; default : cell . t = "s" ; cell . v = xlml _fixstr ( ss || xml ) ; break } safe _format _xlml ( cell , nf , o ) ; if ( o . cellFormula !== false ) { if ( cell . Formula ) { var fstr = unescapexml ( cell . Formula ) ; if ( fstr . charCodeAt ( 0 ) == 61 ) fstr = fstr . substr ( 1 ) ; cell . f = rc _to _a1 ( fstr , base ) ; delete cell . Formula ; if ( cell . ArrayRange == "RC" ) cell . F = rc _to _a1 ( "RC:RC" , base ) ; else if ( cell . ArrayRange ) { cell . F = rc _to _a1 ( cell . ArrayRange , base ) ; arrayf . push ( [ safe _decode _range ( cell . F ) , cell . F ] ) } } else { for ( i = 0 ; i < arrayf . length ; ++ i ) if ( base . r >= arrayf [ i ] [ 0 ] . s . r && base . r <= arrayf [ i ] [ 0 ] . e . r ) if ( base . c >= arrayf [ i ] [ 0 ] . s . c && base . c <= arrayf [ i ] [ 0 ] . e . c ) cell . F = arrayf [ i ] [ 1 ] } } if ( o . cellStyles ) { interiors . forEach ( function ( x ) { if ( ! S . patternType && x . patternType ) S . patternType = x . patternType } ) ; cell . s = S } cell . ixfe = cell . StyleID !== undefined ? cell . StyleID : "Default" } function xlml _clean _comment ( comment ) { comment . t = comment . v || "" ; comment . t = comment . t . replace ( /\r\n/g , "\n" ) . replace ( /\r/g , "\n" ) ; comment . v = comment . w = comment . ixfe = undefined } function xlml _normalize ( d ) { if ( has _buf && Buffer . isBuffer ( d ) ) return d . toString ( "utf8" ) ; if ( typeof d === "string" ) return d ; throw new Error ( "Bad input format: expected Buffer or string" ) } var xlmlregex = /<(\/?)([^\s?>!\/:]*:|)([^\s?>]*[^\s?>\/])[^>]*>/gm ; function parse _xlml _xml ( d , opts ) { make _ssf ( SSF ) ; var str = debom ( xlml _normalize ( d ) ) ; if ( opts && opts . type == "binary" && typeof cptable !== "undefined" ) str = cptable . utils . decode ( 65001 , char _codes ( str ) ) ; if ( str . substr ( 0 , 1e3 ) . indexOf ( "<html" ) >= 0 ) return HTML _ . to _workbook ( str , opts ) ; var Rn ; var state = [ ] , tmp ; if ( DENSE != null && opts . dense == null ) opts . dense = DENSE ; var sheets = { } , sheetnames = [ ] , cursheet = opts . dense ? [ ] : { } , sheetname = "" ; var table = { } , cell = { } , row = { } ; var dtag = xlml _parsexmltag ( '<Data ss:Type="String">' ) , didx = 0 ; var c = 0 , r = 0 ; var refguess = { s : { r : 2e6 , c : 2e6 } , e : { r : 0 , c : 0 } } ; var styles = { } , stag = { } ; var ss = "" , fidx = 0 ; var mergecells = [ ] ; var Props = { } , Custprops = { } , pidx = 0 , cp = { } ; var comments = [ ] , comment = { } ; var cstys = [ ] , csty , seencol = false ; var arrayf = [ ] ; var rowinfo = [ ] , rowobj = { } ; v
break ; case "Protect" : out [ "!protect" ] = val ; break ; case "Password" : if ( val !== 0 && opts . WTF ) console . error ( "Password verifier: " + val ) ; break ; case "Prot4Rev" : case "Prot4RevPass" : break ; case "BoundSheet8" : { Directory [ val . pos ] = val ; opts . snames . push ( val . name ) } break ; case "EOF" : { if ( -- file _depth ) break ; if ( range . e ) { if ( range . e . r > 0 && range . e . c > 0 ) { range . e . r -- ; range . e . c -- ; out [ "!ref" ] = encode _range ( range ) ; range . e . r ++ ; range . e . c ++ } if ( mergecells . length > 0 ) out [ "!merges" ] = mergecells ; if ( objects . length > 0 ) out [ "!objects" ] = objects ; if ( colinfo . length > 0 ) out [ "!cols" ] = colinfo ; if ( rowinfo . length > 0 ) out [ "!rows" ] = rowinfo ; Workbook . Sheets . push ( wsprops ) } if ( cur _sheet === "" ) Preamble = out ; else Sheets [ cur _sheet ] = out ; out = options . dense ? [ ] : { } } break ; case "BOF" : { if ( opts . biff !== 8 ) { } else if ( RecordType === 9 ) opts . biff = 2 ; else if ( RecordType === 521 ) opts . biff = 3 ; else if ( RecordType === 1033 ) opts . biff = 4 ; else if ( val . BIFFVer === 1280 ) opts . biff = 5 ; else if ( val . BIFFVer === 1536 ) opts . biff = 8 ; else if ( val . BIFFVer === 2 ) opts . biff = 2 ; else if ( val . BIFFVer === 7 ) opts . biff = 2 ; if ( file _depth ++ ) break ; cell _valid = true ; out = options . dense ? [ ] : { } ; if ( opts . biff < 5 ) { if ( cur _sheet === "" ) cur _sheet = "Sheet1" ; range = { s : { r : 0 , c : 0 } , e : { r : 0 , c : 0 } } ; var fakebs8 = { pos : blob . l - length , name : cur _sheet } ; Directory [ fakebs8 . pos ] = fakebs8 ; opts . snames . push ( cur _sheet ) } else cur _sheet = ( Directory [ s ] || { name : "" } ) . name ; if ( val . dt == 32 ) out [ "!type" ] = "chart" ; mergecells = [ ] ; objects = [ ] ; array _formulae = [ ] ; opts . arrayf = array _formulae ; colinfo = [ ] ; rowinfo = [ ] ; defwidth = defheight = 0 ; seencol = false ; wsprops = { Hidden : ( Directory [ s ] || { hs : 0 } ) . hs , name : cur _sheet } } break ; case "Number" : case "BIFF2NUM" : case "BIFF2INT" : { if ( out [ "!type" ] == "chart" ) if ( options . dense ? ( out [ val . r ] || [ ] ) [ val . c ] : out [ encode _cell ( { c : val . c , r : val . r } ) ] ) ++ val . c ; temp _val = { ixfe : val . ixfe , XF : XFs [ val . ixfe ] || { } , v : val . val , t : "n" } ; if ( BIFF2Fmt > 0 ) temp _val . z = BIFF2FmtTable [ temp _val . ixfe >> 8 & 31 ] ; safe _format _xf ( temp _val , options , wb . opts . Date1904 ) ; addcell ( { c : val . c , r : val . r } , temp _val , options ) } break ; case "BoolErr" : { temp _val = { ixfe : val . ixfe , XF : XFs [ val . ixfe ] , v : val . val , t : val . t } ; if ( BIFF2Fmt > 0 ) temp _val . z = BIFF2FmtTable [ temp _val . ixfe >> 8 & 31 ] ; safe _format _xf ( temp _val , options , wb . opts . Date1904 ) ; addcell ( { c : val . c , r : val . r } , temp _val , options ) } break ; case "RK" : { temp _val = { ixfe : val . ixfe , XF : XFs [ val . ixfe ] , v : val . rknum , t : "n" } ; if ( BIFF2Fmt > 0 ) temp _val . z = BIFF2FmtTable [ temp _val . ixfe >> 8 & 31 ] ; safe _format _xf ( temp _val , options , wb . opts . Date1904 ) ; addcell ( { c : val . c , r : val . r } , temp _val , options ) } break ; case "MulRk" : { for ( var j = val . c ; j <= val . C ; ++ j ) { var ixfe = val . rkrec [ j - val . c ] [ 0 ] ; temp _val = { ixfe : ixfe , XF : XFs [ ixfe ] , v : val . rkrec [ j - val . c ] [ 1 ] , t : "n" } ; if ( BIFF2Fmt > 0 ) temp _val . z = BIFF2FmtTable [ temp _val . ixfe >> 8 & 31 ] ; safe _format _xf ( temp _val , options , wb . opts . Date1904 ) ; addcell ( { c : j , r : val . r } , temp _val , options ) } } break ; case "Formula" : { if ( val . val == "String" ) { last _formula = val ; break } temp _val = { v : val . val , ixfe : val . cell . ixfe , t : val . tt } ; temp _val . XF = XFs [ temp _val . ixfe ] ; if ( options . cellFormula ) { var _f = val . formula ; if ( _f && _f [ 0 ] && _f [ 0 ] [ 0 ] && _f [ 0 ] [ 0 ] [ 0 ] == "PtgExp" ) { var _fr = _f [ 0 ] [ 0 ] [ 1 ] [ 0 ] , _fc = _f [ 0 ] [ 0 ] [ 1 ] [ 1 ] ; var _fe = encode _cell ( { r : _fr , c : _fc } ) ; if ( shared _formulae [ _fe ] ) temp _val . f = "" + stringify _formula ( val . formula , range , val . cell , supbooks , opts ) ; else temp _val . F = ( ( options . dense ? ( out [ _fr ] || [ ] ) [ _fc ] : out [ _fe ] ) || { } ) . F } else temp _val . f = "" + stringify _formula ( val . formula , range , val . cell , supbooks , opts ) } if ( BIFF2Fmt > 0 ) temp _val . z = BIFF2FmtTable [ temp _val . ixfe >> 8 & 31 ] ; safe _format _xf ( temp _val , options , wb . opts . Date1904 ) ; addcell ( val . cell , temp _val , options ) ; last _formula = val } break ; case "String" : { if ( last _formula ) { last _formula . val = val ; temp _val = { v : val , ixfe : last _formula . cell . ixfe , t : "s" } ; temp _val . XF = XFs [ temp _val . ixfe ] ; if ( options . cellFormula ) { temp _val . f = "" + stringify _formula ( last _formula . formula , range , last _formula . cell , supbooks , opts ) } if ( BIFF2Fmt > 0 ) temp _val . z = BIFF2FmtTable [ temp _val . ixfe >> 8 & 31 ] ; safe _format _xf ( temp _val , options , wb . opts . Date1904 ) ; addcell ( last _formula . cell , temp _val , options ) ; last _formula = null } else throw new Error ( "String record expects Formula" ) } break ; case "Array" : { array _formulae . push ( val ) ; var _arraystart = encode _cell ( val [ 0 ] . s ) ; cc = options . dense ? ( out [ val [ 0 ] . s . r ] || [ ] ) [ val [ 0 ] . s . c ] : out [ _arraystart ] ; if ( options . cellFormula && cc ) { if ( ! last _formula ) break ; if ( ! _arraystart || ! cc ) break ; cc . f = "" + stringify _formula ( va
f : parse _RelID } , 551 : { n : "BrtLegacyDrawing" , f : parsenoop } , 552 : { n : "BrtLegacyDrawingHF" , f : parsenoop } , 553 : { n : "BrtWebOpt" , f : parsenoop } , 554 : { n : "BrtBeginWebPubItems" , f : parsenoop } , 555 : { n : "BrtEndWebPubItems" , f : parsenoop } , 556 : { n : "BrtBeginWebPubItem" , f : parsenoop } , 557 : { n : "BrtEndWebPubItem" , f : parsenoop } , 558 : { n : "BrtBeginSXCondFmt" , f : parsenoop } , 559 : { n : "BrtEndSXCondFmt" , f : parsenoop } , 560 : { n : "BrtBeginSXCondFmts" , f : parsenoop } , 561 : { n : "BrtEndSXCondFmts" , f : parsenoop } , 562 : { n : "BrtBkHim" , f : parsenoop } , 564 : { n : "BrtColor" , f : parsenoop } , 565 : { n : "BrtBeginIndexedColors" , f : parsenoop } , 566 : { n : "BrtEndIndexedColors" , f : parsenoop } , 569 : { n : "BrtBeginMRUColors" , f : parsenoop } , 570 : { n : "BrtEndMRUColors" , f : parsenoop } , 572 : { n : "BrtMRUColor" , f : parsenoop } , 573 : { n : "BrtBeginDVals" , f : parsenoop } , 574 : { n : "BrtEndDVals" , f : parsenoop } , 577 : { n : "BrtSupNameStart" , f : parsenoop } , 578 : { n : "BrtSupNameValueStart" , f : parsenoop } , 579 : { n : "BrtSupNameValueEnd" , f : parsenoop } , 580 : { n : "BrtSupNameNum" , f : parsenoop } , 581 : { n : "BrtSupNameErr" , f : parsenoop } , 582 : { n : "BrtSupNameSt" , f : parsenoop } , 583 : { n : "BrtSupNameNil" , f : parsenoop } , 584 : { n : "BrtSupNameBool" , f : parsenoop } , 585 : { n : "BrtSupNameFmla" , f : parsenoop } , 586 : { n : "BrtSupNameBits" , f : parsenoop } , 587 : { n : "BrtSupNameEnd" , f : parsenoop } , 588 : { n : "BrtEndSupBook" , f : parsenoop } , 589 : { n : "BrtCellSmartTagProperty" , f : parsenoop } , 590 : { n : "BrtBeginCellSmartTag" , f : parsenoop } , 591 : { n : "BrtEndCellSmartTag" , f : parsenoop } , 592 : { n : "BrtBeginCellSmartTags" , f : parsenoop } , 593 : { n : "BrtEndCellSmartTags" , f : parsenoop } , 594 : { n : "BrtBeginSmartTags" , f : parsenoop } , 595 : { n : "BrtEndSmartTags" , f : parsenoop } , 596 : { n : "BrtSmartTagType" , f : parsenoop } , 597 : { n : "BrtBeginSmartTagTypes" , f : parsenoop } , 598 : { n : "BrtEndSmartTagTypes" , f : parsenoop } , 599 : { n : "BrtBeginSXFilters" , f : parsenoop } , 600 : { n : "BrtEndSXFilters" , f : parsenoop } , 601 : { n : "BrtBeginSXFILTER" , f : parsenoop } , 602 : { n : "BrtEndSXFilter" , f : parsenoop } , 603 : { n : "BrtBeginFills" , f : parsenoop } , 604 : { n : "BrtEndFills" , f : parsenoop } , 605 : { n : "BrtBeginCellWatches" , f : parsenoop } , 606 : { n : "BrtEndCellWatches" , f : parsenoop } , 607 : { n : "BrtCellWatch" , f : parsenoop } , 608 : { n : "BrtBeginCRErrs" , f : parsenoop } , 609 : { n : "BrtEndCRErrs" , f : parsenoop } , 610 : { n : "BrtCrashRecErr" , f : parsenoop } , 611 : { n : "BrtBeginFonts" , f : parsenoop } , 612 : { n : "BrtEndFonts" , f : parsenoop } , 613 : { n : "BrtBeginBorders" , f : parsenoop } , 614 : { n : "BrtEndBorders" , f : parsenoop } , 615 : { n : "BrtBeginFmts" , f : parsenoop } , 616 : { n : "BrtEndFmts" , f : parsenoop } , 617 : { n : "BrtBeginCellXFs" , f : parsenoop } , 618 : { n : "BrtEndCellXFs" , f : parsenoop } , 619 : { n : "BrtBeginStyles" , f : parsenoop } , 620 : { n : "BrtEndStyles" , f : parsenoop } , 625 : { n : "BrtBigName" , f : parsenoop } , 626 : { n : "BrtBeginCellStyleXFs" , f : parsenoop } , 627 : { n : "BrtEndCellStyleXFs" , f : parsenoop } , 628 : { n : "BrtBeginComments" , f : parsenoop } , 629 : { n : "BrtEndComments" , f : parsenoop } , 630 : { n : "BrtBeginCommentAuthors" , f : parsenoop } , 631 : { n : "BrtEndCommentAuthors" , f : parsenoop } , 632 : { n : "BrtCommentAuthor" , f : parse _BrtCommentAuthor } , 633 : { n : "BrtBeginCommentList" , f : parsenoop } , 634 : { n : "BrtEndCommentList" , f : parsenoop } , 635 : { n : "BrtBeginComment" , f : parse _BrtBeginComment } , 636 : { n : "BrtEndComment" , f : parsenoop } , 637 : { n : "BrtCommentText" , f : parse _BrtCommentText } , 638 : { n : "BrtBeginOleObjects" , f : parsenoop } , 639 : { n : "BrtOleObject" , f : parsenoop } , 640 : { n : "BrtEndOleObjects" , f : parsenoop } , 641 : { n : "BrtBeginSxrules" , f : parsenoop } , 642 : { n : "BrtEndSxRules" , f : parsenoop } , 643 : { n : "BrtBeginActiveXControls" , f : parsenoop } , 644 : { n : "BrtActiveX" , f : parsenoop } , 645 : { n : "BrtEndActiveXControls" , f : parsenoop } , 646 : { n : "BrtBeginPCDSDTCEMembersSortBy" , f : parsenoop } , 648 : { n : "BrtBeginCellIgnoreECs" , f : parsenoop } , 649 : { n : "BrtCellIgnoreEC" , f : parsenoop } , 650 : { n : "BrtEndCellIgnoreECs" , f : parsenoop } , 651 : { n : "BrtCsProp" , f : parsenoop } , 652 : { n : "BrtCsPageSetup" , f : parsenoop } , 653 : { n : "BrtBeginUserCsViews" , f : parsenoop } , 654 : { n : "BrtEndUserCsViews" , f : parsenoop } , 655 : { n : "BrtBeginUserCsView" , f : parsenoop } , 656 : { n : "BrtEndUserCsView" , f : parsenoop } , 657 : { n : "BrtBeginPcdSFCIEntries" , f : parsenoop } , 658 : { n : "BrtEndPCDSFCIEntries" , f : parsenoop } , 659 : { n : "BrtPCDSFCIEntry" , f : parsenoop } , 660 : { n : "BrtBeginListParts" , f : parsenoop } , 661 : { n : "BrtListPart" , f : parsenoop } , 662 : { n : "BrtEndListParts" , f : parsenoop } , 663 : { n : "BrtSheetCalcProp" , f : parsenoop } , 664 : { n : "BrtBeginFnGroup" , f : parsenoop } , 665 : { n : "BrtFnGroup" , f : parsenoop } , 666 : { n : "BrtEndFnGroup" , f : par
++ R ; C = 0 ; continue } if ( row . substr ( 0 , 3 ) != "<td" ) continue ; var cells = row . split ( "</td>" ) ; for ( j = 0 ; j < cells . length ; ++ j ) { var cell = cells [ j ] . trim ( ) ; if ( cell . substr ( 0 , 3 ) != "<td" ) continue ; var m = cell , cc = 0 ; while ( m . charAt ( 0 ) == "<" && ( cc = m . indexOf ( ">" ) ) > - 1 ) m = m . slice ( cc + 1 ) ; while ( m . indexOf ( ">" ) > - 1 ) m = m . slice ( 0 , m . lastIndexOf ( "<" ) ) ; var tag = parsexmltag ( cell . slice ( 0 , cell . indexOf ( ">" ) ) ) ; CS = tag . colspan ? + tag . colspan : 1 ; if ( ( RS = + tag . rowspan ) > 0 || CS > 1 ) merges . push ( { s : { r : R , c : C } , e : { r : R + ( RS || 1 ) - 1 , c : C + CS - 1 } } ) ; if ( ! m . length ) { C += CS ; continue } m = unescapexml ( m ) . replace ( /[\r\n]/g , "" ) ; if ( range . s . r > R ) range . s . r = R ; if ( range . e . r < R ) range . e . r = R ; if ( range . s . c > C ) range . s . c = C ; if ( range . e . c < C ) range . e . c = C ; if ( opts . dense ) { if ( ! ws [ R ] ) ws [ R ] = [ ] ; if ( Number ( m ) == Number ( m ) ) ws [ R ] [ C ] = { t : "n" , v : + m } ; else ws [ R ] [ C ] = { t : "s" , v : m } } else { var coord = encode _cell ( { r : R , c : C } ) ; if ( Number ( m ) == Number ( m ) ) ws [ coord ] = { t : "n" , v : + m } ; else ws [ coord ] = { t : "s" , v : m } } C += CS } } ws [ "!ref" ] = encode _range ( range ) ; return ws } function html _to _book ( str , opts ) { return sheet _to _workbook ( html _to _sheet ( str , opts ) , opts ) } function make _html _row ( ws , r , R , o ) { var M = ws [ "!merges" ] || [ ] ; var oo = [ ] ; for ( var C = r . s . c ; C <= r . e . c ; ++ C ) { var RS = 0 , CS = 0 ; for ( var j = 0 ; j < M . length ; ++ j ) { if ( M [ j ] . s . r > R || M [ j ] . s . c > C ) continue ; if ( M [ j ] . e . r < R || M [ j ] . e . c < C ) continue ; if ( M [ j ] . s . r < R || M [ j ] . s . c < C ) { RS = - 1 ; break } RS = M [ j ] . e . r - M [ j ] . s . r + 1 ; CS = M [ j ] . e . c - M [ j ] . s . c + 1 ; break } if ( RS < 0 ) continue ; var coord = encode _cell ( { r : R , c : C } ) ; var cell = o . dense ? ( ws [ R ] || [ ] ) [ C ] : ws [ coord ] ; if ( ! cell || cell . v == null ) { oo . push ( "<td></td>" ) ; continue } var w = cell . h || escapexml ( cell . w || ( format _cell ( cell ) , cell . w ) || "" ) ; var sp = { } ; if ( RS > 1 ) sp . rowspan = RS ; if ( CS > 1 ) sp . colspan = CS ; oo . push ( writextag ( "td" , w , sp ) ) } return "<tr>" + oo . join ( "" ) + "</tr>" } function sheet _to _html ( ws , opts ) { var o = [ ] ; var r = decode _range ( ws [ "!ref" ] ) ; o . dense = Array . isArray ( ws ) ; for ( var R = r . s . r ; R <= r . e . r ; ++ R ) o . push ( make _html _row ( ws , r , R , o ) ) ; return "<html><body><table>" + o . join ( "" ) + "</table></body></html>" } return { to _workbook : html _to _book , to _sheet : html _to _sheet , _row : make _html _row , from _sheet : sheet _to _html } } ( ) ; function parse _dom _table ( table , _opts ) { var opts = _opts || { } ; if ( DENSE != null ) opts . dense = DENSE ; var ws = opts . dense ? [ ] : { } ; var rows = table . getElementsByTagName ( "tr" ) ; var range = { s : { r : 0 , c : 0 } , e : { r : rows . length - 1 , c : 0 } } ; var merges = [ ] , midx = 0 ; var R = 0 , _C = 0 , C = 0 , RS = 0 , CS = 0 ; for ( ; R < rows . length ; ++ R ) { var row = rows [ R ] ; var elts = row . children ; for ( _C = C = 0 ; _C < elts . length ; ++ _C ) { var elt = elts [ _C ] , v = elts [ _C ] . innerText ; for ( midx = 0 ; midx < merges . length ; ++ midx ) { var m = merges [ midx ] ; if ( m . s . c == C && m . s . r <= R && R <= m . e . r ) { C = m . e . c + 1 ; midx = - 1 } } CS = + elt . getAttribute ( "colspan" ) || 1 ; if ( ( RS = + elt . getAttribute ( "rowspan" ) ) > 0 || CS > 1 ) merges . push ( { s : { r : R , c : C } , e : { r : R + ( RS || 1 ) - 1 , c : C + CS - 1 } } ) ; var o = { t : "s" , v : v } ; if ( v != null && v . length && ! isNaN ( Number ( v ) ) ) o = { t : "n" , v : Number ( v ) } ; if ( opts . dense ) { if ( ! ws [ R ] ) ws [ R ] = [ ] ; ws [ R ] [ C ] = o } else ws [ encode _cell ( { c : C , r : R } ) ] = o ; if ( range . e . c < C ) range . e . c = C ; C += CS } } ws [ "!merges" ] = merges ; ws [ "!ref" ] = encode _range ( range ) ; return ws } function table _to _book ( table , opts ) { return sheet _to _workbook ( parse _dom _table ( table , opts ) , opts ) } var parse _content _xml = function ( ) { var parse _text _p = function ( text , tag ) { return unescapexml ( text . replace ( /<text:s\/>/g , " " ) . replace ( /<[^>]*>/g , "" ) ) } ; var number _formats = { day : [ "d" , "dd" ] , month : [ "m" , "mm" ] , year : [ "y" , "yy" ] , hours : [ "h" , "hh" ] , minutes : [ "m" , "mm" ] , seconds : [ "s" , "ss" ] , "am-pm" : [ "A/P" , "AM/PM" ] , "day-of-week" : [ "ddd" , "dddd" ] } ; return function pcx ( d , _opts ) { var opts = _opts || { } ; if ( DENSE != null && opts . dense == null ) opts . dense = DENSE ; var str = xlml _normalize ( d ) ; var state = [ ] , tmp ; var tag ; var NFtag = { name : "" } , NF = "" , pidx = 0 ; var sheetag ; var rowtag ; var Sheets = { } , SheetNames = [ ] ; var ws = opts . dense ? [ ] : { } ; var Rn , q ; var ctag = { value : "" } ; var textp = "" , textpidx = 0 , textptag ; var R = - 1 , C = - 1 , range = { s : { r : 1e6 , c : 1e7 } , e : { r : 0 , c : 0 } } ; var number _format _map = { } ; var merges = [ ] , mrange = { } , mR = 0 , mC = 0 ; var arrayf = [ ] ; var comments = [ ] , comment = { } ; var creator = "" , creatoridx = 0 ; var rept = 1 , isstub = false ; var i = 0 ; xlmlregex . lastIndex = 0 ; str = str . replace ( /<!--([^\u2603]*?)-->/gm , "" ) . replace ( /<!DOCTYPE[^\[]*\[[^\]]*\]>/gm , "" ) ; while ( Rn = xlmlregex . exec ( str ) ) switch ( Rn [ 3 ] = Rn [ 3 ] . replace ( /_.*$/ , "" ) ) { case "table" : case "工作表" : if ( Rn [ 1 ] === "/" ) { if ( range . e . c >= range . s . c && range . e . r >= range . s . r ) ws [ "!ref" ] = encode _range ( range ) ; if ( merges . length )
case "base64" : oopts . type = "base64" ; break ; case "binary" : oopts . type = "string" ; break ; case "buffer" : case "file" : oopts . type = "nodebuffer" ; break ; default : throw new Error ( "Unrecognized type " + o . type ) } if ( o . type === "file" ) return _fs . writeFileSync ( o . file , z . generate ( oopts ) ) ; return z . generate ( oopts ) } function write _bstr _type ( out , opts ) { switch ( opts . type ) { case "base64" : return Base64 . encode ( out ) ; case "binary" : return out ; case "file" : return _fs . writeFileSync ( opts . file , out , "binary" ) ; case "buffer" : { if ( has _buf ) return new Buffer ( out , "utf8" ) ; else return out . split ( "" ) . map ( function ( c ) { return c . charCodeAt ( 0 ) } ) } } throw new Error ( "Unrecognized type " + opts . type ) } function write _string _type ( out , opts ) { switch ( opts . type ) { case "base64" : return Base64 . encode ( out ) ; case "binary" : return out ; case "file" : return _fs . writeFileSync ( opts . file , out , "utf8" ) ; case "buffer" : { if ( has _buf ) return new Buffer ( out , "utf8" ) ; else return out . split ( "" ) . map ( function ( c ) { return c . charCodeAt ( 0 ) } ) } } throw new Error ( "Unrecognized type " + opts . type ) } function write _binary _type ( out , opts ) { switch ( opts . type ) { case "base64" : case "binary" : var bstr = "" ; for ( var i = 0 ; i < out . length ; ++ i ) bstr += String . fromCharCode ( out [ i ] ) ; return opts . type == "base64" ? Base64 . encode ( bstr ) : bstr ; case "file" : return _fs . writeFileSync ( opts . file , out ) ; case "buffer" : return out ; default : throw new Error ( "Unrecognized type " + opts . type ) } } function writeSync ( wb , opts ) { check _wb ( wb ) ; var o = opts || { } ; switch ( o . bookType || "xlsb" ) { case "xml" : case "xlml" : return write _string _type ( write _xlml ( wb , o ) , o ) ; case "slk" : case "sylk" : return write _string _type ( write _slk _str ( wb , o ) , o ) ; case "html" : return write _string _type ( write _htm _str ( wb , o ) , o ) ; case "txt" : return write _bstr _type ( write _txt _str ( wb , o ) , o ) ; case "csv" : return write _string _type ( write _csv _str ( wb , o ) , o ) ; case "dif" : return write _string _type ( write _dif _str ( wb , o ) , o ) ; case "prn" : return write _string _type ( write _prn _str ( wb , o ) , o ) ; case "fods" : return write _string _type ( write _ods ( wb , o ) , o ) ; case "biff2" : return write _binary _type ( write _biff _buf ( wb , o ) , o ) ; case "xlsx" : case "xlsm" : case "xlsb" : case "ods" : return write _zip _type ( wb , o ) ; default : throw new Error ( "Unrecognized bookType |" + o . bookType + "|" ) } } function resolve _book _type ( o ) { if ( ! o . bookType ) switch ( o . file . slice ( o . file . lastIndexOf ( "." ) ) . toLowerCase ( ) ) { case ".xlsx" : o . bookType = "xlsx" ; break ; case ".xlsm" : o . bookType = "xlsm" ; break ; case ".xlsb" : o . bookType = "xlsb" ; break ; case ".fods" : o . bookType = "fods" ; break ; case ".xlml" : o . bookType = "xlml" ; break ; case ".sylk" : o . bookType = "sylk" ; break ; case ".html" : o . bookType = "html" ; break ; case ".xls" : o . bookType = "biff2" ; break ; case ".xml" : o . bookType = "xml" ; break ; case ".ods" : o . bookType = "ods" ; break ; case ".csv" : o . bookType = "csv" ; break ; case ".txt" : o . bookType = "txt" ; break ; case ".dif" : o . bookType = "dif" ; break ; case ".prn" : o . bookType = "prn" ; break ; case ".slk" : o . bookType = "sylk" ; break ; case ".htm" : o . bookType = "html" ; break } } function writeFileSync ( wb , filename , opts ) { var o = opts || { } ; o . type = "file" ; o . file = filename ; resolve _book _type ( o ) ; return writeSync ( wb , o ) } function writeFileAsync ( filename , wb , opts , cb ) { var o = opts || { } ; o . type = "file" ; o . file = filename ; resolve _book _type ( o ) ; o . type = "buffer" ; var _cb = cb ; if ( ! ( _cb instanceof Function ) ) _cb = opts ; return _fs . writeFile ( filename , writeSync ( wb , o ) , _cb ) } function sheet _to _json ( sheet , opts ) { if ( sheet == null || sheet [ "!ref" ] == null ) return [ ] ; var val = { t : "n" , v : 0 } , header = 0 , offset = 1 , hdr = [ ] , isempty = true , v = 0 , vv = "" ; var r = { s : { r : 0 , c : 0 } , e : { r : 0 , c : 0 } } ; var o = opts != null ? opts : { } ; var raw = o . raw ; var defval = o . defval ; var range = o . range != null ? o . range : sheet [ "!ref" ] ; if ( o . header === 1 ) header = 1 ; else if ( o . header === "A" ) header = 2 ; else if ( Array . isArray ( o . header ) ) header = 3 ; switch ( typeof range ) { case "string" : r = safe _decode _range ( range ) ; break ; case "number" : r = safe _decode _range ( sheet [ "!ref" ] ) ; r . s . r = range ; break ; default : r = range } if ( header > 0 ) offset = 0 ; var rr = encode _row ( r . s . r ) ; var cols = new Array ( r . e . c - r . s . c + 1 ) ; var out = new Array ( r . e . r - r . s . r - offset + 1 ) ; var outi = 0 , counter = 0 ; var dense = Array . isArray ( sheet ) ; var R = r . s . r , C = 0 , CC = 0 ; if ( ! sheet [ R ] ) sheet [ R ] = [ ] ; for ( C = r . s . c ; C <= r . e . c ; ++ C ) { cols [ C ] = encode _col ( C ) ; val = dense ? sheet [ R ] [ C ] : sheet [ cols [ C ] + rr ] ; switch ( header ) { case 1 : hdr [ C ] = C - r . s . c ; break ; case 2 : hdr [ C ] = cols [ C ] ; break ; case 3 : hdr [ C ] = o . header [ C - r . s . c ] ; break ; default : if ( val == null ) continue ; vv = v = format _cell (