diff --git a/dist/app-info-parser.js b/dist/app-info-parser.js index aed6ddf..b2e9ca3 100644 --- a/dist/app-info-parser.js +++ b/dist/app-info-parser.js @@ -1,90 +1,65 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.AppInfoParser = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var parsePlist = _dereq_('plist').parse; - var parseBplist = _dereq_('bplist-parser').parseBuffer; - var cgbiToPng = _dereq_('cgbi-to-png'); - var Zip = _dereq_('./zip'); - var _require = _dereq_('./utils'), - findIpaIconPath = _require.findIpaIconPath, - getBase64FromBuffer = _require.getBase64FromBuffer, - isBrowser = _require.isBrowser; - + findIpaIconPath = _require.findIpaIconPath, + getBase64FromBuffer = _require.getBase64FromBuffer, + isBrowser = _require.isBrowser; var PlistName = new RegExp('payload/[^/]+?.app/info.plist$', 'i'); var ProvisionName = /payload\/.+?\.app\/embedded.mobileprovision/; - var IpaParser = /*#__PURE__*/function (_Zip) { _inherits(IpaParser, _Zip); - var _super = _createSuper(IpaParser); - /** * parser for parsing .ipa file * @param {String | File | Blob} file // file's path in Node, instance of File or Blob in Browser */ function IpaParser(file) { var _this; - _classCallCheck(this, IpaParser); - _this = _super.call(this, file); - if (!(_assertThisInitialized(_this) instanceof IpaParser)) { return _possibleConstructorReturn(_this, new IpaParser(file)); } - return _this; } - _createClass(IpaParser, [{ key: "parse", value: function parse() { var _this2 = this; - return new Promise(function (resolve, reject) { _this2.getEntries([PlistName, ProvisionName]).then(function (buffers) { if (!buffers[PlistName]) { throw new Error('Info.plist can\'t be found.'); } - - var plistInfo = _this2._parsePlist(buffers[PlistName]); // parse mobile provision - - + var plistInfo = _this2._parsePlist(buffers[PlistName]); + // parse mobile provision var provisionInfo = _this2._parseProvision(buffers[ProvisionName]); + plistInfo.mobileProvision = provisionInfo; - plistInfo.mobileProvision = provisionInfo; // find icon path and parse icon - + // find icon path and parse icon var iconRegex = new RegExp(findIpaIconPath(plistInfo).toLowerCase()); - _this2.getEntry(iconRegex).then(function (iconBuffer) { try { // In general, the ipa file's icon has been specially processed, should be converted @@ -310,7 +237,6 @@ var IpaParser = /*#__PURE__*/function (_Zip) { console.warn('[Warning] failed to parse icon: ', err); } } - resolve(plistInfo); })["catch"](function (e) { reject(e); @@ -324,13 +250,11 @@ var IpaParser = /*#__PURE__*/function (_Zip) { * Parse plist * @param {Buffer} buffer // plist file's buffer */ - }, { key: "_parsePlist", value: function _parsePlist(buffer) { var result; var bufferType = buffer[0]; - if (bufferType === 60 || bufferType === '<' || bufferType === 239) { result = parsePlist(buffer.toString()); } else if (bufferType === 98) { @@ -338,40 +262,33 @@ var IpaParser = /*#__PURE__*/function (_Zip) { } else { throw new Error('Unknown plist buffer type.'); } - return result; } /** * parse provision * @param {Buffer} buffer // provision file's buffer */ - }, { key: "_parseProvision", value: function _parseProvision(buffer) { var info = {}; - if (buffer) { var content = buffer.toString('utf-8'); var firstIndex = content.indexOf(''); content = content.slice(firstIndex, endIndex + 8); - if (content) { info = parsePlist(content); } } - return info; } }]); - return IpaParser; }(Zip); - module.exports = IpaParser; -},{"./utils":5,"./zip":8,"bplist-parser":15,"cgbi-to-png":24,"plist":74}],4:[function(_dereq_,module,exports){ +},{"./utils":5,"./zip":8,"bplist-parser":18,"cgbi-to-png":28,"plist":93}],4:[function(_dereq_,module,exports){ "use strict"; /** @@ -379,21 +296,21 @@ module.exports = IpaParser; * * Decode binary file `resources.arsc` from a .apk file to a JavaScript Object. */ -var ByteBuffer = _dereq_("bytebuffer"); +var ByteBuffer = _dereq_("bytebuffer"); var DEBUG = false; var RES_STRING_POOL_TYPE = 0x0001; var RES_TABLE_TYPE = 0x0002; var RES_TABLE_PACKAGE_TYPE = 0x0200; var RES_TABLE_TYPE_TYPE = 0x0201; -var RES_TABLE_TYPE_SPEC_TYPE = 0x0202; // The 'data' holds a ResTable_ref, a reference to another resource -// table entry. +var RES_TABLE_TYPE_SPEC_TYPE = 0x0202; -var TYPE_REFERENCE = 0x01; // The 'data' holds an index into the containing resource table's +// The 'data' holds a ResTable_ref, a reference to another resource +// table entry. +var TYPE_REFERENCE = 0x01; +// The 'data' holds an index into the containing resource table's // global value string pool. - var TYPE_STRING = 0x03; - function ResourceFinder() { this.valueStringPool = null; this.typeStringPool = null; @@ -402,6 +319,7 @@ function ResourceFinder() { this.responseMap = {}; this.entryMap = {}; } + /** * Same to C# BinaryReader.readBytes * @@ -409,50 +327,41 @@ function ResourceFinder() { * @param len length * @returns {Buffer} */ - - ResourceFinder.readBytes = function (bb, len) { var uint8Array = new Uint8Array(len); - for (var i = 0; i < len; i++) { uint8Array[i] = bb.readUint8(); } - return ByteBuffer.wrap(uint8Array, "binary", true); -}; // +}; +// /** * * @param {ByteBuffer} bb * @return {Map>} */ - - ResourceFinder.prototype.processResourceTable = function (resourceBuffer) { - var bb = ByteBuffer.wrap(resourceBuffer, "binary", true); // Resource table structure + var bb = ByteBuffer.wrap(resourceBuffer, "binary", true); + // Resource table structure var type = bb.readShort(), - headerSize = bb.readShort(), - size = bb.readInt(), - packageCount = bb.readInt(), - buffer, - bb2; - + headerSize = bb.readShort(), + size = bb.readInt(), + packageCount = bb.readInt(), + buffer, + bb2; if (type != RES_TABLE_TYPE) { throw new Error("No RES_TABLE_TYPE found!"); } - if (size != bb.limit) { throw new Error("The buffer size not matches to the resource table size."); } - bb.offset = headerSize; var realStringPoolCount = 0, - realPackageCount = 0; - + realPackageCount = 0; while (true) { var pos, t, hs, s; - try { pos = bb.offset; t = bb.readShort(); @@ -461,7 +370,6 @@ ResourceFinder.prototype.processResourceTable = function (resourceBuffer) { } catch (e) { break; } - if (t == RES_STRING_POOL_TYPE) { // Process the string pool if (realStringPoolCount == 0) { @@ -469,7 +377,6 @@ ResourceFinder.prototype.processResourceTable = function (resourceBuffer) { if (DEBUG) { console.log("Processing the string pool ..."); } - buffer = new ByteBuffer(s); bb.offset = pos; bb.prependTo(buffer); @@ -477,14 +384,12 @@ ResourceFinder.prototype.processResourceTable = function (resourceBuffer) { bb2.LE(); this.valueStringPool = this.processStringPool(bb2); } - realStringPoolCount++; } else if (t == RES_TABLE_PACKAGE_TYPE) { // Process the package if (DEBUG) { console.log("Processing the package " + realPackageCount + " ..."); } - buffer = new ByteBuffer(s); bb.offset = pos; bb.prependTo(buffer); @@ -495,80 +400,69 @@ ResourceFinder.prototype.processResourceTable = function (resourceBuffer) { } else { throw new Error("Unsupported type"); } - bb.offset = pos + s; if (!bb.remaining()) break; } - if (realStringPoolCount != 1) { throw new Error("More than 1 string pool found!"); } - if (realPackageCount != packageCount) { throw new Error("Real package count not equals the declared count."); } - return this.responseMap; }; + /** * * @param {ByteBuffer} bb */ - - ResourceFinder.prototype.processPackage = function (bb) { // Package structure var type = bb.readShort(), - headerSize = bb.readShort(), - size = bb.readInt(), - id = bb.readInt(); + headerSize = bb.readShort(), + size = bb.readInt(), + id = bb.readInt(); this.package_id = id; - for (var i = 0; i < 256; ++i) { bb.readUint8(); } - var typeStrings = bb.readInt(), - lastPublicType = bb.readInt(), - keyStrings = bb.readInt(), - lastPublicKey = bb.readInt(); - + lastPublicType = bb.readInt(), + keyStrings = bb.readInt(), + lastPublicKey = bb.readInt(); if (typeStrings != headerSize) { throw new Error("TypeStrings must immediately following the package structure header."); } - if (DEBUG) { console.log("Type strings:"); } - var lastPosition = bb.offset; bb.offset = typeStrings; var bbTypeStrings = ResourceFinder.readBytes(bb, bb.limit - bb.offset); bb.offset = lastPosition; - this.typeStringPool = this.processStringPool(bbTypeStrings); // Key strings + this.typeStringPool = this.processStringPool(bbTypeStrings); + // Key strings if (DEBUG) { console.log("Key strings:"); } - bb.offset = keyStrings; var key_type = bb.readShort(), - key_headerSize = bb.readShort(), - key_size = bb.readInt(); + key_headerSize = bb.readShort(), + key_size = bb.readInt(); lastPosition = bb.offset; bb.offset = keyStrings; var bbKeyStrings = ResourceFinder.readBytes(bb, bb.limit - bb.offset); bb.offset = lastPosition; - this.keyStringPool = this.processStringPool(bbKeyStrings); // Iterate through all chunks + this.keyStringPool = this.processStringPool(bbKeyStrings); + // Iterate through all chunks var typeSpecCount = 0; var typeCount = 0; bb.offset = keyStrings + key_size; var bb2; - while (true) { var pos = bb.offset; - try { var t = bb.readShort(); var hs = bb.readShort(); @@ -576,7 +470,6 @@ ResourceFinder.prototype.processPackage = function (bb) { } catch (e) { break; } - if (t == RES_TABLE_TYPE_SPEC_TYPE) { bb.offset = pos; bb2 = ResourceFinder.readBytes(bb, s); @@ -588,73 +481,67 @@ ResourceFinder.prototype.processPackage = function (bb) { this.processType(bb2); typeCount++; } - if (s == 0) { break; } - bb.offset = pos + s; - if (!bb.remaining()) { break; } } }; + /** * * @param {ByteBuffer} bb */ - - ResourceFinder.prototype.processType = function (bb) { var type = bb.readShort(), - headerSize = bb.readShort(), - size = bb.readInt(), - id = bb.readByte(), - res0 = bb.readByte(), - res1 = bb.readShort(), - entryCount = bb.readInt(), - entriesStart = bb.readInt(); + headerSize = bb.readShort(), + size = bb.readInt(), + id = bb.readByte(), + res0 = bb.readByte(), + res1 = bb.readShort(), + entryCount = bb.readInt(), + entriesStart = bb.readInt(); var refKeys = {}; - var config_size = bb.readInt(); // Skip the config data + var config_size = bb.readInt(); + // Skip the config data bb.offset = headerSize; - if (headerSize + entryCount * 4 != entriesStart) { throw new Error("HeaderSize, entryCount and entriesStart are not valid."); - } // Start to get entry indices - + } + // Start to get entry indices var entryIndices = new Array(entryCount); - for (var i = 0; i < entryCount; ++i) { entryIndices[i] = bb.readInt(); - } // Get entries - + } + // Get entries for (var i = 0; i < entryCount; ++i) { if (entryIndices[i] == -1) continue; var resource_id = this.package_id << 24 | id << 16 | i; var pos = bb.offset, - entry_size, - entry_flag, - entry_key, - value_size, - value_res0, - value_dataType, - value_data; - + entry_size, + entry_flag, + entry_key, + value_size, + value_res0, + value_dataType, + value_data; try { entry_size = bb.readShort(); entry_flag = bb.readShort(); entry_key = bb.readInt(); } catch (e) { break; - } // Get the value (simple) or map (complex) + } + // Get the value (simple) or map (complex) var FLAG_COMPLEX = 0x0001; - if ((entry_flag & FLAG_COMPLEX) == 0) { // Simple case value_size = bb.readShort(); @@ -664,24 +551,18 @@ ResourceFinder.prototype.processType = function (bb) { var idStr = Number(resource_id).toString(16); var keyStr = this.keyStringPool[entry_key]; var data = null; - if (DEBUG) { console.log("Entry 0x" + idStr + ", key: " + keyStr + ", simple value type: "); } - var key = parseInt(idStr, 16); var entryArr = this.entryMap[key]; - if (entryArr == null) { entryArr = []; } - entryArr.push(keyStr); this.entryMap[key] = entryArr; - if (value_dataType == TYPE_STRING) { data = this.valueStringPool[value_data]; - if (DEBUG) { console.log(", data: " + this.valueStringPool[value_data] + ""); } @@ -690,18 +571,15 @@ ResourceFinder.prototype.processType = function (bb) { refKeys[idStr] = value_data; } else { data = "" + value_data; - if (DEBUG) { console.log(", data: " + value_data + ""); } } - this.putIntoMap("@" + idStr, data); } else { // Complex case var entry_parent = bb.readInt(); var entry_count = bb.readInt(); - for (var j = 0; j < entry_count; ++j) { var ref_name = bb.readInt(); value_size = bb.readShort(); @@ -709,16 +587,13 @@ ResourceFinder.prototype.processType = function (bb) { value_dataType = bb.readByte(); value_data = bb.readInt(); } - if (DEBUG) { console.log("Entry 0x" + Number(resource_id).toString(16) + ", key: " + this.keyStringPool[entry_key] + ", complex value, not printed."); } } } - for (var refK in refKeys) { var values = this.responseMap["@" + Number(refKeys[refK]).toString(16).toUpperCase()]; - if (values != null && Object.keys(values).length < 1000) { for (var value in values) { this.putIntoMap("@" + refK, values[value]); @@ -726,56 +601,46 @@ ResourceFinder.prototype.processType = function (bb) { } } }; + /** * * @param {ByteBuffer} bb * @return {Array} */ - - ResourceFinder.prototype.processStringPool = function (bb) { // String pool structure // var type = bb.readShort(), - headerSize = bb.readShort(), - size = bb.readInt(), - stringCount = bb.readInt(), - styleCount = bb.readInt(), - flags = bb.readInt(), - stringsStart = bb.readInt(), - stylesStart = bb.readInt(), - u16len, - buffer; + headerSize = bb.readShort(), + size = bb.readInt(), + stringCount = bb.readInt(), + styleCount = bb.readInt(), + flags = bb.readInt(), + stringsStart = bb.readInt(), + stylesStart = bb.readInt(), + u16len, + buffer; var isUTF_8 = (flags & 256) != 0; var offsets = new Array(stringCount); - for (var i = 0; i < stringCount; ++i) { offsets[i] = bb.readInt(); } - var strings = new Array(stringCount); - for (var i = 0; i < stringCount; ++i) { var pos = stringsStart + offsets[i]; bb.offset = pos; strings[i] = ""; - if (isUTF_8) { u16len = bb.readUint8(); - if ((u16len & 0x80) != 0) { u16len = ((u16len & 0x7f) << 8) + bb.readUint8(); } - var u8len = bb.readUint8(); - if ((u8len & 0x80) != 0) { u8len = ((u8len & 0x7f) << 8) + bb.readUint8(); } - if (u8len > 0) { buffer = ResourceFinder.readBytes(bb, u8len); - try { strings[i] = ByteBuffer.wrap(buffer, "utf8", true).toString("utf8"); } catch (e) { @@ -789,16 +654,13 @@ ResourceFinder.prototype.processStringPool = function (bb) { } } else { u16len = bb.readUint16(); - if ((u16len & 0x8000) != 0) { // larger than 32768 u16len = ((u16len & 0x7fff) << 16) + bb.readUint16(); } - if (u16len > 0) { var len = u16len * 2; buffer = ResourceFinder.readBytes(bb, len); - try { strings[i] = ByteBuffer.wrap(buffer, "utf8", true).toString("utf8"); } catch (e) { @@ -809,85 +671,71 @@ ResourceFinder.prototype.processStringPool = function (bb) { } } } - if (DEBUG) { console.log("Parsed value: {0}", strings[i]); } } - return strings; }; + /** * * @param {ByteBuffer} bb */ - - ResourceFinder.prototype.processTypeSpec = function (bb) { var type = bb.readShort(), - headerSize = bb.readShort(), - size = bb.readInt(), - id = bb.readByte(), - res0 = bb.readByte(), - res1 = bb.readShort(), - entryCount = bb.readInt(); - + headerSize = bb.readShort(), + size = bb.readInt(), + id = bb.readByte(), + res0 = bb.readByte(), + res1 = bb.readShort(), + entryCount = bb.readInt(); if (DEBUG) { console.log("Processing type spec " + this.typeStringPool[id - 1] + "..."); } - var flags = new Array(entryCount); - for (var i = 0; i < entryCount; ++i) { flags[i] = bb.readInt(); } }; - ResourceFinder.prototype.putIntoMap = function (resId, value) { if (this.responseMap[resId.toUpperCase()] == null) { this.responseMap[resId.toUpperCase()] = []; } - if (value) { this.responseMap[resId.toUpperCase()].push(value); } }; - module.exports = ResourceFinder; -},{"bytebuffer":22}],5:[function(_dereq_,module,exports){ +},{"bytebuffer":25}],5:[function(_dereq_,module,exports){ +(function (process){(function (){ "use strict"; function objectType(o) { return Object.prototype.toString.call(o).slice(8, -1).toLowerCase(); } - function isArray(o) { return objectType(o) === 'array'; } - function isObject(o) { return objectType(o) === 'object'; } - function isPrimitive(o) { return o === null || ['boolean', 'number', 'string', 'undefined'].includes(objectType(o)); } - function isBrowser() { - return typeof window !== 'undefined' && typeof document !== 'undefined'; + return typeof process === 'undefined' || Object.prototype.toString.call(process) !== '[object process]'; } + /** * map file place with resourceMap * @param {Object} apkInfo // json info parsed from .apk file * @param {Object} resourceMap // resourceMap */ - - function mapInfoResource(apkInfo, resourceMap) { iteratorObj(apkInfo); return apkInfo; - function iteratorObj(obj) { for (var i in obj) { if (isArray(obj[i])) { @@ -901,10 +749,8 @@ function mapInfoResource(apkInfo, resourceMap) { } } } - function iteratorArray(array) { var l = array.length; - for (var i = 0; i < l; i++) { if (isArray(array[i])) { iteratorArray(array[i]); @@ -917,32 +763,26 @@ function mapInfoResource(apkInfo, resourceMap) { } } } - function isResources(attrValue) { if (!attrValue) return false; - if (typeof attrValue !== 'string') { attrValue = attrValue.toString(); } - return attrValue.indexOf('resourceId:') === 0; } - function transKeyToMatchResourceMap(resourceId) { return '@' + resourceId.replace('resourceId:0x', '').toUpperCase(); } } + /** * find .apk file's icon path from json info * @param info // json info parsed from .apk file */ - - function findApkIconPath(info) { if (!info.application.icon || !info.application.icon.splice) { return ''; } - var rulesMap = { mdpi: 48, hdpi: 72, @@ -955,39 +795,35 @@ function findApkIconPath(info) { dpi: 120, icon: '' }; - var _loop = function _loop(i) { info.application.icon.some(function (icon) { if (icon && icon.indexOf(i) !== -1) { resultMap['application-icon-' + rulesMap[i]] = icon; return true; } - }); // get the maximal size icon + }); + // get the maximal size icon if (resultMap['application-icon-' + rulesMap[i]] && rulesMap[i] >= maxDpiIcon.dpi) { maxDpiIcon.dpi = rulesMap[i]; maxDpiIcon.icon = resultMap['application-icon-' + rulesMap[i]]; } }; - for (var i in rulesMap) { _loop(i); } - if (Object.keys(resultMap).length === 0 || !maxDpiIcon.icon) { maxDpiIcon.dpi = 120; maxDpiIcon.icon = info.application.icon[0] || ''; resultMap['applicataion-icon-120'] = maxDpiIcon.icon; } - return maxDpiIcon.icon; } + /** * find .ipa file's icon path from json info * @param info // json info parsed from .ipa file */ - - function findIpaIconPath(info) { if (info.CFBundleIcons && info.CFBundleIcons.CFBundlePrimaryIcon && info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles && info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles.length) { return info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles[info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles.length - 1]; @@ -997,30 +833,26 @@ function findIpaIconPath(info) { return '.app/Icon.png'; } } + /** * transform buffer to base64 * @param {Buffer} buffer */ - - function getBase64FromBuffer(buffer) { return 'data:image/png;base64,' + buffer.toString('base64'); } + /** * 去除unicode空字符 * @param {String} str */ - - function decodeNullUnicode(str) { if (typeof str === 'string') { // eslint-disable-next-line str = str.replace(/\u0000/g, ''); } - return str; } - module.exports = { isArray: isArray, isObject: isObject, @@ -1033,15 +865,17 @@ module.exports = { decodeNullUnicode: decodeNullUnicode }; -},{}],6:[function(_dereq_,module,exports){ +}).call(this)}).call(this,_dereq_('_process')) + +},{"_process":97}],6:[function(_dereq_,module,exports){ "use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // From https://github.com/openstf/adbkit-apkreader var NodeType = { ELEMENT_NODE: 1, @@ -1068,8 +902,9 @@ var ChunkType = { var StringFlags = { SORTED: 1 << 0, UTF8: 1 << 8 -}; // Taken from android.util.TypedValue +}; +// Taken from android.util.TypedValue var TypedValue = { COMPLEX_MANTISSA_MASK: 0x00ffffff, COMPLEX_MANTISSA_SHIFT: 0x00000008, @@ -1110,13 +945,10 @@ var TypedValue = { TYPE_REFERENCE: 0x00000001, TYPE_STRING: 0x00000003 }; - var BinaryXmlParser = /*#__PURE__*/function () { function BinaryXmlParser(buffer) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - _classCallCheck(this, BinaryXmlParser); - this.buffer = buffer; this.cursor = 0; this.strings = []; @@ -1126,7 +958,6 @@ var BinaryXmlParser = /*#__PURE__*/function () { this.stack = []; this.debug = options.debug || false; } - _createClass(BinaryXmlParser, [{ key: "readU8", value: function readU8() { @@ -1176,12 +1007,10 @@ var BinaryXmlParser = /*#__PURE__*/function () { value: function readLength8() { this.debug && console.group('readLength8'); var len = this.readU8(); - if (len & 0x80) { len = (len & 0x7f) << 8; len += this.readU8(); } - this.debug && console.debug('length:', len); this.debug && console.groupEnd(); return len; @@ -1191,12 +1020,10 @@ var BinaryXmlParser = /*#__PURE__*/function () { value: function readLength16() { this.debug && console.group('readLength16'); var len = this.readU16(); - if (len & 0x8000) { len = (len & 0x7fff) << 16; len += this.readU16(); } - this.debug && console.debug('length:', len); this.debug && console.groupEnd(); return len; @@ -1214,33 +1041,26 @@ var BinaryXmlParser = /*#__PURE__*/function () { var unit = dimension.value & 0xff; dimension.value = value >> 8; dimension.rawUnit = unit; - switch (unit) { case TypedValue.COMPLEX_UNIT_MM: dimension.unit = 'mm'; break; - case TypedValue.COMPLEX_UNIT_PX: dimension.unit = 'px'; break; - case TypedValue.COMPLEX_UNIT_DIP: dimension.unit = 'dp'; break; - case TypedValue.COMPLEX_UNIT_SP: dimension.unit = 'sp'; break; - case TypedValue.COMPLEX_UNIT_PT: dimension.unit = 'pt'; break; - case TypedValue.COMPLEX_UNIT_IN: dimension.unit = 'in'; break; } - this.debug && console.groupEnd(); return dimension; } @@ -1257,17 +1077,14 @@ var BinaryXmlParser = /*#__PURE__*/function () { var type = value & 0xf; fraction.value = this.convertIntToFloat(value >> 4); fraction.rawType = type; - switch (type) { case TypedValue.COMPLEX_UNIT_FRACTION: fraction.type = '%'; break; - case TypedValue.COMPLEX_UNIT_FRACTION_PARENT: fraction.type = '%p'; break; } - this.debug && console.groupEnd(); return fraction; } @@ -1299,80 +1116,66 @@ var BinaryXmlParser = /*#__PURE__*/function () { var start = this.cursor; var size = this.readU16(); /* const zero = */ - this.readU8(); - var dataType = this.readU8(); // Yes, there has been a real world APK where the size is malformed. + var dataType = this.readU8(); + // Yes, there has been a real world APK where the size is malformed. if (size === 0) { size = 8; } - typedValue.rawType = dataType; - switch (dataType) { case TypedValue.TYPE_INT_DEC: typedValue.value = this.readS32(); typedValue.type = 'int_dec'; break; - case TypedValue.TYPE_INT_HEX: typedValue.value = this.readS32(); typedValue.type = 'int_hex'; break; - case TypedValue.TYPE_STRING: var ref = this.readS32(); typedValue.value = ref > 0 ? this.strings[ref] : ''; typedValue.type = 'string'; break; - case TypedValue.TYPE_REFERENCE: var id = this.readU32(); typedValue.value = "resourceId:0x".concat(id.toString(16)); typedValue.type = 'reference'; break; - case TypedValue.TYPE_INT_BOOLEAN: typedValue.value = this.readS32() !== 0; typedValue.type = 'boolean'; break; - case TypedValue.TYPE_NULL: this.readU32(); typedValue.value = null; typedValue.type = 'null'; break; - case TypedValue.TYPE_INT_COLOR_RGB8: typedValue.value = this.readHex24(); typedValue.type = 'rgb8'; break; - case TypedValue.TYPE_INT_COLOR_RGB4: typedValue.value = this.readHex24(); typedValue.type = 'rgb4'; break; - case TypedValue.TYPE_INT_COLOR_ARGB8: typedValue.value = this.readHex32(); typedValue.type = 'argb8'; break; - case TypedValue.TYPE_INT_COLOR_ARGB4: typedValue.value = this.readHex32(); typedValue.type = 'argb4'; break; - case TypedValue.TYPE_DIMENSION: typedValue.value = this.readDimension(); typedValue.type = 'dimension'; break; - case TypedValue.TYPE_FRACTION: typedValue.value = this.readFraction(); typedValue.type = 'fraction'; break; - default: { var type = dataType.toString(16); @@ -1380,23 +1183,21 @@ var BinaryXmlParser = /*#__PURE__*/function () { typedValue.value = this.readU32(); typedValue.type = 'unknown'; } - } // Ensure we consume the whole value - + } + // Ensure we consume the whole value var end = start + size; - if (this.cursor !== end) { var _type = dataType.toString(16); - var diff = end - this.cursor; console.debug("Cursor is off by ".concat(diff, " bytes at ").concat(this.cursor, " at supposed end of typed value of type 0x").concat(_type, ". The typed value started at offset ").concat(start, " and is supposed to end at offset ").concat(end, ". Ignoring the rest of the value.")); this.cursor = end; } - this.debug && console.groupEnd(); return typedValue; - } // https://twitter.com/kawasima/status/427730289201139712 + } + // https://twitter.com/kawasima/status/427730289201139712 }, { key: "convertIntToFloat", value: function convertIntToFloat(_int) { @@ -1408,7 +1209,6 @@ var BinaryXmlParser = /*#__PURE__*/function () { key: "readString", value: function readString(encoding) { this.debug && console.group('readString', encoding); - switch (encoding) { case 'utf-8': var stringLength = this.readLength8(encoding); @@ -1419,7 +1219,6 @@ var BinaryXmlParser = /*#__PURE__*/function () { this.debug && console.debug('value:', value); this.debug && console.groupEnd(); return value; - case 'ucs2': stringLength = this.readLength16(encoding); this.debug && console.debug('stringLength:', stringLength); @@ -1429,7 +1228,6 @@ var BinaryXmlParser = /*#__PURE__*/function () { this.debug && console.debug('value:', value); this.debug && console.groupEnd(); return value; - default: throw new Error("Unsupported encoding '".concat(encoding, "'")); } @@ -1465,33 +1263,28 @@ var BinaryXmlParser = /*#__PURE__*/function () { this.debug && console.debug('stringsStart:', header.stringsStart); header.stylesStart = this.readU32(); this.debug && console.debug('stylesStart:', header.stylesStart); - if (header.chunkType !== ChunkType.STRING_POOL) { throw new Error('Invalid string pool header'); } - var offsets = []; - for (var i = 0, l = header.stringCount; i < l; ++i) { this.debug && console.debug('offset:', i); offsets.push(this.readU32()); } - var sorted = (header.flags & StringFlags.SORTED) === StringFlags.SORTED; this.debug && console.debug('sorted:', sorted); var encoding = (header.flags & StringFlags.UTF8) === StringFlags.UTF8 ? 'utf-8' : 'ucs2'; this.debug && console.debug('encoding:', encoding); var stringsStart = header.startOffset + header.stringsStart; this.cursor = stringsStart; - for (var _i = 0, _l = header.stringCount; _i < _l; ++_i) { this.debug && console.debug('string:', _i); this.debug && console.debug('offset:', offsets[_i]); this.cursor = stringsStart + offsets[_i]; this.strings.push(this.readString(encoding)); - } // Skip styles - + } + // Skip styles this.cursor = header.startOffset + header.chunkSize; this.debug && console.groupEnd(); return null; @@ -1501,32 +1294,28 @@ var BinaryXmlParser = /*#__PURE__*/function () { value: function readResourceMap(header) { this.debug && console.group('readResourceMap'); var count = Math.floor((header.chunkSize - header.headerSize) / 4); - for (var i = 0; i < count; ++i) { this.resources.push(this.readU32()); } - this.debug && console.groupEnd(); return null; } }, { key: "readXmlNamespaceStart", - value: function readXmlNamespaceStart() - /* header */ - { + value: function readXmlNamespaceStart( /* header */ + ) { this.debug && console.group('readXmlNamespaceStart'); - /* const line = */ + /* const line = */ this.readU32(); /* const commentRef = */ - this.readU32(); /* const prefixRef = */ - this.readS32(); /* const uriRef = */ + this.readS32(); - this.readS32(); // We don't currently care about the values, but they could + // We don't currently care about the values, but they could // be accessed like so: // // namespaceURI.prefix = this.strings[prefixRef] // if prefixRef > 0 @@ -1537,22 +1326,20 @@ var BinaryXmlParser = /*#__PURE__*/function () { } }, { key: "readXmlNamespaceEnd", - value: function readXmlNamespaceEnd() - /* header */ - { + value: function readXmlNamespaceEnd( /* header */ + ) { this.debug && console.group('readXmlNamespaceEnd'); - /* const line = */ + /* const line = */ this.readU32(); /* const commentRef = */ - this.readU32(); /* const prefixRef = */ - this.readS32(); /* const uriRef = */ + this.readS32(); - this.readS32(); // We don't currently care about the values, but they could + // We don't currently care about the values, but they could // be accessed like so: // // namespaceURI.prefix = this.strings[prefixRef] // if prefixRef > 0 @@ -1563,9 +1350,8 @@ var BinaryXmlParser = /*#__PURE__*/function () { } }, { key: "readXmlElementStart", - value: function readXmlElementStart() - /* header */ - { + value: function readXmlElementStart( /* header */ + ) { this.debug && console.group('readXmlElementStart'); var node = { namespaceURI: null, @@ -1574,48 +1360,38 @@ var BinaryXmlParser = /*#__PURE__*/function () { attributes: [], childNodes: [] }; - /* const line = */ + /* const line = */ this.readU32(); /* const commentRef = */ - this.readU32(); var nsRef = this.readS32(); var nameRef = this.readS32(); - if (nsRef > 0) { node.namespaceURI = this.strings[nsRef]; } - node.nodeName = this.strings[nameRef]; - /* const attrStart = */ + /* const attrStart = */ this.readU16(); /* const attrSize = */ - this.readU16(); var attrCount = this.readU16(); /* const idIndex = */ - this.readU16(); /* const classIndex = */ - this.readU16(); /* const styleIndex = */ - this.readU16(); - for (var i = 0; i < attrCount; ++i) { node.attributes.push(this.readXmlAttribute()); } - if (this.document) { this.parent.childNodes.push(node); this.parent = node; } else { this.document = this.parent = node; } - this.stack.push(node); this.debug && console.groupEnd(); return node; @@ -1635,43 +1411,34 @@ var BinaryXmlParser = /*#__PURE__*/function () { var nsRef = this.readS32(); var nameRef = this.readS32(); var valueRef = this.readS32(); - if (nsRef > 0) { attr.namespaceURI = this.strings[nsRef]; } - attr.nodeName = attr.name = this.strings[nameRef]; - if (valueRef > 0) { // some apk have versionName with special characters if (attr.name === 'versionName') { this.strings[valueRef] = this.strings[valueRef].replace(/[^\d\w-.]/g, ''); } - attr.value = this.strings[valueRef]; } - attr.typedValue = this.readTypedValue(); this.debug && console.groupEnd(); return attr; } }, { key: "readXmlElementEnd", - value: function readXmlElementEnd() - /* header */ - { + value: function readXmlElementEnd( /* header */ + ) { this.debug && console.group('readXmlCData'); - /* const line = */ + /* const line = */ this.readU32(); /* const commentRef = */ - this.readU32(); /* const nsRef = */ - this.readS32(); /* const nameRef = */ - this.readS32(); this.stack.pop(); this.parent = this.stack[this.stack.length - 1]; @@ -1680,9 +1447,8 @@ var BinaryXmlParser = /*#__PURE__*/function () { } }, { key: "readXmlCData", - value: function readXmlCData() - /* header */ - { + value: function readXmlCData( /* header */ + ) { this.debug && console.group('readXmlCData'); var cdata = { namespaceURI: null, @@ -1691,18 +1457,15 @@ var BinaryXmlParser = /*#__PURE__*/function () { data: null, typedValue: null }; - /* const line = */ + /* const line = */ this.readU32(); /* const commentRef = */ - this.readU32(); var dataRef = this.readS32(); - if (dataRef > 0) { cdata.data = this.strings[dataRef]; } - cdata.typedValue = this.readTypedValue(); this.parent.childNodes.push(cdata); this.debug && console.groupEnd(); @@ -1721,118 +1484,94 @@ var BinaryXmlParser = /*#__PURE__*/function () { value: function parse() { this.debug && console.group('BinaryXmlParser.parse'); var xmlHeader = this.readChunkHeader(); - if (xmlHeader.chunkType !== ChunkType.XML) { throw new Error('Invalid XML header'); } - while (this.cursor < this.buffer.length) { this.debug && console.group('chunk'); var start = this.cursor; var header = this.readChunkHeader(); - switch (header.chunkType) { case ChunkType.STRING_POOL: this.readStringPool(header); break; - case ChunkType.XML_RESOURCE_MAP: this.readResourceMap(header); break; - case ChunkType.XML_START_NAMESPACE: this.readXmlNamespaceStart(header); break; - case ChunkType.XML_END_NAMESPACE: this.readXmlNamespaceEnd(header); break; - case ChunkType.XML_START_ELEMENT: this.readXmlElementStart(header); break; - case ChunkType.XML_END_ELEMENT: this.readXmlElementEnd(header); break; - case ChunkType.XML_CDATA: this.readXmlCData(header); break; - case ChunkType.NULL: this.readNull(header); break; - default: throw new Error("Unsupported chunk type '".concat(header.chunkType, "'")); - } // Ensure we consume the whole chunk - + } + // Ensure we consume the whole chunk var end = start + header.chunkSize; - if (this.cursor !== end) { var diff = end - this.cursor; var type = header.chunkType.toString(16); console.debug("Cursor is off by ".concat(diff, " bytes at ").concat(this.cursor, " at supposed end of chunk of type 0x").concat(type, ". The chunk started at offset ").concat(start, " and is supposed to end at offset ").concat(end, ". Ignoring the rest of the chunk.")); this.cursor = end; } - this.debug && console.groupEnd(); } - this.debug && console.groupEnd(); return this.document; } }]); - return BinaryXmlParser; }(); - module.exports = BinaryXmlParser; },{}],7:[function(_dereq_,module,exports){ "use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // From https://github.com/openstf/adbkit-apkreader var BinaryXmlParser = _dereq_('./binary'); - var INTENT_MAIN = 'android.intent.action.MAIN'; var CATEGORY_LAUNCHER = 'android.intent.category.LAUNCHER'; - var ManifestParser = /*#__PURE__*/function () { function ManifestParser(buffer) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - _classCallCheck(this, ManifestParser); - this.buffer = buffer; this.xmlParser = new BinaryXmlParser(this.buffer, options); } - _createClass(ManifestParser, [{ key: "collapseAttributes", value: function collapseAttributes(element) { var collapsed = Object.create(null); - for (var _i = 0, _Array$from = Array.from(element.attributes); _i < _Array$from.length; _i++) { var attr = _Array$from[_i]; collapsed[attr.name] = attr.typedValue.value; } - return collapsed; } }, { key: "parseIntents", value: function parseIntents(element, target) { var _this = this; - target.intentFilters = []; target.metaData = []; return element.childNodes.forEach(function (element) { @@ -1840,7 +1579,6 @@ var ManifestParser = /*#__PURE__*/function () { case 'intent-filter': { var intentFilter = _this.collapseAttributes(element); - intentFilter.actions = []; intentFilter.categories = []; intentFilter.data = []; @@ -1849,11 +1587,9 @@ var ManifestParser = /*#__PURE__*/function () { case 'action': intentFilter.actions.push(_this.collapseAttributes(element)); break; - case 'category': intentFilter.categories.push(_this.collapseAttributes(element)); break; - case 'data': intentFilter.data.push(_this.collapseAttributes(element)); break; @@ -1862,7 +1598,6 @@ var ManifestParser = /*#__PURE__*/function () { target.intentFilters.push(intentFilter); break; } - case 'meta-data': target.metaData.push(_this.collapseAttributes(element)); break; @@ -1873,7 +1608,6 @@ var ManifestParser = /*#__PURE__*/function () { key: "parseApplication", value: function parseApplication(element) { var _this2 = this; - var app = this.collapseAttributes(element); app.activities = []; app.activityAliases = []; @@ -1888,57 +1622,40 @@ var ManifestParser = /*#__PURE__*/function () { case 'activity': { var activity = _this2.collapseAttributes(element); - _this2.parseIntents(element, activity); - app.activities.push(activity); - if (_this2.isLauncherActivity(activity)) { app.launcherActivities.push(activity); } - break; } - case 'activity-alias': { var activityAlias = _this2.collapseAttributes(element); - _this2.parseIntents(element, activityAlias); - app.activityAliases.push(activityAlias); - if (_this2.isLauncherActivity(activityAlias)) { app.launcherActivities.push(activityAlias); } - break; } - case 'service': { var service = _this2.collapseAttributes(element); - _this2.parseIntents(element, service); - app.services.push(service); break; } - case 'receiver': { var receiver = _this2.collapseAttributes(element); - _this2.parseIntents(element, receiver); - app.receivers.push(receiver); break; } - case 'provider': { var provider = _this2.collapseAttributes(element); - provider.grantUriPermissions = []; provider.metaData = []; provider.pathPermissions = []; @@ -1947,11 +1664,9 @@ var ManifestParser = /*#__PURE__*/function () { case 'grant-uri-permission': provider.grantUriPermissions.push(_this2.collapseAttributes(element)); break; - case 'meta-data': provider.metaData.push(_this2.collapseAttributes(element)); break; - case 'path-permission': provider.pathPermissions.push(_this2.collapseAttributes(element)); break; @@ -1960,11 +1675,9 @@ var ManifestParser = /*#__PURE__*/function () { app.providers.push(provider); break; } - case 'uses-library': app.usesLibraries.push(_this2.collapseAttributes(element)); break; - case 'meta-data': app.metaData.push(_this2.collapseAttributes(element)); break; @@ -1979,11 +1692,9 @@ var ManifestParser = /*#__PURE__*/function () { var hasMain = filter.actions.some(function (action) { return action.name === INTENT_MAIN; }); - if (!hasMain) { return false; } - return filter.categories.some(function (category) { return category.name === CATEGORY_LAUNCHER; }); @@ -1993,7 +1704,6 @@ var ManifestParser = /*#__PURE__*/function () { key: "parse", value: function parse() { var _this3 = this; - var document = this.xmlParser.parse(); var manifest = this.collapseAttributes(document); manifest.usesPermissions = []; @@ -2014,53 +1724,41 @@ var ManifestParser = /*#__PURE__*/function () { case 'uses-permission': manifest.usesPermissions.push(_this3.collapseAttributes(element)); break; - case 'uses-permission-sdk-23': manifest.usesPermissionsSDK23.push(_this3.collapseAttributes(element)); break; - case 'permission': manifest.permissions.push(_this3.collapseAttributes(element)); break; - case 'permission-tree': manifest.permissionTrees.push(_this3.collapseAttributes(element)); break; - case 'permission-group': manifest.permissionGroups.push(_this3.collapseAttributes(element)); break; - case 'instrumentation': manifest.instrumentation = _this3.collapseAttributes(element); break; - case 'uses-sdk': manifest.usesSdk = _this3.collapseAttributes(element); break; - case 'uses-configuration': manifest.usesConfiguration = _this3.collapseAttributes(element); break; - case 'uses-feature': manifest.usesFeatures.push(_this3.collapseAttributes(element)); break; - case 'supports-screens': manifest.supportsScreens = _this3.collapseAttributes(element); break; - case 'compatible-screens': element.childNodes.forEach(function (screen) { return manifest.compatibleScreens.push(_this3.collapseAttributes(screen)); }); break; - case 'supports-gl-texture': manifest.supportsGlTextures.push(_this3.collapseAttributes(element)); break; - case 'application': manifest.application = _this3.parseApplication(element); break; @@ -2069,59 +1767,49 @@ var ManifestParser = /*#__PURE__*/function () { return manifest; } }]); - return ManifestParser; }(); - module.exports = ManifestParser; },{"./binary":6}],8:[function(_dereq_,module,exports){ "use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var Unzip = _dereq_('isomorphic-unzip'); - var _require = _dereq_('./utils'), - isBrowser = _require.isBrowser, - decodeNullUnicode = _require.decodeNullUnicode; - + isBrowser = _require.isBrowser, + decodeNullUnicode = _require.decodeNullUnicode; var Zip = /*#__PURE__*/function () { function Zip(file) { _classCallCheck(this, Zip); - if (isBrowser()) { if (!(file instanceof window.Blob || typeof file.size !== 'undefined')) { throw new Error('Param error: [file] must be an instance of Blob or File in browser.'); } - this.file = file; } else { if (typeof file !== 'string') { throw new Error('Param error: [file] must be file path in Node.'); } - this.file = _dereq_('path').resolve(file); } - this.unzip = new Unzip(this.file); } + /** * get entries by regexps, the return format is: { : } * @param {Array} regexps // regexps for matching files * @param {String} type // return type, can be buffer or blob, default buffer */ - - _createClass(Zip, [{ key: "getEntries", value: function getEntries(regexps) { var _this = this; - var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'buffer'; regexps = regexps.map(function (regex) { return decodeNullUnicode(regex); @@ -2139,12 +1827,10 @@ var Zip = /*#__PURE__*/function () { * @param {Regex} regex // regex for matching file * @param {String} type // return type, can be buffer or blob, default buffer */ - }, { key: "getEntry", value: function getEntry(regex) { var _this2 = this; - var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'buffer'; regex = decodeNullUnicode(regex); return new Promise(function (resolve, reject) { @@ -2156,19734 +1842,19835 @@ var Zip = /*#__PURE__*/function () { }); } }]); - return Zip; }(); - module.exports = Zip; -},{"./utils":5,"isomorphic-unzip":60,"path":73}],9:[function(_dereq_,module,exports){ -(function (global){(function (){ -'use strict'; +},{"./utils":5,"isomorphic-unzip":74,"path":92}],9:[function(_dereq_,module,exports){ +'use strict' -var objectAssign = _dereq_('object-assign'); +/** + * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes. + * + * Works with anything that has a `length` property and index access properties, including NodeList. + * + * @template {unknown} T + * @param {Array | ({length:number, [number]: T})} list + * @param {function (item: T, index: number, list:Array | ({length:number, [number]: T})):boolean} predicate + * @param {Partial>?} ac `Array.prototype` by default, + * allows injecting a custom implementation in tests + * @returns {T | undefined} + * + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find + * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find + */ +function find(list, predicate, ac) { + if (ac === undefined) { + ac = Array.prototype; + } + if (list && typeof ac.find === 'function') { + return ac.find.call(list, predicate); + } + for (var i = 0; i < list.length; i++) { + if (Object.prototype.hasOwnProperty.call(list, i)) { + var item = list[i]; + if (predicate.call(undefined, item, i, list)) { + return item; + } + } + } +} -// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js -// original notice: +/** + * "Shallow freezes" an object to render it immutable. + * Uses `Object.freeze` if available, + * otherwise the immutability is only in the type. + * + * Is used to create "enum like" objects. + * + * @template T + * @param {T} object the object to freeze + * @param {Pick = Object} oc `Object` by default, + * allows to inject custom object constructor for tests + * @returns {Readonly} + * + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze + */ +function freeze(object, oc) { + if (oc === undefined) { + oc = Object + } + return oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object +} -/*! - * The buffer module from node.js, for the browser. +/** + * Since we can not rely on `Object.assign` we provide a simplified version + * that is sufficient for our needs. * - * @author Feross Aboukhadijeh - * @license MIT + * @param {Object} target + * @param {Object | null | undefined} source + * + * @returns {Object} target + * @throws TypeError if target is not an object + * + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign */ -function compare(a, b) { - if (a === b) { - return 0; - } +function assign(target, source) { + if (target === null || typeof target !== 'object') { + throw new TypeError('target is not an object') + } + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + return target +} - var x = a.length; - var y = b.length; +/** + * All mime types that are allowed as input to `DOMParser.parseFromString` + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN + * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec + * @see DOMParser.prototype.parseFromString + */ +var MIME_TYPE = freeze({ + /** + * `text/html`, the only mime type that triggers treating an XML document as HTML. + * + * @see DOMParser.SupportedType.isHTML + * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration + * @see https://en.wikipedia.org/wiki/HTML Wikipedia + * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN + * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec + */ + HTML: 'text/html', - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break; - } - } + /** + * Helper method to check a mime type if it indicates an HTML document + * + * @param {string} [value] + * @returns {boolean} + * + * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration + * @see https://en.wikipedia.org/wiki/HTML Wikipedia + * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN + * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring */ + isHTML: function (value) { + return value === MIME_TYPE.HTML + }, - if (x < y) { - return -1; - } - if (y < x) { - return 1; - } - return 0; -} -function isBuffer(b) { - if (global.Buffer && typeof global.Buffer.isBuffer === 'function') { - return global.Buffer.isBuffer(b); - } - return !!(b != null && b._isBuffer); -} + /** + * `application/xml`, the standard mime type for XML documents. + * + * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration + * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303 + * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia + */ + XML_APPLICATION: 'application/xml', -// based on node assert, original notice: -// NB: The URL to the CommonJS spec is kept just for tradition. -// node-assert has evolved a lot since then, both in API and behavior. + /** + * `text/html`, an alias for `application/xml`. + * + * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303 + * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration + * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia + */ + XML_TEXT: 'text/xml', -// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 -// -// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! -// -// Originally from narwhal.js (http://narwhaljs.org) -// Copyright (c) 2009 Thomas Robinson <280north.com> -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the 'Software'), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + /** + * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace, + * but is parsed as an XML document. + * + * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration + * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec + * @see https://en.wikipedia.org/wiki/XHTML Wikipedia + */ + XML_XHTML_APPLICATION: 'application/xhtml+xml', -var util = _dereq_('util/'); -var hasOwn = Object.prototype.hasOwnProperty; -var pSlice = Array.prototype.slice; -var functionsHaveNames = (function () { - return function foo() {}.name === 'foo'; -}()); -function pToString (obj) { - return Object.prototype.toString.call(obj); -} -function isView(arrbuf) { - if (isBuffer(arrbuf)) { - return false; - } - if (typeof global.ArrayBuffer !== 'function') { - return false; - } - if (typeof ArrayBuffer.isView === 'function') { - return ArrayBuffer.isView(arrbuf); - } - if (!arrbuf) { - return false; - } - if (arrbuf instanceof DataView) { - return true; - } - if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { - return true; - } - return false; -} -// 1. The assert module provides functions that throw -// AssertionError's when particular conditions are not met. The -// assert module must conform to the following interface. - -var assert = module.exports = ok; - -// 2. The AssertionError is defined in assert. -// new assert.AssertionError({ message: message, -// actual: actual, -// expected: expected }) + /** + * `image/svg+xml`, + * + * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration + * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1 + * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia + */ + XML_SVG_IMAGE: 'image/svg+xml', +}) -var regex = /\s*function\s+([^\(\s]*)\s*/; -// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js -function getName(func) { - if (!util.isFunction(func)) { - return; - } - if (functionsHaveNames) { - return func.name; - } - var str = func.toString(); - var match = str.match(regex); - return match && match[1]; -} -assert.AssertionError = function AssertionError(options) { - this.name = 'AssertionError'; - this.actual = options.actual; - this.expected = options.expected; - this.operator = options.operator; - if (options.message) { - this.message = options.message; - this.generatedMessage = false; - } else { - this.message = getMessage(this); - this.generatedMessage = true; - } - var stackStartFunction = options.stackStartFunction || fail; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, stackStartFunction); - } else { - // non v8 browsers so we can have a stacktrace - var err = new Error(); - if (err.stack) { - var out = err.stack; +/** + * Namespaces that are used in this code base. + * + * @see http://www.w3.org/TR/REC-xml-names + */ +var NAMESPACE = freeze({ + /** + * The XHTML namespace. + * + * @see http://www.w3.org/1999/xhtml + */ + HTML: 'http://www.w3.org/1999/xhtml', - // try to strip useless frames - var fn_name = getName(stackStartFunction); - var idx = out.indexOf('\n' + fn_name); - if (idx >= 0) { - // once we have located the function frame - // we need to strip out everything before it (and its line) - var next_line = out.indexOf('\n', idx + 1); - out = out.substring(next_line + 1); - } + /** + * Checks if `uri` equals `NAMESPACE.HTML`. + * + * @param {string} [uri] + * + * @see NAMESPACE.HTML + */ + isHTML: function (uri) { + return uri === NAMESPACE.HTML + }, - this.stack = out; - } - } -}; + /** + * The SVG namespace. + * + * @see http://www.w3.org/2000/svg + */ + SVG: 'http://www.w3.org/2000/svg', -// assert.AssertionError instanceof Error -util.inherits(assert.AssertionError, Error); + /** + * The `xml:` namespace. + * + * @see http://www.w3.org/XML/1998/namespace + */ + XML: 'http://www.w3.org/XML/1998/namespace', -function truncate(s, n) { - if (typeof s === 'string') { - return s.length < n ? s : s.slice(0, n); - } else { - return s; - } -} -function inspect(something) { - if (functionsHaveNames || !util.isFunction(something)) { - return util.inspect(something); - } - var rawname = getName(something); - var name = rawname ? ': ' + rawname : ''; - return '[Function' + name + ']'; -} -function getMessage(self) { - return truncate(inspect(self.actual), 128) + ' ' + - self.operator + ' ' + - truncate(inspect(self.expected), 128); -} + /** + * The `xmlns:` namespace + * + * @see https://www.w3.org/2000/xmlns/ + */ + XMLNS: 'http://www.w3.org/2000/xmlns/', +}) -// At present only the three keys mentioned above are used and -// understood by the spec. Implementations or sub modules can pass -// other keys to the AssertionError's constructor - they will be -// ignored. +exports.assign = assign; +exports.find = find; +exports.freeze = freeze; +exports.MIME_TYPE = MIME_TYPE; +exports.NAMESPACE = NAMESPACE; -// 3. All of the following functions must throw an AssertionError -// when a corresponding condition is not met, with a message that -// may be undefined if not provided. All assertion methods provide -// both the actual and expected values to the assertion error for -// display purposes. +},{}],10:[function(_dereq_,module,exports){ +var conventions = _dereq_("./conventions"); +var dom = _dereq_('./dom') +var entities = _dereq_('./entities'); +var sax = _dereq_('./sax'); -function fail(actual, expected, message, operator, stackStartFunction) { - throw new assert.AssertionError({ - message: message, - actual: actual, - expected: expected, - operator: operator, - stackStartFunction: stackStartFunction - }); -} +var DOMImplementation = dom.DOMImplementation; -// EXTENSION! allows for well behaved errors defined elsewhere. -assert.fail = fail; +var NAMESPACE = conventions.NAMESPACE; -// 4. Pure assertion tests whether a value is truthy, as determined -// by !!guard. -// assert.ok(guard, message_opt); -// This statement is equivalent to assert.equal(true, !!guard, -// message_opt);. To test strictly for the value true, use -// assert.strictEqual(true, guard, message_opt);. +var ParseError = sax.ParseError; +var XMLReader = sax.XMLReader; -function ok(value, message) { - if (!value) fail(value, true, message, '==', assert.ok); +/** + * Normalizes line ending according to https://www.w3.org/TR/xml11/#sec-line-ends: + * + * > XML parsed entities are often stored in computer files which, + * > for editing convenience, are organized into lines. + * > These lines are typically separated by some combination + * > of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA). + * > + * > To simplify the tasks of applications, the XML processor must behave + * > as if it normalized all line breaks in external parsed entities (including the document entity) + * > on input, before parsing, by translating all of the following to a single #xA character: + * > + * > 1. the two-character sequence #xD #xA + * > 2. the two-character sequence #xD #x85 + * > 3. the single character #x85 + * > 4. the single character #x2028 + * > 5. any #xD character that is not immediately followed by #xA or #x85. + * + * @param {string} input + * @returns {string} + */ +function normalizeLineEndings(input) { + return input + .replace(/\r[\n\u0085]/g, '\n') + .replace(/[\r\u0085\u2028]/g, '\n') } -assert.ok = ok; - -// 5. The equality assertion tests shallow, coercive equality with -// ==. -// assert.equal(actual, expected, message_opt); - -assert.equal = function equal(actual, expected, message) { - if (actual != expected) fail(actual, expected, message, '==', assert.equal); -}; - -// 6. The non-equality assertion tests for whether two objects are not equal -// with != assert.notEqual(actual, expected, message_opt); -assert.notEqual = function notEqual(actual, expected, message) { - if (actual == expected) { - fail(actual, expected, message, '!=', assert.notEqual); - } -}; +/** + * @typedef Locator + * @property {number} [columnNumber] + * @property {number} [lineNumber] + */ -// 7. The equivalence assertion tests a deep equality relation. -// assert.deepEqual(actual, expected, message_opt); +/** + * @typedef DOMParserOptions + * @property {DOMHandler} [domBuilder] + * @property {Function} [errorHandler] + * @property {(string) => string} [normalizeLineEndings] used to replace line endings before parsing + * defaults to `normalizeLineEndings` + * @property {Locator} [locator] + * @property {Record} [xmlns] + * + * @see normalizeLineEndings + */ -assert.deepEqual = function deepEqual(actual, expected, message) { - if (!_deepEqual(actual, expected, false)) { - fail(actual, expected, message, 'deepEqual', assert.deepEqual); - } -}; +/** + * The DOMParser interface provides the ability to parse XML or HTML source code + * from a string into a DOM `Document`. + * + * _xmldom is different from the spec in that it allows an `options` parameter, + * to override the default behavior._ + * + * @param {DOMParserOptions} [options] + * @constructor + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser + * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization + */ +function DOMParser(options){ + this.options = options ||{locator:{}}; +} -assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { - if (!_deepEqual(actual, expected, true)) { - fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual); - } -}; +DOMParser.prototype.parseFromString = function(source,mimeType){ + var options = this.options; + var sax = new XMLReader(); + var domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler + var errorHandler = options.errorHandler; + var locator = options.locator; + var defaultNSMap = options.xmlns||{}; + var isHTML = /\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1; + var entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES; + if(locator){ + domBuilder.setDocumentLocator(locator) + } -function _deepEqual(actual, expected, strict, memos) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - } else if (isBuffer(actual) && isBuffer(expected)) { - return compare(actual, expected) === 0; + sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); + sax.domBuilder = options.domBuilder || domBuilder; + if(isHTML){ + defaultNSMap[''] = NAMESPACE.HTML; + } + defaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML; + var normalize = options.normalizeLineEndings || normalizeLineEndings; + if (source && typeof source === 'string') { + sax.parse( + normalize(source), + defaultNSMap, + entityMap + ) + } else { + sax.errorHandler.error('invalid doc source') + } + return domBuilder.doc; +} +function buildErrorHandler(errorImpl,domBuilder,locator){ + if(!errorImpl){ + if(domBuilder instanceof DOMHandler){ + return domBuilder; + } + errorImpl = domBuilder ; + } + var errorHandler = {} + var isCallback = errorImpl instanceof Function; + locator = locator||{} + function build(key){ + var fn = errorImpl[key]; + if(!fn && isCallback){ + fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; + } + errorHandler[key] = fn && function(msg){ + fn('[xmldom '+key+']\t'+msg+_locator(locator)); + }||function(){}; + } + build('warning'); + build('error'); + build('fatalError'); + return errorHandler; +} - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (util.isDate(actual) && util.isDate(expected)) { - return actual.getTime() === expected.getTime(); +//console.log('#\n\n\n\n\n\n\n####') +/** + * +ContentHandler+ErrorHandler + * +LexicalHandler+EntityResolver2 + * -DeclHandler-DTDHandler + * + * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler + * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2 + * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html + */ +function DOMHandler() { + this.cdata = false; +} +function position(locator,node){ + node.lineNumber = locator.lineNumber; + node.columnNumber = locator.columnNumber; +} +/** + * @see org.xml.sax.ContentHandler#startDocument + * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html + */ +DOMHandler.prototype = { + startDocument : function() { + this.doc = new DOMImplementation().createDocument(null, null, null); + if (this.locator) { + this.doc.documentURI = this.locator.systemId; + } + }, + startElement:function(namespaceURI, localName, qName, attrs) { + var doc = this.doc; + var el = doc.createElementNS(namespaceURI, qName||localName); + var len = attrs.length; + appendElement(this, el); + this.currentElement = el; - // 7.3 If the expected value is a RegExp object, the actual value is - // equivalent if it is also a RegExp object with the same source and - // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). - } else if (util.isRegExp(actual) && util.isRegExp(expected)) { - return actual.source === expected.source && - actual.global === expected.global && - actual.multiline === expected.multiline && - actual.lastIndex === expected.lastIndex && - actual.ignoreCase === expected.ignoreCase; + this.locator && position(this.locator,el) + for (var i = 0 ; i < len; i++) { + var namespaceURI = attrs.getURI(i); + var value = attrs.getValue(i); + var qName = attrs.getQName(i); + var attr = doc.createAttributeNS(namespaceURI, qName); + this.locator &&position(attrs.getLocator(i),attr); + attr.value = attr.nodeValue = value; + el.setAttributeNode(attr) + } + }, + endElement:function(namespaceURI, localName, qName) { + var current = this.currentElement + var tagName = current.tagName; + this.currentElement = current.parentNode; + }, + startPrefixMapping:function(prefix, uri) { + }, + endPrefixMapping:function(prefix) { + }, + processingInstruction:function(target, data) { + var ins = this.doc.createProcessingInstruction(target, data); + this.locator && position(this.locator,ins) + appendElement(this, ins); + }, + ignorableWhitespace:function(ch, start, length) { + }, + characters:function(chars, start, length) { + chars = _toString.apply(this,arguments) + //console.log(chars) + if(chars){ + if (this.cdata) { + var charNode = this.doc.createCDATASection(chars); + } else { + var charNode = this.doc.createTextNode(chars); + } + if(this.currentElement){ + this.currentElement.appendChild(charNode); + }else if(/^\s*$/.test(chars)){ + this.doc.appendChild(charNode); + //process xml + } + this.locator && position(this.locator,charNode) + } + }, + skippedEntity:function(name) { + }, + endDocument:function() { + this.doc.normalize(); + }, + setDocumentLocator:function (locator) { + if(this.locator = locator){// && !('lineNumber' in locator)){ + locator.lineNumber = 0; + } + }, + //LexicalHandler + comment:function(chars, start, length) { + chars = _toString.apply(this,arguments) + var comm = this.doc.createComment(chars); + this.locator && position(this.locator,comm) + appendElement(this, comm); + }, - // 7.4. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if ((actual === null || typeof actual !== 'object') && - (expected === null || typeof expected !== 'object')) { - return strict ? actual === expected : actual == expected; + startCDATA:function() { + //used in characters() methods + this.cdata = true; + }, + endCDATA:function() { + this.cdata = false; + }, - // If both values are instances of typed arrays, wrap their underlying - // ArrayBuffers in a Buffer each to increase performance - // This optimization requires the arrays to have the same type as checked by - // Object.prototype.toString (aka pToString). Never perform binary - // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their - // bit patterns are not identical. - } else if (isView(actual) && isView(expected) && - pToString(actual) === pToString(expected) && - !(actual instanceof Float32Array || - actual instanceof Float64Array)) { - return compare(new Uint8Array(actual.buffer), - new Uint8Array(expected.buffer)) === 0; + startDTD:function(name, publicId, systemId) { + var impl = this.doc.implementation; + if (impl && impl.createDocumentType) { + var dt = impl.createDocumentType(name, publicId, systemId); + this.locator && position(this.locator,dt) + appendElement(this, dt); + this.doc.doctype = dt; + } + }, + /** + * @see org.xml.sax.ErrorHandler + * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html + */ + warning:function(error) { + console.warn('[xmldom warning]\t'+error,_locator(this.locator)); + }, + error:function(error) { + console.error('[xmldom error]\t'+error,_locator(this.locator)); + }, + fatalError:function(error) { + throw new ParseError(error, this.locator); + } +} +function _locator(l){ + if(l){ + return '\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']' + } +} +function _toString(chars,start,length){ + if(typeof chars == 'string'){ + return chars.substr(start,length) + }else{//java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") + if(chars.length >= start+length || start){ + return new java.lang.String(chars,start,length)+''; + } + return chars; + } +} - // 7.5 For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else if (isBuffer(actual) !== isBuffer(expected)) { - return false; - } else { - memos = memos || {actual: [], expected: []}; +/* + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html + * used method of org.xml.sax.ext.LexicalHandler: + * #comment(chars, start, length) + * #startCDATA() + * #endCDATA() + * #startDTD(name, publicId, systemId) + * + * + * IGNORED method of org.xml.sax.ext.LexicalHandler: + * #endDTD() + * #startEntity(name) + * #endEntity(name) + * + * + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html + * IGNORED method of org.xml.sax.ext.DeclHandler + * #attributeDecl(eName, aName, type, mode, value) + * #elementDecl(name, model) + * #externalEntityDecl(name, publicId, systemId) + * #internalEntityDecl(name, value) + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html + * IGNORED method of org.xml.sax.EntityResolver2 + * #resolveEntity(String name,String publicId,String baseURI,String systemId) + * #resolveEntity(publicId, systemId) + * #getExternalSubset(name, baseURI) + * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html + * IGNORED method of org.xml.sax.DTDHandler + * #notationDecl(name, publicId, systemId) {}; + * #unparsedEntityDecl(name, publicId, systemId, notationName) {}; + */ +"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(key){ + DOMHandler.prototype[key] = function(){return null} +}) - var actualIndex = memos.actual.indexOf(actual); - if (actualIndex !== -1) { - if (actualIndex === memos.expected.indexOf(expected)) { - return true; - } +/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ +function appendElement (hander,node) { + if (!hander.currentElement) { + hander.doc.appendChild(node); + } else { + hander.currentElement.appendChild(node); } +}//appendChild and setAttributeNS are preformance key - memos.actual.push(actual); - memos.expected.push(expected); +exports.__DOMHandler = DOMHandler; +exports.normalizeLineEndings = normalizeLineEndings; +exports.DOMParser = DOMParser; - return objEquiv(actual, expected, strict, memos); - } +},{"./conventions":9,"./dom":11,"./entities":12,"./sax":14}],11:[function(_dereq_,module,exports){ +var conventions = _dereq_("./conventions"); + +var find = conventions.find; +var NAMESPACE = conventions.NAMESPACE; + +/** + * A prerequisite for `[].filter`, to drop elements that are empty + * @param {string} input + * @returns {boolean} + */ +function notEmptyString (input) { + return input !== '' +} +/** + * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace + * @see https://infra.spec.whatwg.org/#ascii-whitespace + * + * @param {string} input + * @returns {string[]} (can be empty) + */ +function splitOnASCIIWhitespace(input) { + // U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE + return input ? input.split(/[\t\n\f\r ]+/).filter(notEmptyString) : [] } -function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; +/** + * Adds element as a key to current if it is not already present. + * + * @param {Record} current + * @param {string} element + * @returns {Record} + */ +function orderedSetReducer (current, element) { + if (!current.hasOwnProperty(element)) { + current[element] = true; + } + return current; } -function objEquiv(a, b, strict, actualVisitedObjects) { - if (a === null || a === undefined || b === null || b === undefined) - return false; - // if one is a primitive, the other must be same - if (util.isPrimitive(a) || util.isPrimitive(b)) - return a === b; - if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) - return false; - var aIsArgs = isArguments(a); - var bIsArgs = isArguments(b); - if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) - return false; - if (aIsArgs) { - a = pSlice.call(a); - b = pSlice.call(b); - return _deepEqual(a, b, strict); - } - var ka = objectKeys(a); - var kb = objectKeys(b); - var key, i; - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length !== kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] !== kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) - return false; - } - return true; +/** + * @see https://infra.spec.whatwg.org/#ordered-set + * @param {string} input + * @returns {string[]} + */ +function toOrderedSet(input) { + if (!input) return []; + var list = splitOnASCIIWhitespace(input); + return Object.keys(list.reduce(orderedSetReducer, {})) } -// 8. The non-equivalence assertion tests for any deep inequality. -// assert.notDeepEqual(actual, expected, message_opt); +/** + * Uses `list.indexOf` to implement something like `Array.prototype.includes`, + * which we can not rely on being available. + * + * @param {any[]} list + * @returns {function(any): boolean} + */ +function arrayIncludes (list) { + return function(element) { + return list && list.indexOf(element) !== -1; + } +} -assert.notDeepEqual = function notDeepEqual(actual, expected, message) { - if (_deepEqual(actual, expected, false)) { - fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); - } -}; +function copy(src,dest){ + for(var p in src){ + if (Object.prototype.hasOwnProperty.call(src, p)) { + dest[p] = src[p]; + } + } +} -assert.notDeepStrictEqual = notDeepStrictEqual; -function notDeepStrictEqual(actual, expected, message) { - if (_deepEqual(actual, expected, true)) { - fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); - } +/** +^\w+\.prototype\.([_\w]+)\s*=\s*((?:.*\{\s*?[\r\n][\s\S]*?^})|\S.*?(?=[;\r\n]));? +^\w+\.prototype\.([_\w]+)\s*=\s*(\S.*?(?=[;\r\n]));? + */ +function _extends(Class,Super){ + var pt = Class.prototype; + if(!(pt instanceof Super)){ + function t(){}; + t.prototype = Super.prototype; + t = new t(); + copy(pt,t); + Class.prototype = pt = t; + } + if(pt.constructor != Class){ + if(typeof Class != 'function'){ + console.error("unknown Class:"+Class) + } + pt.constructor = Class + } } +// Node Types +var NodeType = {} +var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1; +var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2; +var TEXT_NODE = NodeType.TEXT_NODE = 3; +var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4; +var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5; +var ENTITY_NODE = NodeType.ENTITY_NODE = 6; +var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7; +var COMMENT_NODE = NodeType.COMMENT_NODE = 8; +var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9; +var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10; +var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11; +var NOTATION_NODE = NodeType.NOTATION_NODE = 12; -// 9. The strict equality assertion tests strict equality, as determined by ===. -// assert.strictEqual(actual, expected, message_opt); +// ExceptionCode +var ExceptionCode = {} +var ExceptionMessage = {}; +var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]="Index size error"),1); +var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]="DOMString size error"),2); +var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]="Hierarchy request error"),3); +var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]="Wrong document"),4); +var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]="Invalid character"),5); +var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]="No data allowed"),6); +var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]="No modification allowed"),7); +var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]="Not found"),8); +var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]="Not supported"),9); +var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]="Attribute in use"),10); +//level2 +var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = ((ExceptionMessage[11]="Invalid state"),11); +var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = ((ExceptionMessage[12]="Syntax error"),12); +var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = ((ExceptionMessage[13]="Invalid modification"),13); +var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = ((ExceptionMessage[14]="Invalid namespace"),14); +var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = ((ExceptionMessage[15]="Invalid access"),15); -assert.strictEqual = function strictEqual(actual, expected, message) { - if (actual !== expected) { - fail(actual, expected, message, '===', assert.strictEqual); - } +/** + * DOM Level 2 + * Object DOMException + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html + */ +function DOMException(code, message) { + if(message instanceof Error){ + var error = message; + }else{ + error = this; + Error.call(this, ExceptionMessage[code]); + this.message = ExceptionMessage[code]; + if(Error.captureStackTrace) Error.captureStackTrace(this, DOMException); + } + error.code = code; + if(message) this.message = this.message + ": " + message; + return error; }; +DOMException.prototype = Error.prototype; +copy(ExceptionCode,DOMException) -// 10. The strict non-equality assertion tests for strict inequality, as -// determined by !==. assert.notStrictEqual(actual, expected, message_opt); - -assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (actual === expected) { - fail(actual, expected, message, '!==', assert.notStrictEqual); - } +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177 + * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live. + * The items in the NodeList are accessible via an integral index, starting from 0. + */ +function NodeList() { +}; +NodeList.prototype = { + /** + * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. + * @standard level1 + */ + length:0, + /** + * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. + * @standard level1 + * @param index unsigned long + * Index into the collection. + * @return Node + * The node at the indexth position in the NodeList, or null if that is not a valid index. + */ + item: function(index) { + return index >= 0 && index < this.length ? this[index] : null; + }, + toString:function(isHTML,nodeFilter){ + for(var buf = [], i = 0;i=0){ + var lastIndex = list.length-1 + while(i0 || key == 'xmlns'){ +// return null; +// } + //console.log() + var i = this.length; + while(i--){ + var attr = this[i]; + //console.log(attr.nodeName,key) + if(attr.nodeName == key){ + return attr; + } + } + }, + setNamedItem: function(attr) { + var el = attr.ownerElement; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + var oldAttr = this.getNamedItem(attr.nodeName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + /* returns Node */ + setNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR + var el = attr.ownerElement, oldAttr; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + oldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, -// 11. Expected to throw an error: -// assert.throws(block, Error_opt, message_opt); - -assert.throws = function(block, /*optional*/error, /*optional*/message) { - _throws(true, block, error, message); -}; - -// EXTENSION! This is annoying to write outside this module. -assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { - _throws(false, block, error, message); -}; + /* returns Node */ + removeNamedItem: function(key) { + var attr = this.getNamedItem(key); + _removeNamedNode(this._ownerElement,this,attr); + return attr; -assert.ifError = function(err) { if (err) throw err; }; -// Expose a strict only variant of assert -function strict(value, message) { - if (!value) fail(value, true, message, '==', strict); -} -assert.strict = objectAssign(strict, assert, { - equal: assert.strictEqual, - deepEqual: assert.deepStrictEqual, - notEqual: assert.notStrictEqual, - notDeepEqual: assert.notDeepStrictEqual -}); -assert.strict.strict = assert.strict; + },// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - if (hasOwn.call(obj, key)) keys.push(key); - } - return keys; + //for level2 + removeNamedItemNS:function(namespaceURI,localName){ + var attr = this.getNamedItemNS(namespaceURI,localName); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + }, + getNamedItemNS: function(namespaceURI, localName) { + var i = this.length; + while(i--){ + var node = this[i]; + if(node.localName == localName && node.namespaceURI == namespaceURI){ + return node; + } + } + return null; + } }; -}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"object-assign":61,"util/":12}],10:[function(_dereq_,module,exports){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} - -},{}],11:[function(_dereq_,module,exports){ -module.exports = function isBuffer(arg) { - return arg && typeof arg === 'object' - && typeof arg.copy === 'function' - && typeof arg.fill === 'function' - && typeof arg.readUInt8 === 'function'; +/** + * The DOMImplementation interface represents an object providing methods + * which are not dependent on any particular document. + * Such an object is returned by the `Document.implementation` property. + * + * __The individual methods describe the differences compared to the specs.__ + * + * @constructor + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN + * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial) + * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core + * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core + * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard + */ +function DOMImplementation() { } -},{}],12:[function(_dereq_,module,exports){ -(function (process,global){(function (){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(' '); - } +DOMImplementation.prototype = { + /** + * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported. + * The different implementations fairly diverged in what kind of features were reported. + * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use. + * + * @deprecated It is deprecated and modern browsers return true in all cases. + * + * @param {string} feature + * @param {string} [version] + * @returns {boolean} always true + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN + * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core + * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard + */ + hasFeature: function(feature, version) { + return true; + }, + /** + * Creates an XML Document object of the specified type with its document element. + * + * __It behaves slightly different from the description in the living standard__: + * - There is no interface/class `XMLDocument`, it returns a `Document` instance. + * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared. + * - this implementation is not validating names or qualified names + * (when parsing XML strings, the SAX parser takes care of that) + * + * @param {string|null} namespaceURI + * @param {string} qualifiedName + * @param {DocumentType=null} doctype + * @returns {Document} + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN + * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial) + * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Level 2 Core + * + * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract + * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names + * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names + */ + createDocument: function(namespaceURI, qualifiedName, doctype){ + var doc = new Document(); + doc.implementation = this; + doc.childNodes = new NodeList(); + doc.doctype = doctype || null; + if (doctype){ + doc.appendChild(doctype); + } + if (qualifiedName){ + var root = doc.createElementNS(namespaceURI, qualifiedName); + doc.appendChild(root); + } + return doc; + }, + /** + * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`. + * + * __This behavior is slightly different from the in the specs__: + * - this implementation is not validating names or qualified names + * (when parsing XML strings, the SAX parser takes care of that) + * + * @param {string} qualifiedName + * @param {string} [publicId] + * @param {string} [systemId] + * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation + * or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()` + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN + * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core + * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard + * + * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract + * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names + * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names + */ + createDocumentType: function(qualifiedName, publicId, systemId){ + var node = new DocumentType(); + node.name = qualifiedName; + node.nodeName = qualifiedName; + node.publicId = publicId || ''; + node.systemId = systemId || ''; - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } - } - return str; + return node; + } }; -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. -exports.deprecate = function(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(global.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247 + */ - if (process.noDeprecation === true) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; +function Node() { }; - -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; +Node.prototype = { + firstChild : null, + lastChild : null, + previousSibling : null, + nextSibling : null, + attributes : null, + parentNode : null, + childNodes : null, + ownerDocument : null, + nodeValue : null, + namespaceURI : null, + prefix : null, + localName : null, + // Modified in DOM Level 2: + insertBefore:function(newChild, refChild){//raises + return _insertBefore(this,newChild,refChild); + }, + replaceChild:function(newChild, oldChild){//raises + _insertBefore(this, newChild,oldChild, assertPreReplacementValidityInDocument); + if(oldChild){ + this.removeChild(oldChild); + } + }, + removeChild:function(oldChild){ + return _removeChild(this,oldChild); + }, + appendChild:function(newChild){ + return this.insertBefore(newChild,null); + }, + hasChildNodes:function(){ + return this.firstChild != null; + }, + cloneNode:function(deep){ + return cloneNode(this.ownerDocument||this,this,deep); + }, + // Modified in DOM Level 2: + normalize:function(){ + var child = this.firstChild; + while(child){ + var next = child.nextSibling; + if(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){ + this.removeChild(next); + child.appendData(next.data); + }else{ + child.normalize(); + child = next; + } + } + }, + // Introduced in DOM Level 2: + isSupported:function(feature, version){ + return this.ownerDocument.implementation.hasFeature(feature,version); + }, + // Introduced in DOM Level 2: + hasAttributes:function(){ + return this.attributes.length>0; + }, + /** + * Look up the prefix associated to the given namespace URI, starting from this node. + * **The default namespace declarations are ignored by this method.** + * See Namespace Prefix Lookup for details on the algorithm used by this method. + * + * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._ + * + * @param {string | null} namespaceURI + * @returns {string | null} + * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix + * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo + * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix + * @see https://github.com/xmldom/xmldom/issues/322 + */ + lookupPrefix:function(namespaceURI){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + for(var n in map){ + if (Object.prototype.hasOwnProperty.call(map, n) && map[n] === namespaceURI) { + return n; + } + } + } + el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + lookupNamespaceURI:function(prefix){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + if(Object.prototype.hasOwnProperty.call(map, prefix)){ + return map[prefix] ; + } + } + el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + isDefaultNamespace:function(namespaceURI){ + var prefix = this.lookupPrefix(namespaceURI); + return prefix == null; } - } - return debugs[set]; }; -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); +function _xmlEncoder(c){ + return c == '<' && '<' || + c == '>' && '>' || + c == '&' && '&' || + c == '"' && '"' || + '&#'+c.charCodeAt()+';' } -exports.inspect = inspect; -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; +copy(NodeType,Node); +copy(NodeType,Node.prototype); -// Don't use 'blue' not visible on cmd.exe -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; +/** + * @param callback return true for continue,false for break + * @return boolean true: break visit; + */ +function _visitNode(node,callback){ + if(callback(node)){ + return true; + } + if(node = node.firstChild){ + do{ + if(_visitNode(node,callback)){return true} + }while(node=node.nextSibling) + } +} -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; - } +function Document(){ + this.ownerDocument = this; } - -function stylizeNoColor(str, styleType) { - return str; +function _onAddAttribute(doc,el,newAttr){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns === NAMESPACE.XMLNS){ + //update namespace + el._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value + } } - -function arrayToHash(array) { - var hash = {}; - - array.forEach(function(val, idx) { - hash[val] = true; - }); - - return hash; +function _onRemoveAttribute(doc,el,newAttr,remove){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns === NAMESPACE.XMLNS){ + //update namespace + delete el._nsMap[newAttr.prefix?newAttr.localName:''] + } } +/** + * Updates `el.childNodes`, updating the indexed items and it's `length`. + * Passing `newChild` means it will be appended. + * Otherwise it's assumed that an item has been removed, + * and `el.firstNode` and it's `.nextSibling` are used + * to walk the current list of child nodes. + * + * @param {Document} doc + * @param {Node} el + * @param {Node} [newChild] + * @private + */ +function _onUpdateChild (doc, el, newChild) { + if(doc && doc._inc){ + doc._inc++; + //update childNodes + var cs = el.childNodes; + if (newChild) { + cs[cs.length++] = newChild; + } else { + var child = el.firstChild; + var i = 0; + while (child) { + cs[i++] = child; + child = child.nextSibling; + } + cs.length = i; + delete cs[cs.length]; + } + } +} -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } - - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } +/** + * Removes the connections between `parentNode` and `child` + * and any existing `child.previousSibling` or `child.nextSibling`. + * + * @see https://github.com/xmldom/xmldom/issues/135 + * @see https://github.com/xmldom/xmldom/issues/145 + * + * @param {Node} parentNode + * @param {Node} child + * @returns {Node} the child that was removed. + * @private + */ +function _removeChild (parentNode, child) { + var previous = child.previousSibling; + var next = child.nextSibling; + if (previous) { + previous.nextSibling = next; + } else { + parentNode.firstChild = next; + } + if (next) { + next.previousSibling = previous; + } else { + parentNode.lastChild = previous; + } + child.parentNode = null; + child.previousSibling = null; + child.nextSibling = null; + _onUpdateChild(parentNode.ownerDocument, parentNode); + return child; +} - var base = '', array = false, braces = ['{', '}']; +/** + * Returns `true` if `node` can be a parent for insertion. + * @param {Node} node + * @returns {boolean} + */ +function hasValidParentNodeType(node) { + return ( + node && + (node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || node.nodeType === Node.ELEMENT_NODE) + ); +} - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } +/** + * Returns `true` if `node` can be inserted according to it's `nodeType`. + * @param {Node} node + * @returns {boolean} + */ +function hasInsertableNodeType(node) { + return ( + node && + (isElementNode(node) || + isTextNode(node) || + isDocTypeNode(node) || + node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || + node.nodeType === Node.COMMENT_NODE || + node.nodeType === Node.PROCESSING_INSTRUCTION_NODE) + ); +} - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } +/** + * Returns true if `node` is a DOCTYPE node + * @param {Node} node + * @returns {boolean} + */ +function isDocTypeNode(node) { + return node && node.nodeType === Node.DOCUMENT_TYPE_NODE; +} - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } +/** + * Returns true if the node is an element + * @param {Node} node + * @returns {boolean} + */ +function isElementNode(node) { + return node && node.nodeType === Node.ELEMENT_NODE; +} +/** + * Returns true if `node` is a text node + * @param {Node} node + * @returns {boolean} + */ +function isTextNode(node) { + return node && node.nodeType === Node.TEXT_NODE; +} - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } +/** + * Check if en element node can be inserted before `child`, or at the end if child is falsy, + * according to the presence and position of a doctype node on the same level. + * + * @param {Document} doc The document node + * @param {Node} child the node that would become the nextSibling if the element would be inserted + * @returns {boolean} `true` if an element can be inserted before child + * @private + * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity + */ +function isElementInsertionPossible(doc, child) { + var parentChildNodes = doc.childNodes || []; + if (find(parentChildNodes, isElementNode) || isDocTypeNode(child)) { + return false; + } + var docTypeNode = find(parentChildNodes, isDocTypeNode); + return !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child)); +} - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } +/** + * Check if en element node can be inserted before `child`, or at the end if child is falsy, + * according to the presence and position of a doctype node on the same level. + * + * @param {Node} doc The document node + * @param {Node} child the node that would become the nextSibling if the element would be inserted + * @returns {boolean} `true` if an element can be inserted before child + * @private + * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity + */ +function isElementReplacementPossible(doc, child) { + var parentChildNodes = doc.childNodes || []; - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } + function hasElementChildThatIsNotChild(node) { + return isElementNode(node) && node !== child; + } - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } + if (find(parentChildNodes, hasElementChildThatIsNotChild)) { + return false; + } + var docTypeNode = find(parentChildNodes, isDocTypeNode); + return !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child)); +} - ctx.seen.push(value); +/** + * @private + * Steps 1-5 of the checks before inserting and before replacing a child are the same. + * + * @param {Node} parent the parent node to insert `node` into + * @param {Node} node the node to insert + * @param {Node=} child the node that should become the `nextSibling` of `node` + * @returns {Node} + * @throws DOMException for several node combinations that would create a DOM that is not well-formed. + * @throws DOMException if `child` is provided but is not a child of `parent`. + * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity + * @see https://dom.spec.whatwg.org/#concept-node-replace + */ +function assertPreInsertionValidity1to5(parent, node, child) { + // 1. If `parent` is not a Document, DocumentFragment, or Element node, then throw a "HierarchyRequestError" DOMException. + if (!hasValidParentNodeType(parent)) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'Unexpected parent node type ' + parent.nodeType); + } + // 2. If `node` is a host-including inclusive ancestor of `parent`, then throw a "HierarchyRequestError" DOMException. + // not implemented! + // 3. If `child` is non-null and its parent is not `parent`, then throw a "NotFoundError" DOMException. + if (child && child.parentNode !== parent) { + throw new DOMException(NOT_FOUND_ERR, 'child not in parent'); + } + if ( + // 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a "HierarchyRequestError" DOMException. + !hasInsertableNodeType(node) || + // 5. If either `node` is a Text node and `parent` is a document, + // the sax parser currently adds top level text nodes, this will be fixed in 0.9.0 + // || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE) + // or `node` is a doctype and `parent` is not a document, then throw a "HierarchyRequestError" DOMException. + (isDocTypeNode(node) && parent.nodeType !== Node.DOCUMENT_NODE) + ) { + throw new DOMException( + HIERARCHY_REQUEST_ERR, + 'Unexpected node type ' + node.nodeType + ' for parent node type ' + parent.nodeType + ); + } +} - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } +/** + * @private + * Step 6 of the checks before inserting and before replacing a child are different. + * + * @param {Document} parent the parent node to insert `node` into + * @param {Node} node the node to insert + * @param {Node | undefined} child the node that should become the `nextSibling` of `node` + * @returns {Node} + * @throws DOMException for several node combinations that would create a DOM that is not well-formed. + * @throws DOMException if `child` is provided but is not a child of `parent`. + * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity + * @see https://dom.spec.whatwg.org/#concept-node-replace + */ +function assertPreInsertionValidityInDocument(parent, node, child) { + var parentChildNodes = parent.childNodes || []; + var nodeChildNodes = node.childNodes || []; + + // DocumentFragment + if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { + var nodeChildElements = nodeChildNodes.filter(isElementNode); + // If node has more than one element child or has a Text node child. + if (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment'); + } + // Otherwise, if `node` has one element child and either `parent` has an element child, + // `child` is a doctype, or `child` is non-null and a doctype is following `child`. + if (nodeChildElements.length === 1 && !isElementInsertionPossible(parent, child)) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype'); + } + } + // Element + if (isElementNode(node)) { + // `parent` has an element child, `child` is a doctype, + // or `child` is non-null and a doctype is following `child`. + if (!isElementInsertionPossible(parent, child)) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype'); + } + } + // DocumentType + if (isDocTypeNode(node)) { + // `parent` has a doctype child, + if (find(parentChildNodes, isDocTypeNode)) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed'); + } + var parentElementChild = find(parentChildNodes, isElementNode); + // `child` is non-null and an element is preceding `child`, + if (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element'); + } + // or `child` is null and `parent` has an element child. + if (!child && parentElementChild) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can not be appended since element is present'); + } + } +} - ctx.seen.pop(); +/** + * @private + * Step 6 of the checks before inserting and before replacing a child are different. + * + * @param {Document} parent the parent node to insert `node` into + * @param {Node} node the node to insert + * @param {Node | undefined} child the node that should become the `nextSibling` of `node` + * @returns {Node} + * @throws DOMException for several node combinations that would create a DOM that is not well-formed. + * @throws DOMException if `child` is provided but is not a child of `parent`. + * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity + * @see https://dom.spec.whatwg.org/#concept-node-replace + */ +function assertPreReplacementValidityInDocument(parent, node, child) { + var parentChildNodes = parent.childNodes || []; + var nodeChildNodes = node.childNodes || []; + + // DocumentFragment + if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { + var nodeChildElements = nodeChildNodes.filter(isElementNode); + // If `node` has more than one element child or has a Text node child. + if (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment'); + } + // Otherwise, if `node` has one element child and either `parent` has an element child that is not `child` or a doctype is following `child`. + if (nodeChildElements.length === 1 && !isElementReplacementPossible(parent, child)) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype'); + } + } + // Element + if (isElementNode(node)) { + // `parent` has an element child that is not `child` or a doctype is following `child`. + if (!isElementReplacementPossible(parent, child)) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype'); + } + } + // DocumentType + if (isDocTypeNode(node)) { + function hasDoctypeChildThatIsNotChild(node) { + return isDocTypeNode(node) && node !== child; + } - return reduceToSingleString(output, base, braces); + // `parent` has a doctype child that is not `child`, + if (find(parentChildNodes, hasDoctypeChildThatIsNotChild)) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed'); + } + var parentElementChild = find(parentChildNodes, isElementNode); + // or an element is preceding `child`. + if (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) { + throw new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element'); + } + } } +/** + * @private + * @param {Node} parent the parent node to insert `node` into + * @param {Node} node the node to insert + * @param {Node=} child the node that should become the `nextSibling` of `node` + * @returns {Node} + * @throws DOMException for several node combinations that would create a DOM that is not well-formed. + * @throws DOMException if `child` is provided but is not a child of `parent`. + * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity + */ +function _insertBefore(parent, node, child, _inDocumentAssertion) { + // To ensure pre-insertion validity of a node into a parent before a child, run these steps: + assertPreInsertionValidity1to5(parent, node, child); + + // If parent is a document, and any of the statements below, switched on the interface node implements, + // are true, then throw a "HierarchyRequestError" DOMException. + if (parent.nodeType === Node.DOCUMENT_NODE) { + (_inDocumentAssertion || assertPreInsertionValidityInDocument)(parent, node, child); + } -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); -} + var cp = node.parentNode; + if(cp){ + cp.removeChild(node);//remove and update + } + if(node.nodeType === DOCUMENT_FRAGMENT_NODE){ + var newFirst = node.firstChild; + if (newFirst == null) { + return node; + } + var newLast = node.lastChild; + }else{ + newFirst = newLast = node; + } + var pre = child ? child.previousSibling : parent.lastChild; + newFirst.previousSibling = pre; + newLast.nextSibling = child; -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} + if(pre){ + pre.nextSibling = newFirst; + }else{ + parent.firstChild = newFirst; + } + if(child == null){ + parent.lastChild = newLast; + }else{ + child.previousSibling = newLast; + } + do{ + newFirst.parentNode = parent; + }while(newFirst !== newLast && (newFirst= newFirst.nextSibling)) + _onUpdateChild(parent.ownerDocument||parent, parent); + //console.log(parent.lastChild.nextSibling == null) + if (node.nodeType == DOCUMENT_FRAGMENT_NODE) { + node.firstChild = node.lastChild = null; + } + return node; +} -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; +/** + * Appends `newChild` to `parentNode`. + * If `newChild` is already connected to a `parentNode` it is first removed from it. + * + * @see https://github.com/xmldom/xmldom/issues/135 + * @see https://github.com/xmldom/xmldom/issues/145 + * @param {Node} parentNode + * @param {Node} newChild + * @returns {Node} + * @private + */ +function _appendSingleChild (parentNode, newChild) { + if (newChild.parentNode) { + newChild.parentNode.removeChild(newChild); + } + newChild.parentNode = parentNode; + newChild.previousSibling = parentNode.lastChild; + newChild.nextSibling = null; + if (newChild.previousSibling) { + newChild.previousSibling.nextSibling = newChild; + } else { + parentNode.firstChild = newChild; + } + parentNode.lastChild = newChild; + _onUpdateChild(parentNode.ownerDocument, parentNode, newChild); + return newChild; } +Document.prototype = { + //implementation : null, + nodeName : '#document', + nodeType : DOCUMENT_NODE, + /** + * The DocumentType node of the document. + * + * @readonly + * @type DocumentType + */ + doctype : null, + documentElement : null, + _inc : 1, -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); + insertBefore : function(newChild, refChild){//raises + if(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){ + var child = newChild.firstChild; + while(child){ + var next = child.nextSibling; + this.insertBefore(child,refChild); + child = next; + } + return newChild; + } + _insertBefore(this, newChild, refChild); + newChild.ownerDocument = this; + if (this.documentElement === null && newChild.nodeType === ELEMENT_NODE) { + this.documentElement = newChild; + } - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } + return newChild; + }, + removeChild : function(oldChild){ + if(this.documentElement == oldChild){ + this.documentElement = null; + } + return _removeChild(this,oldChild); + }, + replaceChild: function (newChild, oldChild) { + //raises + _insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument); + newChild.ownerDocument = this; + if (oldChild) { + this.removeChild(oldChild); + } + if (isElementNode(newChild)) { + this.documentElement = newChild; + } + }, + // Introduced in DOM Level 2: + importNode : function(importedNode,deep){ + return importNode(this,importedNode,deep); + }, + // Introduced in DOM Level 2: + getElementById : function(id){ + var rtv = null; + _visitNode(this.documentElement,function(node){ + if(node.nodeType == ELEMENT_NODE){ + if(node.getAttribute('id') == id){ + rtv = node; + return true; + } + } + }) + return rtv; + }, - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} + /** + * The `getElementsByClassName` method of `Document` interface returns an array-like object + * of all child elements which have **all** of the given class name(s). + * + * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters. + * + * + * Warning: This is a live LiveNodeList. + * Changes in the DOM will reflect in the array as the changes occur. + * If an element selected by this array no longer qualifies for the selector, + * it will automatically be removed. Be aware of this for iteration purposes. + * + * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName + * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname + */ + getElementsByClassName: function(classNames) { + var classNamesSet = toOrderedSet(classNames) + return new LiveNodeList(this, function(base) { + var ls = []; + if (classNamesSet.length > 0) { + _visitNode(base.documentElement, function(node) { + if(node !== base && node.nodeType === ELEMENT_NODE) { + var nodeClassNames = node.getAttribute('class') + // can be null if the attribute does not exist + if (nodeClassNames) { + // before splitting and iterating just compare them for the most common case + var matches = classNames === nodeClassNames; + if (!matches) { + var nodeClassNamesSet = toOrderedSet(nodeClassNames) + matches = classNamesSet.every(arrayIncludes(nodeClassNamesSet)) + } + if(matches) { + ls.push(node); + } + } + } + }); + } + return ls; + }); + }, + //document factory method: + createElement : function(tagName){ + var node = new Element(); + node.ownerDocument = this; + node.nodeName = tagName; + node.tagName = tagName; + node.localName = tagName; + node.childNodes = new NodeList(); + var attrs = node.attributes = new NamedNodeMap(); + attrs._ownerElement = node; + return node; + }, + createDocumentFragment : function(){ + var node = new DocumentFragment(); + node.ownerDocument = this; + node.childNodes = new NodeList(); + return node; + }, + createTextNode : function(data){ + var node = new Text(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createComment : function(data){ + var node = new Comment(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createCDATASection : function(data){ + var node = new CDATASection(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createProcessingInstruction : function(target,data){ + var node = new ProcessingInstruction(); + node.ownerDocument = this; + node.tagName = node.nodeName = node.target = target; + node.nodeValue = node.data = data; + return node; + }, + createAttribute : function(name){ + var node = new Attr(); + node.ownerDocument = this; + node.name = name; + node.nodeName = name; + node.localName = name; + node.specified = true; + return node; + }, + createEntityReference : function(name){ + var node = new EntityReference(); + node.ownerDocument = this; + node.nodeName = name; + return node; + }, + // Introduced in DOM Level 2: + createElementNS : function(namespaceURI,qualifiedName){ + var node = new Element(); + var pl = qualifiedName.split(':'); + var attrs = node.attributes = new NamedNodeMap(); + node.childNodes = new NodeList(); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.tagName = qualifiedName; + node.namespaceURI = namespaceURI; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + attrs._ownerElement = node; + return node; + }, + // Introduced in DOM Level 2: + createAttributeNS : function(namespaceURI,qualifiedName){ + var node = new Attr(); + var pl = qualifiedName.split(':'); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.name = qualifiedName; + node.namespaceURI = namespaceURI; + node.specified = true; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + return node; + } +}; +_extends(Document,Node); -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; +function Element() { + this._nsMap = {}; +}; +Element.prototype = { + nodeType : ELEMENT_NODE, + hasAttribute : function(name){ + return this.getAttributeNode(name)!=null; + }, + getAttribute : function(name){ + var attr = this.getAttributeNode(name); + return attr && attr.value || ''; + }, + getAttributeNode : function(name){ + return this.attributes.getNamedItem(name); + }, + setAttribute : function(name, value){ + var attr = this.ownerDocument.createAttribute(name); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + removeAttribute : function(name){ + var attr = this.getAttributeNode(name) + attr && this.removeAttributeNode(attr); + }, -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; + //four real opeartion method + appendChild:function(newChild){ + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + return this.insertBefore(newChild,null); + }else{ + return _appendSingleChild(this,newChild); + } + }, + setAttributeNode : function(newAttr){ + return this.attributes.setNamedItem(newAttr); + }, + setAttributeNodeNS : function(newAttr){ + return this.attributes.setNamedItemNS(newAttr); + }, + removeAttributeNode : function(oldAttr){ + //console.log(this == oldAttr.ownerElement) + return this.attributes.removeNamedItem(oldAttr.nodeName); + }, + //get real attribute name,and remove it by removeAttributeNode + removeAttributeNS : function(namespaceURI, localName){ + var old = this.getAttributeNodeNS(namespaceURI, localName); + old && this.removeAttributeNode(old); + }, -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; + hasAttributeNS : function(namespaceURI, localName){ + return this.getAttributeNodeNS(namespaceURI, localName)!=null; + }, + getAttributeNS : function(namespaceURI, localName){ + var attr = this.getAttributeNodeNS(namespaceURI, localName); + return attr && attr.value || ''; + }, + setAttributeNS : function(namespaceURI, qualifiedName, value){ + var attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + getAttributeNodeNS : function(namespaceURI, localName){ + return this.attributes.getNamedItemNS(namespaceURI, localName); + }, -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; + getElementsByTagName : function(tagName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){ + ls.push(node); + } + }); + return ls; + }); + }, + getElementsByTagNameNS : function(namespaceURI, localName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){ + ls.push(node); + } + }); + return ls; -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; + }); + } +}; +Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName; +Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS; -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; +_extends(Element,Node); +function Attr() { +}; +Attr.prototype.nodeType = ATTRIBUTE_NODE; +_extends(Attr,Node); -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; +function CharacterData() { +}; +CharacterData.prototype = { + data : '', + substringData : function(offset, count) { + return this.data.substring(offset, offset+count); + }, + appendData: function(text) { + text = this.data+text; + this.nodeValue = this.data = text; + this.length = text.length; + }, + insertData: function(offset,text) { + this.replaceData(offset,0,text); -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; + }, + appendChild:function(newChild){ + throw new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR]) + }, + deleteData: function(offset, count) { + this.replaceData(offset,count,""); + }, + replaceData: function(offset, count, text) { + var start = this.data.substring(0,offset); + var end = this.data.substring(offset+count); + text = start + text + end; + this.nodeValue = this.data = text; + this.length = text.length; + } } -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); +_extends(CharacterData,Node); +function Text() { +}; +Text.prototype = { + nodeName : "#text", + nodeType : TEXT_NODE, + splitText : function(offset) { + var text = this.data; + var newText = text.substring(offset); + text = text.substring(0, offset); + this.data = this.nodeValue = text; + this.length = text.length; + var newNode = this.ownerDocument.createTextNode(newText); + if(this.parentNode){ + this.parentNode.insertBefore(newNode, this.nextSibling); + } + return newNode; + } } -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; +_extends(Text,CharacterData); +function Comment() { +}; +Comment.prototype = { + nodeName : "#comment", + nodeType : COMMENT_NODE } -exports.isFunction = isFunction; +_extends(Comment,CharacterData); -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; +function CDATASection() { +}; +CDATASection.prototype = { + nodeName : "#cdata-section", + nodeType : CDATA_SECTION_NODE } -exports.isPrimitive = isPrimitive; +_extends(CDATASection,CharacterData); -exports.isBuffer = _dereq_('./support/isBuffer'); -function objectToString(o) { - return Object.prototype.toString.call(o); -} +function DocumentType() { +}; +DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE; +_extends(DocumentType,Node); +function Notation() { +}; +Notation.prototype.nodeType = NOTATION_NODE; +_extends(Notation,Node); -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} +function Entity() { +}; +Entity.prototype.nodeType = ENTITY_NODE; +_extends(Entity,Node); +function EntityReference() { +}; +EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE; +_extends(EntityReference,Node); -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; +function DocumentFragment() { +}; +DocumentFragment.prototype.nodeName = "#document-fragment"; +DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE; +_extends(DocumentFragment,Node); -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} +function ProcessingInstruction() { +} +ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE; +_extends(ProcessingInstruction,Node); +function XMLSerializer(){} +XMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){ + return nodeSerializeToString.call(node,isHtml,nodeFilter); +} +Node.prototype.toString = nodeSerializeToString; +function nodeSerializeToString(isHtml,nodeFilter){ + var buf = []; + var refNode = this.nodeType == 9 && this.documentElement || this; + var prefix = refNode.prefix; + var uri = refNode.namespaceURI; -// log is just a thin wrapper to console.log that prepends a timestamp -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; + if(uri && prefix == null){ + //console.log(prefix) + var prefix = refNode.lookupPrefix(uri); + if(prefix == null){ + //isHTML = true; + var visibleNamespaces=[ + {namespace:uri,prefix:null} + //{namespace:uri,prefix:''} + ] + } + } + serializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces); + //console.log('###',this.nodeType,uri,prefix,buf.join('')) + return buf.join(''); +} +function needNamespaceDefine(node, isHTML, visibleNamespaces) { + var prefix = node.prefix || ''; + var uri = node.namespaceURI; + // According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) , + // and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl : + // > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty. + // in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using) + // and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared : + // > [...] Furthermore, the attribute value [...] must not be an empty string. + // so serializing empty namespace value like xmlns:ds="" would produce an invalid XML document. + if (!uri) { + return false; + } + if (prefix === "xml" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) { + return false; + } -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). + var i = visibleNamespaces.length + while (i--) { + var ns = visibleNamespaces[i]; + // get namespace prefix + if (ns.prefix === prefix) { + return ns.namespace !== uri; + } + } + return true; +} +/** + * Well-formed constraint: No < in Attribute Values + * > The replacement text of any entity referred to directly or indirectly + * > in an attribute value must not contain a <. + * @see https://www.w3.org/TR/xml11/#CleanAttrVals + * @see https://www.w3.org/TR/xml11/#NT-AttValue * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. + * Literal whitespace other than space that appear in attribute values + * are serialized as their entity references, so they will be preserved. + * (In contrast to whitespace literals in the input which are normalized to spaces) + * @see https://www.w3.org/TR/xml11/#AVNormalize + * @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes */ -exports.inherits = _dereq_('inherits'); - -exports._extend = function(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -}; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); +function addSerializedAttribute(buf, qualifiedName, value) { + buf.push(' ', qualifiedName, '="', value.replace(/[<>&"\t\n\r]/g, _xmlEncoder), '"') } -}).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./support/isBuffer":11,"_process":78,"inherits":10}],13:[function(_dereq_,module,exports){ -'use strict' - -exports.byteLength = byteLength -exports.toByteArray = toByteArray -exports.fromByteArray = fromByteArray +function serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){ + if (!visibleNamespaces) { + visibleNamespaces = []; + } -var lookup = [] -var revLookup = [] -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + if(nodeFilter){ + node = nodeFilter(node); + if(node){ + if(typeof node == 'string'){ + buf.push(node); + return; + } + }else{ + return; + } + //buf.sort.apply(attrs, attributeSorter); + } -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] - revLookup[code.charCodeAt(i)] = i -} + switch(node.nodeType){ + case ELEMENT_NODE: + var attrs = node.attributes; + var len = attrs.length; + var child = node.firstChild; + var nodeName = node.tagName; -// Support decoding URL-safe base64 strings, as Node.js does. -// See: https://en.wikipedia.org/wiki/Base64#URL_applications -revLookup['-'.charCodeAt(0)] = 62 -revLookup['_'.charCodeAt(0)] = 63 + isHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML -function getLens (b64) { - var len = b64.length + var prefixedNodeName = nodeName + if (!isHTML && !node.prefix && node.namespaceURI) { + var defaultNS + // lookup current default ns from `xmlns` attribute + for (var ai = 0; ai < attrs.length; ai++) { + if (attrs.item(ai).name === 'xmlns') { + defaultNS = attrs.item(ai).value + break + } + } + if (!defaultNS) { + // lookup current default ns in visibleNamespaces + for (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) { + var namespace = visibleNamespaces[nsi] + if (namespace.prefix === '' && namespace.namespace === node.namespaceURI) { + defaultNS = namespace.namespace + break + } + } + } + if (defaultNS !== node.namespaceURI) { + for (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) { + var namespace = visibleNamespaces[nsi] + if (namespace.namespace === node.namespaceURI) { + if (namespace.prefix) { + prefixedNodeName = namespace.prefix + ':' + nodeName + } + break + } + } + } + } - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } + buf.push('<', prefixedNodeName); - // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - var validLen = b64.indexOf('=') - if (validLen === -1) validLen = len + for(var i=0;i'); + //if is cdata child node + if(isHTML && /^script$/i.test(nodeName)){ + while(child){ + if(child.data){ + buf.push(child.data); + }else{ + serializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice()); + } + child = child.nextSibling; + } + }else + { + while(child){ + serializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice()); + child = child.nextSibling; + } + } + buf.push(''); + }else{ + buf.push('/>'); + } + // remove added visible namespaces + //visibleNamespaces.length = startVisibleNamespaces; + return; + case DOCUMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: + var child = node.firstChild; + while(child){ + serializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice()); + child = child.nextSibling; + } + return; + case ATTRIBUTE_NODE: + return addSerializedAttribute(buf, node.name, node.value); + case TEXT_NODE: + /** + * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form, + * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. + * If they are needed elsewhere, they must be escaped using either numeric character references or the strings + * `&` and `<` respectively. + * The right angle bracket (>) may be represented using the string " > ", and must, for compatibility, + * be escaped using either `>` or a character reference when it appears in the string `]]>` in content, + * when that string is not marking the end of a CDATA section. + * + * In the content of elements, character data is any string of characters + * which does not contain the start-delimiter of any markup + * and does not include the CDATA-section-close delimiter, `]]>`. + * + * @see https://www.w3.org/TR/xml/#NT-CharData + * @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node + */ + return buf.push(node.data + .replace(/[<&>]/g,_xmlEncoder) + ); + case CDATA_SECTION_NODE: + return buf.push( ''); + case COMMENT_NODE: + return buf.push( ""); + case DOCUMENT_TYPE_NODE: + var pubid = node.publicId; + var sysid = node.systemId; + buf.push(''); + }else if(sysid && sysid!='.'){ + buf.push(' SYSTEM ', sysid, '>'); + }else{ + var sub = node.internalSubset; + if(sub){ + buf.push(" [",sub,"]"); + } + buf.push(">"); + } + return; + case PROCESSING_INSTRUCTION_NODE: + return buf.push( ""); + case ENTITY_REFERENCE_NODE: + return buf.push( '&',node.nodeName,';'); + //case ENTITY_NODE: + //case NOTATION_NODE: + default: + buf.push('??',node.nodeName); + } } - -function _byteLength (b64, validLen, placeHoldersLen) { - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +function importNode(doc,node,deep){ + var node2; + switch (node.nodeType) { + case ELEMENT_NODE: + node2 = node.cloneNode(false); + node2.ownerDocument = doc; + //var attrs = node2.attributes; + //var len = attrs.length; + //for(var i=0;i 0 - ? validLen - 4 - : validLen + Object.defineProperty(Node.prototype,'textContent',{ + get:function(){ + return getTextContent(this); + }, - var i - for (i = 0; i < len; i += 4) { - tmp = - (revLookup[b64.charCodeAt(i)] << 18) | - (revLookup[b64.charCodeAt(i + 1)] << 12) | - (revLookup[b64.charCodeAt(i + 2)] << 6) | - revLookup[b64.charCodeAt(i + 3)] - arr[curByte++] = (tmp >> 16) & 0xFF - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } + set:function(data){ + switch(this.nodeType){ + case ELEMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: + while(this.firstChild){ + this.removeChild(this.firstChild); + } + if(data || String(data)){ + this.appendChild(this.ownerDocument.createTextNode(data)); + } + break; - if (placeHoldersLen === 2) { - tmp = - (revLookup[b64.charCodeAt(i)] << 2) | - (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[curByte++] = tmp & 0xFF - } + default: + this.data = data; + this.value = data; + this.nodeValue = data; + } + } + }) - if (placeHoldersLen === 1) { - tmp = - (revLookup[b64.charCodeAt(i)] << 10) | - (revLookup[b64.charCodeAt(i + 1)] << 4) | - (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } + function getTextContent(node){ + switch(node.nodeType){ + case ELEMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: + var buf = []; + node = node.firstChild; + while(node){ + if(node.nodeType!==7 && node.nodeType !==8){ + buf.push(getTextContent(node)); + } + node = node.nextSibling; + } + return buf.join(''); + default: + return node.nodeValue; + } + } - return arr + __set__ = function(object,key,value){ + //console.log(value) + object['$$'+key] = value + } + } +}catch(e){//ie8 } -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F] -} +//if(typeof require == 'function'){ + exports.DocumentType = DocumentType; + exports.DOMException = DOMException; + exports.DOMImplementation = DOMImplementation; + exports.Element = Element; + exports.Node = Node; + exports.NodeList = NodeList; + exports.XMLSerializer = XMLSerializer; +//} -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} +},{"./conventions":9}],12:[function(_dereq_,module,exports){ +'use strict'; -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 +var freeze = _dereq_('./conventions').freeze; - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) - } +/** + * The entities that are predefined in every XML document. + * + * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1 + * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0 + * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML Wikipedia + */ +exports.XML_ENTITIES = freeze({ + amp: '&', + apos: "'", + gt: '>', + lt: '<', + quot: '"', +}); - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1] - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ) - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1] - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ) - } +/** + * A map of all entities that are detected in an HTML document. + * They contain all entries from `XML_ENTITIES`. + * + * @see XML_ENTITIES + * @see DOMParser.parseFromString + * @see DOMImplementation.prototype.createHTMLDocument + * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec + * @see https://html.spec.whatwg.org/entities.json JSON + * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names + * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML + * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML) + * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML) + */ +exports.HTML_ENTITIES = freeze({ + Aacute: '\u00C1', + aacute: '\u00E1', + Abreve: '\u0102', + abreve: '\u0103', + ac: '\u223E', + acd: '\u223F', + acE: '\u223E\u0333', + Acirc: '\u00C2', + acirc: '\u00E2', + acute: '\u00B4', + Acy: '\u0410', + acy: '\u0430', + AElig: '\u00C6', + aelig: '\u00E6', + af: '\u2061', + Afr: '\uD835\uDD04', + afr: '\uD835\uDD1E', + Agrave: '\u00C0', + agrave: '\u00E0', + alefsym: '\u2135', + aleph: '\u2135', + Alpha: '\u0391', + alpha: '\u03B1', + Amacr: '\u0100', + amacr: '\u0101', + amalg: '\u2A3F', + AMP: '\u0026', + amp: '\u0026', + And: '\u2A53', + and: '\u2227', + andand: '\u2A55', + andd: '\u2A5C', + andslope: '\u2A58', + andv: '\u2A5A', + ang: '\u2220', + ange: '\u29A4', + angle: '\u2220', + angmsd: '\u2221', + angmsdaa: '\u29A8', + angmsdab: '\u29A9', + angmsdac: '\u29AA', + angmsdad: '\u29AB', + angmsdae: '\u29AC', + angmsdaf: '\u29AD', + angmsdag: '\u29AE', + angmsdah: '\u29AF', + angrt: '\u221F', + angrtvb: '\u22BE', + angrtvbd: '\u299D', + angsph: '\u2222', + angst: '\u00C5', + angzarr: '\u237C', + Aogon: '\u0104', + aogon: '\u0105', + Aopf: '\uD835\uDD38', + aopf: '\uD835\uDD52', + ap: '\u2248', + apacir: '\u2A6F', + apE: '\u2A70', + ape: '\u224A', + apid: '\u224B', + apos: '\u0027', + ApplyFunction: '\u2061', + approx: '\u2248', + approxeq: '\u224A', + Aring: '\u00C5', + aring: '\u00E5', + Ascr: '\uD835\uDC9C', + ascr: '\uD835\uDCB6', + Assign: '\u2254', + ast: '\u002A', + asymp: '\u2248', + asympeq: '\u224D', + Atilde: '\u00C3', + atilde: '\u00E3', + Auml: '\u00C4', + auml: '\u00E4', + awconint: '\u2233', + awint: '\u2A11', + backcong: '\u224C', + backepsilon: '\u03F6', + backprime: '\u2035', + backsim: '\u223D', + backsimeq: '\u22CD', + Backslash: '\u2216', + Barv: '\u2AE7', + barvee: '\u22BD', + Barwed: '\u2306', + barwed: '\u2305', + barwedge: '\u2305', + bbrk: '\u23B5', + bbrktbrk: '\u23B6', + bcong: '\u224C', + Bcy: '\u0411', + bcy: '\u0431', + bdquo: '\u201E', + becaus: '\u2235', + Because: '\u2235', + because: '\u2235', + bemptyv: '\u29B0', + bepsi: '\u03F6', + bernou: '\u212C', + Bernoullis: '\u212C', + Beta: '\u0392', + beta: '\u03B2', + beth: '\u2136', + between: '\u226C', + Bfr: '\uD835\uDD05', + bfr: '\uD835\uDD1F', + bigcap: '\u22C2', + bigcirc: '\u25EF', + bigcup: '\u22C3', + bigodot: '\u2A00', + bigoplus: '\u2A01', + bigotimes: '\u2A02', + bigsqcup: '\u2A06', + bigstar: '\u2605', + bigtriangledown: '\u25BD', + bigtriangleup: '\u25B3', + biguplus: '\u2A04', + bigvee: '\u22C1', + bigwedge: '\u22C0', + bkarow: '\u290D', + blacklozenge: '\u29EB', + blacksquare: '\u25AA', + blacktriangle: '\u25B4', + blacktriangledown: '\u25BE', + blacktriangleleft: '\u25C2', + blacktriangleright: '\u25B8', + blank: '\u2423', + blk12: '\u2592', + blk14: '\u2591', + blk34: '\u2593', + block: '\u2588', + bne: '\u003D\u20E5', + bnequiv: '\u2261\u20E5', + bNot: '\u2AED', + bnot: '\u2310', + Bopf: '\uD835\uDD39', + bopf: '\uD835\uDD53', + bot: '\u22A5', + bottom: '\u22A5', + bowtie: '\u22C8', + boxbox: '\u29C9', + boxDL: '\u2557', + boxDl: '\u2556', + boxdL: '\u2555', + boxdl: '\u2510', + boxDR: '\u2554', + boxDr: '\u2553', + boxdR: '\u2552', + boxdr: '\u250C', + boxH: '\u2550', + boxh: '\u2500', + boxHD: '\u2566', + boxHd: '\u2564', + boxhD: '\u2565', + boxhd: '\u252C', + boxHU: '\u2569', + boxHu: '\u2567', + boxhU: '\u2568', + boxhu: '\u2534', + boxminus: '\u229F', + boxplus: '\u229E', + boxtimes: '\u22A0', + boxUL: '\u255D', + boxUl: '\u255C', + boxuL: '\u255B', + boxul: '\u2518', + boxUR: '\u255A', + boxUr: '\u2559', + boxuR: '\u2558', + boxur: '\u2514', + boxV: '\u2551', + boxv: '\u2502', + boxVH: '\u256C', + boxVh: '\u256B', + boxvH: '\u256A', + boxvh: '\u253C', + boxVL: '\u2563', + boxVl: '\u2562', + boxvL: '\u2561', + boxvl: '\u2524', + boxVR: '\u2560', + boxVr: '\u255F', + boxvR: '\u255E', + boxvr: '\u251C', + bprime: '\u2035', + Breve: '\u02D8', + breve: '\u02D8', + brvbar: '\u00A6', + Bscr: '\u212C', + bscr: '\uD835\uDCB7', + bsemi: '\u204F', + bsim: '\u223D', + bsime: '\u22CD', + bsol: '\u005C', + bsolb: '\u29C5', + bsolhsub: '\u27C8', + bull: '\u2022', + bullet: '\u2022', + bump: '\u224E', + bumpE: '\u2AAE', + bumpe: '\u224F', + Bumpeq: '\u224E', + bumpeq: '\u224F', + Cacute: '\u0106', + cacute: '\u0107', + Cap: '\u22D2', + cap: '\u2229', + capand: '\u2A44', + capbrcup: '\u2A49', + capcap: '\u2A4B', + capcup: '\u2A47', + capdot: '\u2A40', + CapitalDifferentialD: '\u2145', + caps: '\u2229\uFE00', + caret: '\u2041', + caron: '\u02C7', + Cayleys: '\u212D', + ccaps: '\u2A4D', + Ccaron: '\u010C', + ccaron: '\u010D', + Ccedil: '\u00C7', + ccedil: '\u00E7', + Ccirc: '\u0108', + ccirc: '\u0109', + Cconint: '\u2230', + ccups: '\u2A4C', + ccupssm: '\u2A50', + Cdot: '\u010A', + cdot: '\u010B', + cedil: '\u00B8', + Cedilla: '\u00B8', + cemptyv: '\u29B2', + cent: '\u00A2', + CenterDot: '\u00B7', + centerdot: '\u00B7', + Cfr: '\u212D', + cfr: '\uD835\uDD20', + CHcy: '\u0427', + chcy: '\u0447', + check: '\u2713', + checkmark: '\u2713', + Chi: '\u03A7', + chi: '\u03C7', + cir: '\u25CB', + circ: '\u02C6', + circeq: '\u2257', + circlearrowleft: '\u21BA', + circlearrowright: '\u21BB', + circledast: '\u229B', + circledcirc: '\u229A', + circleddash: '\u229D', + CircleDot: '\u2299', + circledR: '\u00AE', + circledS: '\u24C8', + CircleMinus: '\u2296', + CirclePlus: '\u2295', + CircleTimes: '\u2297', + cirE: '\u29C3', + cire: '\u2257', + cirfnint: '\u2A10', + cirmid: '\u2AEF', + cirscir: '\u29C2', + ClockwiseContourIntegral: '\u2232', + CloseCurlyDoubleQuote: '\u201D', + CloseCurlyQuote: '\u2019', + clubs: '\u2663', + clubsuit: '\u2663', + Colon: '\u2237', + colon: '\u003A', + Colone: '\u2A74', + colone: '\u2254', + coloneq: '\u2254', + comma: '\u002C', + commat: '\u0040', + comp: '\u2201', + compfn: '\u2218', + complement: '\u2201', + complexes: '\u2102', + cong: '\u2245', + congdot: '\u2A6D', + Congruent: '\u2261', + Conint: '\u222F', + conint: '\u222E', + ContourIntegral: '\u222E', + Copf: '\u2102', + copf: '\uD835\uDD54', + coprod: '\u2210', + Coproduct: '\u2210', + COPY: '\u00A9', + copy: '\u00A9', + copysr: '\u2117', + CounterClockwiseContourIntegral: '\u2233', + crarr: '\u21B5', + Cross: '\u2A2F', + cross: '\u2717', + Cscr: '\uD835\uDC9E', + cscr: '\uD835\uDCB8', + csub: '\u2ACF', + csube: '\u2AD1', + csup: '\u2AD0', + csupe: '\u2AD2', + ctdot: '\u22EF', + cudarrl: '\u2938', + cudarrr: '\u2935', + cuepr: '\u22DE', + cuesc: '\u22DF', + cularr: '\u21B6', + cularrp: '\u293D', + Cup: '\u22D3', + cup: '\u222A', + cupbrcap: '\u2A48', + CupCap: '\u224D', + cupcap: '\u2A46', + cupcup: '\u2A4A', + cupdot: '\u228D', + cupor: '\u2A45', + cups: '\u222A\uFE00', + curarr: '\u21B7', + curarrm: '\u293C', + curlyeqprec: '\u22DE', + curlyeqsucc: '\u22DF', + curlyvee: '\u22CE', + curlywedge: '\u22CF', + curren: '\u00A4', + curvearrowleft: '\u21B6', + curvearrowright: '\u21B7', + cuvee: '\u22CE', + cuwed: '\u22CF', + cwconint: '\u2232', + cwint: '\u2231', + cylcty: '\u232D', + Dagger: '\u2021', + dagger: '\u2020', + daleth: '\u2138', + Darr: '\u21A1', + dArr: '\u21D3', + darr: '\u2193', + dash: '\u2010', + Dashv: '\u2AE4', + dashv: '\u22A3', + dbkarow: '\u290F', + dblac: '\u02DD', + Dcaron: '\u010E', + dcaron: '\u010F', + Dcy: '\u0414', + dcy: '\u0434', + DD: '\u2145', + dd: '\u2146', + ddagger: '\u2021', + ddarr: '\u21CA', + DDotrahd: '\u2911', + ddotseq: '\u2A77', + deg: '\u00B0', + Del: '\u2207', + Delta: '\u0394', + delta: '\u03B4', + demptyv: '\u29B1', + dfisht: '\u297F', + Dfr: '\uD835\uDD07', + dfr: '\uD835\uDD21', + dHar: '\u2965', + dharl: '\u21C3', + dharr: '\u21C2', + DiacriticalAcute: '\u00B4', + DiacriticalDot: '\u02D9', + DiacriticalDoubleAcute: '\u02DD', + DiacriticalGrave: '\u0060', + DiacriticalTilde: '\u02DC', + diam: '\u22C4', + Diamond: '\u22C4', + diamond: '\u22C4', + diamondsuit: '\u2666', + diams: '\u2666', + die: '\u00A8', + DifferentialD: '\u2146', + digamma: '\u03DD', + disin: '\u22F2', + div: '\u00F7', + divide: '\u00F7', + divideontimes: '\u22C7', + divonx: '\u22C7', + DJcy: '\u0402', + djcy: '\u0452', + dlcorn: '\u231E', + dlcrop: '\u230D', + dollar: '\u0024', + Dopf: '\uD835\uDD3B', + dopf: '\uD835\uDD55', + Dot: '\u00A8', + dot: '\u02D9', + DotDot: '\u20DC', + doteq: '\u2250', + doteqdot: '\u2251', + DotEqual: '\u2250', + dotminus: '\u2238', + dotplus: '\u2214', + dotsquare: '\u22A1', + doublebarwedge: '\u2306', + DoubleContourIntegral: '\u222F', + DoubleDot: '\u00A8', + DoubleDownArrow: '\u21D3', + DoubleLeftArrow: '\u21D0', + DoubleLeftRightArrow: '\u21D4', + DoubleLeftTee: '\u2AE4', + DoubleLongLeftArrow: '\u27F8', + DoubleLongLeftRightArrow: '\u27FA', + DoubleLongRightArrow: '\u27F9', + DoubleRightArrow: '\u21D2', + DoubleRightTee: '\u22A8', + DoubleUpArrow: '\u21D1', + DoubleUpDownArrow: '\u21D5', + DoubleVerticalBar: '\u2225', + DownArrow: '\u2193', + Downarrow: '\u21D3', + downarrow: '\u2193', + DownArrowBar: '\u2913', + DownArrowUpArrow: '\u21F5', + DownBreve: '\u0311', + downdownarrows: '\u21CA', + downharpoonleft: '\u21C3', + downharpoonright: '\u21C2', + DownLeftRightVector: '\u2950', + DownLeftTeeVector: '\u295E', + DownLeftVector: '\u21BD', + DownLeftVectorBar: '\u2956', + DownRightTeeVector: '\u295F', + DownRightVector: '\u21C1', + DownRightVectorBar: '\u2957', + DownTee: '\u22A4', + DownTeeArrow: '\u21A7', + drbkarow: '\u2910', + drcorn: '\u231F', + drcrop: '\u230C', + Dscr: '\uD835\uDC9F', + dscr: '\uD835\uDCB9', + DScy: '\u0405', + dscy: '\u0455', + dsol: '\u29F6', + Dstrok: '\u0110', + dstrok: '\u0111', + dtdot: '\u22F1', + dtri: '\u25BF', + dtrif: '\u25BE', + duarr: '\u21F5', + duhar: '\u296F', + dwangle: '\u29A6', + DZcy: '\u040F', + dzcy: '\u045F', + dzigrarr: '\u27FF', + Eacute: '\u00C9', + eacute: '\u00E9', + easter: '\u2A6E', + Ecaron: '\u011A', + ecaron: '\u011B', + ecir: '\u2256', + Ecirc: '\u00CA', + ecirc: '\u00EA', + ecolon: '\u2255', + Ecy: '\u042D', + ecy: '\u044D', + eDDot: '\u2A77', + Edot: '\u0116', + eDot: '\u2251', + edot: '\u0117', + ee: '\u2147', + efDot: '\u2252', + Efr: '\uD835\uDD08', + efr: '\uD835\uDD22', + eg: '\u2A9A', + Egrave: '\u00C8', + egrave: '\u00E8', + egs: '\u2A96', + egsdot: '\u2A98', + el: '\u2A99', + Element: '\u2208', + elinters: '\u23E7', + ell: '\u2113', + els: '\u2A95', + elsdot: '\u2A97', + Emacr: '\u0112', + emacr: '\u0113', + empty: '\u2205', + emptyset: '\u2205', + EmptySmallSquare: '\u25FB', + emptyv: '\u2205', + EmptyVerySmallSquare: '\u25AB', + emsp: '\u2003', + emsp13: '\u2004', + emsp14: '\u2005', + ENG: '\u014A', + eng: '\u014B', + ensp: '\u2002', + Eogon: '\u0118', + eogon: '\u0119', + Eopf: '\uD835\uDD3C', + eopf: '\uD835\uDD56', + epar: '\u22D5', + eparsl: '\u29E3', + eplus: '\u2A71', + epsi: '\u03B5', + Epsilon: '\u0395', + epsilon: '\u03B5', + epsiv: '\u03F5', + eqcirc: '\u2256', + eqcolon: '\u2255', + eqsim: '\u2242', + eqslantgtr: '\u2A96', + eqslantless: '\u2A95', + Equal: '\u2A75', + equals: '\u003D', + EqualTilde: '\u2242', + equest: '\u225F', + Equilibrium: '\u21CC', + equiv: '\u2261', + equivDD: '\u2A78', + eqvparsl: '\u29E5', + erarr: '\u2971', + erDot: '\u2253', + Escr: '\u2130', + escr: '\u212F', + esdot: '\u2250', + Esim: '\u2A73', + esim: '\u2242', + Eta: '\u0397', + eta: '\u03B7', + ETH: '\u00D0', + eth: '\u00F0', + Euml: '\u00CB', + euml: '\u00EB', + euro: '\u20AC', + excl: '\u0021', + exist: '\u2203', + Exists: '\u2203', + expectation: '\u2130', + ExponentialE: '\u2147', + exponentiale: '\u2147', + fallingdotseq: '\u2252', + Fcy: '\u0424', + fcy: '\u0444', + female: '\u2640', + ffilig: '\uFB03', + fflig: '\uFB00', + ffllig: '\uFB04', + Ffr: '\uD835\uDD09', + ffr: '\uD835\uDD23', + filig: '\uFB01', + FilledSmallSquare: '\u25FC', + FilledVerySmallSquare: '\u25AA', + fjlig: '\u0066\u006A', + flat: '\u266D', + fllig: '\uFB02', + fltns: '\u25B1', + fnof: '\u0192', + Fopf: '\uD835\uDD3D', + fopf: '\uD835\uDD57', + ForAll: '\u2200', + forall: '\u2200', + fork: '\u22D4', + forkv: '\u2AD9', + Fouriertrf: '\u2131', + fpartint: '\u2A0D', + frac12: '\u00BD', + frac13: '\u2153', + frac14: '\u00BC', + frac15: '\u2155', + frac16: '\u2159', + frac18: '\u215B', + frac23: '\u2154', + frac25: '\u2156', + frac34: '\u00BE', + frac35: '\u2157', + frac38: '\u215C', + frac45: '\u2158', + frac56: '\u215A', + frac58: '\u215D', + frac78: '\u215E', + frasl: '\u2044', + frown: '\u2322', + Fscr: '\u2131', + fscr: '\uD835\uDCBB', + gacute: '\u01F5', + Gamma: '\u0393', + gamma: '\u03B3', + Gammad: '\u03DC', + gammad: '\u03DD', + gap: '\u2A86', + Gbreve: '\u011E', + gbreve: '\u011F', + Gcedil: '\u0122', + Gcirc: '\u011C', + gcirc: '\u011D', + Gcy: '\u0413', + gcy: '\u0433', + Gdot: '\u0120', + gdot: '\u0121', + gE: '\u2267', + ge: '\u2265', + gEl: '\u2A8C', + gel: '\u22DB', + geq: '\u2265', + geqq: '\u2267', + geqslant: '\u2A7E', + ges: '\u2A7E', + gescc: '\u2AA9', + gesdot: '\u2A80', + gesdoto: '\u2A82', + gesdotol: '\u2A84', + gesl: '\u22DB\uFE00', + gesles: '\u2A94', + Gfr: '\uD835\uDD0A', + gfr: '\uD835\uDD24', + Gg: '\u22D9', + gg: '\u226B', + ggg: '\u22D9', + gimel: '\u2137', + GJcy: '\u0403', + gjcy: '\u0453', + gl: '\u2277', + gla: '\u2AA5', + glE: '\u2A92', + glj: '\u2AA4', + gnap: '\u2A8A', + gnapprox: '\u2A8A', + gnE: '\u2269', + gne: '\u2A88', + gneq: '\u2A88', + gneqq: '\u2269', + gnsim: '\u22E7', + Gopf: '\uD835\uDD3E', + gopf: '\uD835\uDD58', + grave: '\u0060', + GreaterEqual: '\u2265', + GreaterEqualLess: '\u22DB', + GreaterFullEqual: '\u2267', + GreaterGreater: '\u2AA2', + GreaterLess: '\u2277', + GreaterSlantEqual: '\u2A7E', + GreaterTilde: '\u2273', + Gscr: '\uD835\uDCA2', + gscr: '\u210A', + gsim: '\u2273', + gsime: '\u2A8E', + gsiml: '\u2A90', + Gt: '\u226B', + GT: '\u003E', + gt: '\u003E', + gtcc: '\u2AA7', + gtcir: '\u2A7A', + gtdot: '\u22D7', + gtlPar: '\u2995', + gtquest: '\u2A7C', + gtrapprox: '\u2A86', + gtrarr: '\u2978', + gtrdot: '\u22D7', + gtreqless: '\u22DB', + gtreqqless: '\u2A8C', + gtrless: '\u2277', + gtrsim: '\u2273', + gvertneqq: '\u2269\uFE00', + gvnE: '\u2269\uFE00', + Hacek: '\u02C7', + hairsp: '\u200A', + half: '\u00BD', + hamilt: '\u210B', + HARDcy: '\u042A', + hardcy: '\u044A', + hArr: '\u21D4', + harr: '\u2194', + harrcir: '\u2948', + harrw: '\u21AD', + Hat: '\u005E', + hbar: '\u210F', + Hcirc: '\u0124', + hcirc: '\u0125', + hearts: '\u2665', + heartsuit: '\u2665', + hellip: '\u2026', + hercon: '\u22B9', + Hfr: '\u210C', + hfr: '\uD835\uDD25', + HilbertSpace: '\u210B', + hksearow: '\u2925', + hkswarow: '\u2926', + hoarr: '\u21FF', + homtht: '\u223B', + hookleftarrow: '\u21A9', + hookrightarrow: '\u21AA', + Hopf: '\u210D', + hopf: '\uD835\uDD59', + horbar: '\u2015', + HorizontalLine: '\u2500', + Hscr: '\u210B', + hscr: '\uD835\uDCBD', + hslash: '\u210F', + Hstrok: '\u0126', + hstrok: '\u0127', + HumpDownHump: '\u224E', + HumpEqual: '\u224F', + hybull: '\u2043', + hyphen: '\u2010', + Iacute: '\u00CD', + iacute: '\u00ED', + ic: '\u2063', + Icirc: '\u00CE', + icirc: '\u00EE', + Icy: '\u0418', + icy: '\u0438', + Idot: '\u0130', + IEcy: '\u0415', + iecy: '\u0435', + iexcl: '\u00A1', + iff: '\u21D4', + Ifr: '\u2111', + ifr: '\uD835\uDD26', + Igrave: '\u00CC', + igrave: '\u00EC', + ii: '\u2148', + iiiint: '\u2A0C', + iiint: '\u222D', + iinfin: '\u29DC', + iiota: '\u2129', + IJlig: '\u0132', + ijlig: '\u0133', + Im: '\u2111', + Imacr: '\u012A', + imacr: '\u012B', + image: '\u2111', + ImaginaryI: '\u2148', + imagline: '\u2110', + imagpart: '\u2111', + imath: '\u0131', + imof: '\u22B7', + imped: '\u01B5', + Implies: '\u21D2', + in: '\u2208', + incare: '\u2105', + infin: '\u221E', + infintie: '\u29DD', + inodot: '\u0131', + Int: '\u222C', + int: '\u222B', + intcal: '\u22BA', + integers: '\u2124', + Integral: '\u222B', + intercal: '\u22BA', + Intersection: '\u22C2', + intlarhk: '\u2A17', + intprod: '\u2A3C', + InvisibleComma: '\u2063', + InvisibleTimes: '\u2062', + IOcy: '\u0401', + iocy: '\u0451', + Iogon: '\u012E', + iogon: '\u012F', + Iopf: '\uD835\uDD40', + iopf: '\uD835\uDD5A', + Iota: '\u0399', + iota: '\u03B9', + iprod: '\u2A3C', + iquest: '\u00BF', + Iscr: '\u2110', + iscr: '\uD835\uDCBE', + isin: '\u2208', + isindot: '\u22F5', + isinE: '\u22F9', + isins: '\u22F4', + isinsv: '\u22F3', + isinv: '\u2208', + it: '\u2062', + Itilde: '\u0128', + itilde: '\u0129', + Iukcy: '\u0406', + iukcy: '\u0456', + Iuml: '\u00CF', + iuml: '\u00EF', + Jcirc: '\u0134', + jcirc: '\u0135', + Jcy: '\u0419', + jcy: '\u0439', + Jfr: '\uD835\uDD0D', + jfr: '\uD835\uDD27', + jmath: '\u0237', + Jopf: '\uD835\uDD41', + jopf: '\uD835\uDD5B', + Jscr: '\uD835\uDCA5', + jscr: '\uD835\uDCBF', + Jsercy: '\u0408', + jsercy: '\u0458', + Jukcy: '\u0404', + jukcy: '\u0454', + Kappa: '\u039A', + kappa: '\u03BA', + kappav: '\u03F0', + Kcedil: '\u0136', + kcedil: '\u0137', + Kcy: '\u041A', + kcy: '\u043A', + Kfr: '\uD835\uDD0E', + kfr: '\uD835\uDD28', + kgreen: '\u0138', + KHcy: '\u0425', + khcy: '\u0445', + KJcy: '\u040C', + kjcy: '\u045C', + Kopf: '\uD835\uDD42', + kopf: '\uD835\uDD5C', + Kscr: '\uD835\uDCA6', + kscr: '\uD835\uDCC0', + lAarr: '\u21DA', + Lacute: '\u0139', + lacute: '\u013A', + laemptyv: '\u29B4', + lagran: '\u2112', + Lambda: '\u039B', + lambda: '\u03BB', + Lang: '\u27EA', + lang: '\u27E8', + langd: '\u2991', + langle: '\u27E8', + lap: '\u2A85', + Laplacetrf: '\u2112', + laquo: '\u00AB', + Larr: '\u219E', + lArr: '\u21D0', + larr: '\u2190', + larrb: '\u21E4', + larrbfs: '\u291F', + larrfs: '\u291D', + larrhk: '\u21A9', + larrlp: '\u21AB', + larrpl: '\u2939', + larrsim: '\u2973', + larrtl: '\u21A2', + lat: '\u2AAB', + lAtail: '\u291B', + latail: '\u2919', + late: '\u2AAD', + lates: '\u2AAD\uFE00', + lBarr: '\u290E', + lbarr: '\u290C', + lbbrk: '\u2772', + lbrace: '\u007B', + lbrack: '\u005B', + lbrke: '\u298B', + lbrksld: '\u298F', + lbrkslu: '\u298D', + Lcaron: '\u013D', + lcaron: '\u013E', + Lcedil: '\u013B', + lcedil: '\u013C', + lceil: '\u2308', + lcub: '\u007B', + Lcy: '\u041B', + lcy: '\u043B', + ldca: '\u2936', + ldquo: '\u201C', + ldquor: '\u201E', + ldrdhar: '\u2967', + ldrushar: '\u294B', + ldsh: '\u21B2', + lE: '\u2266', + le: '\u2264', + LeftAngleBracket: '\u27E8', + LeftArrow: '\u2190', + Leftarrow: '\u21D0', + leftarrow: '\u2190', + LeftArrowBar: '\u21E4', + LeftArrowRightArrow: '\u21C6', + leftarrowtail: '\u21A2', + LeftCeiling: '\u2308', + LeftDoubleBracket: '\u27E6', + LeftDownTeeVector: '\u2961', + LeftDownVector: '\u21C3', + LeftDownVectorBar: '\u2959', + LeftFloor: '\u230A', + leftharpoondown: '\u21BD', + leftharpoonup: '\u21BC', + leftleftarrows: '\u21C7', + LeftRightArrow: '\u2194', + Leftrightarrow: '\u21D4', + leftrightarrow: '\u2194', + leftrightarrows: '\u21C6', + leftrightharpoons: '\u21CB', + leftrightsquigarrow: '\u21AD', + LeftRightVector: '\u294E', + LeftTee: '\u22A3', + LeftTeeArrow: '\u21A4', + LeftTeeVector: '\u295A', + leftthreetimes: '\u22CB', + LeftTriangle: '\u22B2', + LeftTriangleBar: '\u29CF', + LeftTriangleEqual: '\u22B4', + LeftUpDownVector: '\u2951', + LeftUpTeeVector: '\u2960', + LeftUpVector: '\u21BF', + LeftUpVectorBar: '\u2958', + LeftVector: '\u21BC', + LeftVectorBar: '\u2952', + lEg: '\u2A8B', + leg: '\u22DA', + leq: '\u2264', + leqq: '\u2266', + leqslant: '\u2A7D', + les: '\u2A7D', + lescc: '\u2AA8', + lesdot: '\u2A7F', + lesdoto: '\u2A81', + lesdotor: '\u2A83', + lesg: '\u22DA\uFE00', + lesges: '\u2A93', + lessapprox: '\u2A85', + lessdot: '\u22D6', + lesseqgtr: '\u22DA', + lesseqqgtr: '\u2A8B', + LessEqualGreater: '\u22DA', + LessFullEqual: '\u2266', + LessGreater: '\u2276', + lessgtr: '\u2276', + LessLess: '\u2AA1', + lesssim: '\u2272', + LessSlantEqual: '\u2A7D', + LessTilde: '\u2272', + lfisht: '\u297C', + lfloor: '\u230A', + Lfr: '\uD835\uDD0F', + lfr: '\uD835\uDD29', + lg: '\u2276', + lgE: '\u2A91', + lHar: '\u2962', + lhard: '\u21BD', + lharu: '\u21BC', + lharul: '\u296A', + lhblk: '\u2584', + LJcy: '\u0409', + ljcy: '\u0459', + Ll: '\u22D8', + ll: '\u226A', + llarr: '\u21C7', + llcorner: '\u231E', + Lleftarrow: '\u21DA', + llhard: '\u296B', + lltri: '\u25FA', + Lmidot: '\u013F', + lmidot: '\u0140', + lmoust: '\u23B0', + lmoustache: '\u23B0', + lnap: '\u2A89', + lnapprox: '\u2A89', + lnE: '\u2268', + lne: '\u2A87', + lneq: '\u2A87', + lneqq: '\u2268', + lnsim: '\u22E6', + loang: '\u27EC', + loarr: '\u21FD', + lobrk: '\u27E6', + LongLeftArrow: '\u27F5', + Longleftarrow: '\u27F8', + longleftarrow: '\u27F5', + LongLeftRightArrow: '\u27F7', + Longleftrightarrow: '\u27FA', + longleftrightarrow: '\u27F7', + longmapsto: '\u27FC', + LongRightArrow: '\u27F6', + Longrightarrow: '\u27F9', + longrightarrow: '\u27F6', + looparrowleft: '\u21AB', + looparrowright: '\u21AC', + lopar: '\u2985', + Lopf: '\uD835\uDD43', + lopf: '\uD835\uDD5D', + loplus: '\u2A2D', + lotimes: '\u2A34', + lowast: '\u2217', + lowbar: '\u005F', + LowerLeftArrow: '\u2199', + LowerRightArrow: '\u2198', + loz: '\u25CA', + lozenge: '\u25CA', + lozf: '\u29EB', + lpar: '\u0028', + lparlt: '\u2993', + lrarr: '\u21C6', + lrcorner: '\u231F', + lrhar: '\u21CB', + lrhard: '\u296D', + lrm: '\u200E', + lrtri: '\u22BF', + lsaquo: '\u2039', + Lscr: '\u2112', + lscr: '\uD835\uDCC1', + Lsh: '\u21B0', + lsh: '\u21B0', + lsim: '\u2272', + lsime: '\u2A8D', + lsimg: '\u2A8F', + lsqb: '\u005B', + lsquo: '\u2018', + lsquor: '\u201A', + Lstrok: '\u0141', + lstrok: '\u0142', + Lt: '\u226A', + LT: '\u003C', + lt: '\u003C', + ltcc: '\u2AA6', + ltcir: '\u2A79', + ltdot: '\u22D6', + lthree: '\u22CB', + ltimes: '\u22C9', + ltlarr: '\u2976', + ltquest: '\u2A7B', + ltri: '\u25C3', + ltrie: '\u22B4', + ltrif: '\u25C2', + ltrPar: '\u2996', + lurdshar: '\u294A', + luruhar: '\u2966', + lvertneqq: '\u2268\uFE00', + lvnE: '\u2268\uFE00', + macr: '\u00AF', + male: '\u2642', + malt: '\u2720', + maltese: '\u2720', + Map: '\u2905', + map: '\u21A6', + mapsto: '\u21A6', + mapstodown: '\u21A7', + mapstoleft: '\u21A4', + mapstoup: '\u21A5', + marker: '\u25AE', + mcomma: '\u2A29', + Mcy: '\u041C', + mcy: '\u043C', + mdash: '\u2014', + mDDot: '\u223A', + measuredangle: '\u2221', + MediumSpace: '\u205F', + Mellintrf: '\u2133', + Mfr: '\uD835\uDD10', + mfr: '\uD835\uDD2A', + mho: '\u2127', + micro: '\u00B5', + mid: '\u2223', + midast: '\u002A', + midcir: '\u2AF0', + middot: '\u00B7', + minus: '\u2212', + minusb: '\u229F', + minusd: '\u2238', + minusdu: '\u2A2A', + MinusPlus: '\u2213', + mlcp: '\u2ADB', + mldr: '\u2026', + mnplus: '\u2213', + models: '\u22A7', + Mopf: '\uD835\uDD44', + mopf: '\uD835\uDD5E', + mp: '\u2213', + Mscr: '\u2133', + mscr: '\uD835\uDCC2', + mstpos: '\u223E', + Mu: '\u039C', + mu: '\u03BC', + multimap: '\u22B8', + mumap: '\u22B8', + nabla: '\u2207', + Nacute: '\u0143', + nacute: '\u0144', + nang: '\u2220\u20D2', + nap: '\u2249', + napE: '\u2A70\u0338', + napid: '\u224B\u0338', + napos: '\u0149', + napprox: '\u2249', + natur: '\u266E', + natural: '\u266E', + naturals: '\u2115', + nbsp: '\u00A0', + nbump: '\u224E\u0338', + nbumpe: '\u224F\u0338', + ncap: '\u2A43', + Ncaron: '\u0147', + ncaron: '\u0148', + Ncedil: '\u0145', + ncedil: '\u0146', + ncong: '\u2247', + ncongdot: '\u2A6D\u0338', + ncup: '\u2A42', + Ncy: '\u041D', + ncy: '\u043D', + ndash: '\u2013', + ne: '\u2260', + nearhk: '\u2924', + neArr: '\u21D7', + nearr: '\u2197', + nearrow: '\u2197', + nedot: '\u2250\u0338', + NegativeMediumSpace: '\u200B', + NegativeThickSpace: '\u200B', + NegativeThinSpace: '\u200B', + NegativeVeryThinSpace: '\u200B', + nequiv: '\u2262', + nesear: '\u2928', + nesim: '\u2242\u0338', + NestedGreaterGreater: '\u226B', + NestedLessLess: '\u226A', + NewLine: '\u000A', + nexist: '\u2204', + nexists: '\u2204', + Nfr: '\uD835\uDD11', + nfr: '\uD835\uDD2B', + ngE: '\u2267\u0338', + nge: '\u2271', + ngeq: '\u2271', + ngeqq: '\u2267\u0338', + ngeqslant: '\u2A7E\u0338', + nges: '\u2A7E\u0338', + nGg: '\u22D9\u0338', + ngsim: '\u2275', + nGt: '\u226B\u20D2', + ngt: '\u226F', + ngtr: '\u226F', + nGtv: '\u226B\u0338', + nhArr: '\u21CE', + nharr: '\u21AE', + nhpar: '\u2AF2', + ni: '\u220B', + nis: '\u22FC', + nisd: '\u22FA', + niv: '\u220B', + NJcy: '\u040A', + njcy: '\u045A', + nlArr: '\u21CD', + nlarr: '\u219A', + nldr: '\u2025', + nlE: '\u2266\u0338', + nle: '\u2270', + nLeftarrow: '\u21CD', + nleftarrow: '\u219A', + nLeftrightarrow: '\u21CE', + nleftrightarrow: '\u21AE', + nleq: '\u2270', + nleqq: '\u2266\u0338', + nleqslant: '\u2A7D\u0338', + nles: '\u2A7D\u0338', + nless: '\u226E', + nLl: '\u22D8\u0338', + nlsim: '\u2274', + nLt: '\u226A\u20D2', + nlt: '\u226E', + nltri: '\u22EA', + nltrie: '\u22EC', + nLtv: '\u226A\u0338', + nmid: '\u2224', + NoBreak: '\u2060', + NonBreakingSpace: '\u00A0', + Nopf: '\u2115', + nopf: '\uD835\uDD5F', + Not: '\u2AEC', + not: '\u00AC', + NotCongruent: '\u2262', + NotCupCap: '\u226D', + NotDoubleVerticalBar: '\u2226', + NotElement: '\u2209', + NotEqual: '\u2260', + NotEqualTilde: '\u2242\u0338', + NotExists: '\u2204', + NotGreater: '\u226F', + NotGreaterEqual: '\u2271', + NotGreaterFullEqual: '\u2267\u0338', + NotGreaterGreater: '\u226B\u0338', + NotGreaterLess: '\u2279', + NotGreaterSlantEqual: '\u2A7E\u0338', + NotGreaterTilde: '\u2275', + NotHumpDownHump: '\u224E\u0338', + NotHumpEqual: '\u224F\u0338', + notin: '\u2209', + notindot: '\u22F5\u0338', + notinE: '\u22F9\u0338', + notinva: '\u2209', + notinvb: '\u22F7', + notinvc: '\u22F6', + NotLeftTriangle: '\u22EA', + NotLeftTriangleBar: '\u29CF\u0338', + NotLeftTriangleEqual: '\u22EC', + NotLess: '\u226E', + NotLessEqual: '\u2270', + NotLessGreater: '\u2278', + NotLessLess: '\u226A\u0338', + NotLessSlantEqual: '\u2A7D\u0338', + NotLessTilde: '\u2274', + NotNestedGreaterGreater: '\u2AA2\u0338', + NotNestedLessLess: '\u2AA1\u0338', + notni: '\u220C', + notniva: '\u220C', + notnivb: '\u22FE', + notnivc: '\u22FD', + NotPrecedes: '\u2280', + NotPrecedesEqual: '\u2AAF\u0338', + NotPrecedesSlantEqual: '\u22E0', + NotReverseElement: '\u220C', + NotRightTriangle: '\u22EB', + NotRightTriangleBar: '\u29D0\u0338', + NotRightTriangleEqual: '\u22ED', + NotSquareSubset: '\u228F\u0338', + NotSquareSubsetEqual: '\u22E2', + NotSquareSuperset: '\u2290\u0338', + NotSquareSupersetEqual: '\u22E3', + NotSubset: '\u2282\u20D2', + NotSubsetEqual: '\u2288', + NotSucceeds: '\u2281', + NotSucceedsEqual: '\u2AB0\u0338', + NotSucceedsSlantEqual: '\u22E1', + NotSucceedsTilde: '\u227F\u0338', + NotSuperset: '\u2283\u20D2', + NotSupersetEqual: '\u2289', + NotTilde: '\u2241', + NotTildeEqual: '\u2244', + NotTildeFullEqual: '\u2247', + NotTildeTilde: '\u2249', + NotVerticalBar: '\u2224', + npar: '\u2226', + nparallel: '\u2226', + nparsl: '\u2AFD\u20E5', + npart: '\u2202\u0338', + npolint: '\u2A14', + npr: '\u2280', + nprcue: '\u22E0', + npre: '\u2AAF\u0338', + nprec: '\u2280', + npreceq: '\u2AAF\u0338', + nrArr: '\u21CF', + nrarr: '\u219B', + nrarrc: '\u2933\u0338', + nrarrw: '\u219D\u0338', + nRightarrow: '\u21CF', + nrightarrow: '\u219B', + nrtri: '\u22EB', + nrtrie: '\u22ED', + nsc: '\u2281', + nsccue: '\u22E1', + nsce: '\u2AB0\u0338', + Nscr: '\uD835\uDCA9', + nscr: '\uD835\uDCC3', + nshortmid: '\u2224', + nshortparallel: '\u2226', + nsim: '\u2241', + nsime: '\u2244', + nsimeq: '\u2244', + nsmid: '\u2224', + nspar: '\u2226', + nsqsube: '\u22E2', + nsqsupe: '\u22E3', + nsub: '\u2284', + nsubE: '\u2AC5\u0338', + nsube: '\u2288', + nsubset: '\u2282\u20D2', + nsubseteq: '\u2288', + nsubseteqq: '\u2AC5\u0338', + nsucc: '\u2281', + nsucceq: '\u2AB0\u0338', + nsup: '\u2285', + nsupE: '\u2AC6\u0338', + nsupe: '\u2289', + nsupset: '\u2283\u20D2', + nsupseteq: '\u2289', + nsupseteqq: '\u2AC6\u0338', + ntgl: '\u2279', + Ntilde: '\u00D1', + ntilde: '\u00F1', + ntlg: '\u2278', + ntriangleleft: '\u22EA', + ntrianglelefteq: '\u22EC', + ntriangleright: '\u22EB', + ntrianglerighteq: '\u22ED', + Nu: '\u039D', + nu: '\u03BD', + num: '\u0023', + numero: '\u2116', + numsp: '\u2007', + nvap: '\u224D\u20D2', + nVDash: '\u22AF', + nVdash: '\u22AE', + nvDash: '\u22AD', + nvdash: '\u22AC', + nvge: '\u2265\u20D2', + nvgt: '\u003E\u20D2', + nvHarr: '\u2904', + nvinfin: '\u29DE', + nvlArr: '\u2902', + nvle: '\u2264\u20D2', + nvlt: '\u003C\u20D2', + nvltrie: '\u22B4\u20D2', + nvrArr: '\u2903', + nvrtrie: '\u22B5\u20D2', + nvsim: '\u223C\u20D2', + nwarhk: '\u2923', + nwArr: '\u21D6', + nwarr: '\u2196', + nwarrow: '\u2196', + nwnear: '\u2927', + Oacute: '\u00D3', + oacute: '\u00F3', + oast: '\u229B', + ocir: '\u229A', + Ocirc: '\u00D4', + ocirc: '\u00F4', + Ocy: '\u041E', + ocy: '\u043E', + odash: '\u229D', + Odblac: '\u0150', + odblac: '\u0151', + odiv: '\u2A38', + odot: '\u2299', + odsold: '\u29BC', + OElig: '\u0152', + oelig: '\u0153', + ofcir: '\u29BF', + Ofr: '\uD835\uDD12', + ofr: '\uD835\uDD2C', + ogon: '\u02DB', + Ograve: '\u00D2', + ograve: '\u00F2', + ogt: '\u29C1', + ohbar: '\u29B5', + ohm: '\u03A9', + oint: '\u222E', + olarr: '\u21BA', + olcir: '\u29BE', + olcross: '\u29BB', + oline: '\u203E', + olt: '\u29C0', + Omacr: '\u014C', + omacr: '\u014D', + Omega: '\u03A9', + omega: '\u03C9', + Omicron: '\u039F', + omicron: '\u03BF', + omid: '\u29B6', + ominus: '\u2296', + Oopf: '\uD835\uDD46', + oopf: '\uD835\uDD60', + opar: '\u29B7', + OpenCurlyDoubleQuote: '\u201C', + OpenCurlyQuote: '\u2018', + operp: '\u29B9', + oplus: '\u2295', + Or: '\u2A54', + or: '\u2228', + orarr: '\u21BB', + ord: '\u2A5D', + order: '\u2134', + orderof: '\u2134', + ordf: '\u00AA', + ordm: '\u00BA', + origof: '\u22B6', + oror: '\u2A56', + orslope: '\u2A57', + orv: '\u2A5B', + oS: '\u24C8', + Oscr: '\uD835\uDCAA', + oscr: '\u2134', + Oslash: '\u00D8', + oslash: '\u00F8', + osol: '\u2298', + Otilde: '\u00D5', + otilde: '\u00F5', + Otimes: '\u2A37', + otimes: '\u2297', + otimesas: '\u2A36', + Ouml: '\u00D6', + ouml: '\u00F6', + ovbar: '\u233D', + OverBar: '\u203E', + OverBrace: '\u23DE', + OverBracket: '\u23B4', + OverParenthesis: '\u23DC', + par: '\u2225', + para: '\u00B6', + parallel: '\u2225', + parsim: '\u2AF3', + parsl: '\u2AFD', + part: '\u2202', + PartialD: '\u2202', + Pcy: '\u041F', + pcy: '\u043F', + percnt: '\u0025', + period: '\u002E', + permil: '\u2030', + perp: '\u22A5', + pertenk: '\u2031', + Pfr: '\uD835\uDD13', + pfr: '\uD835\uDD2D', + Phi: '\u03A6', + phi: '\u03C6', + phiv: '\u03D5', + phmmat: '\u2133', + phone: '\u260E', + Pi: '\u03A0', + pi: '\u03C0', + pitchfork: '\u22D4', + piv: '\u03D6', + planck: '\u210F', + planckh: '\u210E', + plankv: '\u210F', + plus: '\u002B', + plusacir: '\u2A23', + plusb: '\u229E', + pluscir: '\u2A22', + plusdo: '\u2214', + plusdu: '\u2A25', + pluse: '\u2A72', + PlusMinus: '\u00B1', + plusmn: '\u00B1', + plussim: '\u2A26', + plustwo: '\u2A27', + pm: '\u00B1', + Poincareplane: '\u210C', + pointint: '\u2A15', + Popf: '\u2119', + popf: '\uD835\uDD61', + pound: '\u00A3', + Pr: '\u2ABB', + pr: '\u227A', + prap: '\u2AB7', + prcue: '\u227C', + prE: '\u2AB3', + pre: '\u2AAF', + prec: '\u227A', + precapprox: '\u2AB7', + preccurlyeq: '\u227C', + Precedes: '\u227A', + PrecedesEqual: '\u2AAF', + PrecedesSlantEqual: '\u227C', + PrecedesTilde: '\u227E', + preceq: '\u2AAF', + precnapprox: '\u2AB9', + precneqq: '\u2AB5', + precnsim: '\u22E8', + precsim: '\u227E', + Prime: '\u2033', + prime: '\u2032', + primes: '\u2119', + prnap: '\u2AB9', + prnE: '\u2AB5', + prnsim: '\u22E8', + prod: '\u220F', + Product: '\u220F', + profalar: '\u232E', + profline: '\u2312', + profsurf: '\u2313', + prop: '\u221D', + Proportion: '\u2237', + Proportional: '\u221D', + propto: '\u221D', + prsim: '\u227E', + prurel: '\u22B0', + Pscr: '\uD835\uDCAB', + pscr: '\uD835\uDCC5', + Psi: '\u03A8', + psi: '\u03C8', + puncsp: '\u2008', + Qfr: '\uD835\uDD14', + qfr: '\uD835\uDD2E', + qint: '\u2A0C', + Qopf: '\u211A', + qopf: '\uD835\uDD62', + qprime: '\u2057', + Qscr: '\uD835\uDCAC', + qscr: '\uD835\uDCC6', + quaternions: '\u210D', + quatint: '\u2A16', + quest: '\u003F', + questeq: '\u225F', + QUOT: '\u0022', + quot: '\u0022', + rAarr: '\u21DB', + race: '\u223D\u0331', + Racute: '\u0154', + racute: '\u0155', + radic: '\u221A', + raemptyv: '\u29B3', + Rang: '\u27EB', + rang: '\u27E9', + rangd: '\u2992', + range: '\u29A5', + rangle: '\u27E9', + raquo: '\u00BB', + Rarr: '\u21A0', + rArr: '\u21D2', + rarr: '\u2192', + rarrap: '\u2975', + rarrb: '\u21E5', + rarrbfs: '\u2920', + rarrc: '\u2933', + rarrfs: '\u291E', + rarrhk: '\u21AA', + rarrlp: '\u21AC', + rarrpl: '\u2945', + rarrsim: '\u2974', + Rarrtl: '\u2916', + rarrtl: '\u21A3', + rarrw: '\u219D', + rAtail: '\u291C', + ratail: '\u291A', + ratio: '\u2236', + rationals: '\u211A', + RBarr: '\u2910', + rBarr: '\u290F', + rbarr: '\u290D', + rbbrk: '\u2773', + rbrace: '\u007D', + rbrack: '\u005D', + rbrke: '\u298C', + rbrksld: '\u298E', + rbrkslu: '\u2990', + Rcaron: '\u0158', + rcaron: '\u0159', + Rcedil: '\u0156', + rcedil: '\u0157', + rceil: '\u2309', + rcub: '\u007D', + Rcy: '\u0420', + rcy: '\u0440', + rdca: '\u2937', + rdldhar: '\u2969', + rdquo: '\u201D', + rdquor: '\u201D', + rdsh: '\u21B3', + Re: '\u211C', + real: '\u211C', + realine: '\u211B', + realpart: '\u211C', + reals: '\u211D', + rect: '\u25AD', + REG: '\u00AE', + reg: '\u00AE', + ReverseElement: '\u220B', + ReverseEquilibrium: '\u21CB', + ReverseUpEquilibrium: '\u296F', + rfisht: '\u297D', + rfloor: '\u230B', + Rfr: '\u211C', + rfr: '\uD835\uDD2F', + rHar: '\u2964', + rhard: '\u21C1', + rharu: '\u21C0', + rharul: '\u296C', + Rho: '\u03A1', + rho: '\u03C1', + rhov: '\u03F1', + RightAngleBracket: '\u27E9', + RightArrow: '\u2192', + Rightarrow: '\u21D2', + rightarrow: '\u2192', + RightArrowBar: '\u21E5', + RightArrowLeftArrow: '\u21C4', + rightarrowtail: '\u21A3', + RightCeiling: '\u2309', + RightDoubleBracket: '\u27E7', + RightDownTeeVector: '\u295D', + RightDownVector: '\u21C2', + RightDownVectorBar: '\u2955', + RightFloor: '\u230B', + rightharpoondown: '\u21C1', + rightharpoonup: '\u21C0', + rightleftarrows: '\u21C4', + rightleftharpoons: '\u21CC', + rightrightarrows: '\u21C9', + rightsquigarrow: '\u219D', + RightTee: '\u22A2', + RightTeeArrow: '\u21A6', + RightTeeVector: '\u295B', + rightthreetimes: '\u22CC', + RightTriangle: '\u22B3', + RightTriangleBar: '\u29D0', + RightTriangleEqual: '\u22B5', + RightUpDownVector: '\u294F', + RightUpTeeVector: '\u295C', + RightUpVector: '\u21BE', + RightUpVectorBar: '\u2954', + RightVector: '\u21C0', + RightVectorBar: '\u2953', + ring: '\u02DA', + risingdotseq: '\u2253', + rlarr: '\u21C4', + rlhar: '\u21CC', + rlm: '\u200F', + rmoust: '\u23B1', + rmoustache: '\u23B1', + rnmid: '\u2AEE', + roang: '\u27ED', + roarr: '\u21FE', + robrk: '\u27E7', + ropar: '\u2986', + Ropf: '\u211D', + ropf: '\uD835\uDD63', + roplus: '\u2A2E', + rotimes: '\u2A35', + RoundImplies: '\u2970', + rpar: '\u0029', + rpargt: '\u2994', + rppolint: '\u2A12', + rrarr: '\u21C9', + Rrightarrow: '\u21DB', + rsaquo: '\u203A', + Rscr: '\u211B', + rscr: '\uD835\uDCC7', + Rsh: '\u21B1', + rsh: '\u21B1', + rsqb: '\u005D', + rsquo: '\u2019', + rsquor: '\u2019', + rthree: '\u22CC', + rtimes: '\u22CA', + rtri: '\u25B9', + rtrie: '\u22B5', + rtrif: '\u25B8', + rtriltri: '\u29CE', + RuleDelayed: '\u29F4', + ruluhar: '\u2968', + rx: '\u211E', + Sacute: '\u015A', + sacute: '\u015B', + sbquo: '\u201A', + Sc: '\u2ABC', + sc: '\u227B', + scap: '\u2AB8', + Scaron: '\u0160', + scaron: '\u0161', + sccue: '\u227D', + scE: '\u2AB4', + sce: '\u2AB0', + Scedil: '\u015E', + scedil: '\u015F', + Scirc: '\u015C', + scirc: '\u015D', + scnap: '\u2ABA', + scnE: '\u2AB6', + scnsim: '\u22E9', + scpolint: '\u2A13', + scsim: '\u227F', + Scy: '\u0421', + scy: '\u0441', + sdot: '\u22C5', + sdotb: '\u22A1', + sdote: '\u2A66', + searhk: '\u2925', + seArr: '\u21D8', + searr: '\u2198', + searrow: '\u2198', + sect: '\u00A7', + semi: '\u003B', + seswar: '\u2929', + setminus: '\u2216', + setmn: '\u2216', + sext: '\u2736', + Sfr: '\uD835\uDD16', + sfr: '\uD835\uDD30', + sfrown: '\u2322', + sharp: '\u266F', + SHCHcy: '\u0429', + shchcy: '\u0449', + SHcy: '\u0428', + shcy: '\u0448', + ShortDownArrow: '\u2193', + ShortLeftArrow: '\u2190', + shortmid: '\u2223', + shortparallel: '\u2225', + ShortRightArrow: '\u2192', + ShortUpArrow: '\u2191', + shy: '\u00AD', + Sigma: '\u03A3', + sigma: '\u03C3', + sigmaf: '\u03C2', + sigmav: '\u03C2', + sim: '\u223C', + simdot: '\u2A6A', + sime: '\u2243', + simeq: '\u2243', + simg: '\u2A9E', + simgE: '\u2AA0', + siml: '\u2A9D', + simlE: '\u2A9F', + simne: '\u2246', + simplus: '\u2A24', + simrarr: '\u2972', + slarr: '\u2190', + SmallCircle: '\u2218', + smallsetminus: '\u2216', + smashp: '\u2A33', + smeparsl: '\u29E4', + smid: '\u2223', + smile: '\u2323', + smt: '\u2AAA', + smte: '\u2AAC', + smtes: '\u2AAC\uFE00', + SOFTcy: '\u042C', + softcy: '\u044C', + sol: '\u002F', + solb: '\u29C4', + solbar: '\u233F', + Sopf: '\uD835\uDD4A', + sopf: '\uD835\uDD64', + spades: '\u2660', + spadesuit: '\u2660', + spar: '\u2225', + sqcap: '\u2293', + sqcaps: '\u2293\uFE00', + sqcup: '\u2294', + sqcups: '\u2294\uFE00', + Sqrt: '\u221A', + sqsub: '\u228F', + sqsube: '\u2291', + sqsubset: '\u228F', + sqsubseteq: '\u2291', + sqsup: '\u2290', + sqsupe: '\u2292', + sqsupset: '\u2290', + sqsupseteq: '\u2292', + squ: '\u25A1', + Square: '\u25A1', + square: '\u25A1', + SquareIntersection: '\u2293', + SquareSubset: '\u228F', + SquareSubsetEqual: '\u2291', + SquareSuperset: '\u2290', + SquareSupersetEqual: '\u2292', + SquareUnion: '\u2294', + squarf: '\u25AA', + squf: '\u25AA', + srarr: '\u2192', + Sscr: '\uD835\uDCAE', + sscr: '\uD835\uDCC8', + ssetmn: '\u2216', + ssmile: '\u2323', + sstarf: '\u22C6', + Star: '\u22C6', + star: '\u2606', + starf: '\u2605', + straightepsilon: '\u03F5', + straightphi: '\u03D5', + strns: '\u00AF', + Sub: '\u22D0', + sub: '\u2282', + subdot: '\u2ABD', + subE: '\u2AC5', + sube: '\u2286', + subedot: '\u2AC3', + submult: '\u2AC1', + subnE: '\u2ACB', + subne: '\u228A', + subplus: '\u2ABF', + subrarr: '\u2979', + Subset: '\u22D0', + subset: '\u2282', + subseteq: '\u2286', + subseteqq: '\u2AC5', + SubsetEqual: '\u2286', + subsetneq: '\u228A', + subsetneqq: '\u2ACB', + subsim: '\u2AC7', + subsub: '\u2AD5', + subsup: '\u2AD3', + succ: '\u227B', + succapprox: '\u2AB8', + succcurlyeq: '\u227D', + Succeeds: '\u227B', + SucceedsEqual: '\u2AB0', + SucceedsSlantEqual: '\u227D', + SucceedsTilde: '\u227F', + succeq: '\u2AB0', + succnapprox: '\u2ABA', + succneqq: '\u2AB6', + succnsim: '\u22E9', + succsim: '\u227F', + SuchThat: '\u220B', + Sum: '\u2211', + sum: '\u2211', + sung: '\u266A', + Sup: '\u22D1', + sup: '\u2283', + sup1: '\u00B9', + sup2: '\u00B2', + sup3: '\u00B3', + supdot: '\u2ABE', + supdsub: '\u2AD8', + supE: '\u2AC6', + supe: '\u2287', + supedot: '\u2AC4', + Superset: '\u2283', + SupersetEqual: '\u2287', + suphsol: '\u27C9', + suphsub: '\u2AD7', + suplarr: '\u297B', + supmult: '\u2AC2', + supnE: '\u2ACC', + supne: '\u228B', + supplus: '\u2AC0', + Supset: '\u22D1', + supset: '\u2283', + supseteq: '\u2287', + supseteqq: '\u2AC6', + supsetneq: '\u228B', + supsetneqq: '\u2ACC', + supsim: '\u2AC8', + supsub: '\u2AD4', + supsup: '\u2AD6', + swarhk: '\u2926', + swArr: '\u21D9', + swarr: '\u2199', + swarrow: '\u2199', + swnwar: '\u292A', + szlig: '\u00DF', + Tab: '\u0009', + target: '\u2316', + Tau: '\u03A4', + tau: '\u03C4', + tbrk: '\u23B4', + Tcaron: '\u0164', + tcaron: '\u0165', + Tcedil: '\u0162', + tcedil: '\u0163', + Tcy: '\u0422', + tcy: '\u0442', + tdot: '\u20DB', + telrec: '\u2315', + Tfr: '\uD835\uDD17', + tfr: '\uD835\uDD31', + there4: '\u2234', + Therefore: '\u2234', + therefore: '\u2234', + Theta: '\u0398', + theta: '\u03B8', + thetasym: '\u03D1', + thetav: '\u03D1', + thickapprox: '\u2248', + thicksim: '\u223C', + ThickSpace: '\u205F\u200A', + thinsp: '\u2009', + ThinSpace: '\u2009', + thkap: '\u2248', + thksim: '\u223C', + THORN: '\u00DE', + thorn: '\u00FE', + Tilde: '\u223C', + tilde: '\u02DC', + TildeEqual: '\u2243', + TildeFullEqual: '\u2245', + TildeTilde: '\u2248', + times: '\u00D7', + timesb: '\u22A0', + timesbar: '\u2A31', + timesd: '\u2A30', + tint: '\u222D', + toea: '\u2928', + top: '\u22A4', + topbot: '\u2336', + topcir: '\u2AF1', + Topf: '\uD835\uDD4B', + topf: '\uD835\uDD65', + topfork: '\u2ADA', + tosa: '\u2929', + tprime: '\u2034', + TRADE: '\u2122', + trade: '\u2122', + triangle: '\u25B5', + triangledown: '\u25BF', + triangleleft: '\u25C3', + trianglelefteq: '\u22B4', + triangleq: '\u225C', + triangleright: '\u25B9', + trianglerighteq: '\u22B5', + tridot: '\u25EC', + trie: '\u225C', + triminus: '\u2A3A', + TripleDot: '\u20DB', + triplus: '\u2A39', + trisb: '\u29CD', + tritime: '\u2A3B', + trpezium: '\u23E2', + Tscr: '\uD835\uDCAF', + tscr: '\uD835\uDCC9', + TScy: '\u0426', + tscy: '\u0446', + TSHcy: '\u040B', + tshcy: '\u045B', + Tstrok: '\u0166', + tstrok: '\u0167', + twixt: '\u226C', + twoheadleftarrow: '\u219E', + twoheadrightarrow: '\u21A0', + Uacute: '\u00DA', + uacute: '\u00FA', + Uarr: '\u219F', + uArr: '\u21D1', + uarr: '\u2191', + Uarrocir: '\u2949', + Ubrcy: '\u040E', + ubrcy: '\u045E', + Ubreve: '\u016C', + ubreve: '\u016D', + Ucirc: '\u00DB', + ucirc: '\u00FB', + Ucy: '\u0423', + ucy: '\u0443', + udarr: '\u21C5', + Udblac: '\u0170', + udblac: '\u0171', + udhar: '\u296E', + ufisht: '\u297E', + Ufr: '\uD835\uDD18', + ufr: '\uD835\uDD32', + Ugrave: '\u00D9', + ugrave: '\u00F9', + uHar: '\u2963', + uharl: '\u21BF', + uharr: '\u21BE', + uhblk: '\u2580', + ulcorn: '\u231C', + ulcorner: '\u231C', + ulcrop: '\u230F', + ultri: '\u25F8', + Umacr: '\u016A', + umacr: '\u016B', + uml: '\u00A8', + UnderBar: '\u005F', + UnderBrace: '\u23DF', + UnderBracket: '\u23B5', + UnderParenthesis: '\u23DD', + Union: '\u22C3', + UnionPlus: '\u228E', + Uogon: '\u0172', + uogon: '\u0173', + Uopf: '\uD835\uDD4C', + uopf: '\uD835\uDD66', + UpArrow: '\u2191', + Uparrow: '\u21D1', + uparrow: '\u2191', + UpArrowBar: '\u2912', + UpArrowDownArrow: '\u21C5', + UpDownArrow: '\u2195', + Updownarrow: '\u21D5', + updownarrow: '\u2195', + UpEquilibrium: '\u296E', + upharpoonleft: '\u21BF', + upharpoonright: '\u21BE', + uplus: '\u228E', + UpperLeftArrow: '\u2196', + UpperRightArrow: '\u2197', + Upsi: '\u03D2', + upsi: '\u03C5', + upsih: '\u03D2', + Upsilon: '\u03A5', + upsilon: '\u03C5', + UpTee: '\u22A5', + UpTeeArrow: '\u21A5', + upuparrows: '\u21C8', + urcorn: '\u231D', + urcorner: '\u231D', + urcrop: '\u230E', + Uring: '\u016E', + uring: '\u016F', + urtri: '\u25F9', + Uscr: '\uD835\uDCB0', + uscr: '\uD835\uDCCA', + utdot: '\u22F0', + Utilde: '\u0168', + utilde: '\u0169', + utri: '\u25B5', + utrif: '\u25B4', + uuarr: '\u21C8', + Uuml: '\u00DC', + uuml: '\u00FC', + uwangle: '\u29A7', + vangrt: '\u299C', + varepsilon: '\u03F5', + varkappa: '\u03F0', + varnothing: '\u2205', + varphi: '\u03D5', + varpi: '\u03D6', + varpropto: '\u221D', + vArr: '\u21D5', + varr: '\u2195', + varrho: '\u03F1', + varsigma: '\u03C2', + varsubsetneq: '\u228A\uFE00', + varsubsetneqq: '\u2ACB\uFE00', + varsupsetneq: '\u228B\uFE00', + varsupsetneqq: '\u2ACC\uFE00', + vartheta: '\u03D1', + vartriangleleft: '\u22B2', + vartriangleright: '\u22B3', + Vbar: '\u2AEB', + vBar: '\u2AE8', + vBarv: '\u2AE9', + Vcy: '\u0412', + vcy: '\u0432', + VDash: '\u22AB', + Vdash: '\u22A9', + vDash: '\u22A8', + vdash: '\u22A2', + Vdashl: '\u2AE6', + Vee: '\u22C1', + vee: '\u2228', + veebar: '\u22BB', + veeeq: '\u225A', + vellip: '\u22EE', + Verbar: '\u2016', + verbar: '\u007C', + Vert: '\u2016', + vert: '\u007C', + VerticalBar: '\u2223', + VerticalLine: '\u007C', + VerticalSeparator: '\u2758', + VerticalTilde: '\u2240', + VeryThinSpace: '\u200A', + Vfr: '\uD835\uDD19', + vfr: '\uD835\uDD33', + vltri: '\u22B2', + vnsub: '\u2282\u20D2', + vnsup: '\u2283\u20D2', + Vopf: '\uD835\uDD4D', + vopf: '\uD835\uDD67', + vprop: '\u221D', + vrtri: '\u22B3', + Vscr: '\uD835\uDCB1', + vscr: '\uD835\uDCCB', + vsubnE: '\u2ACB\uFE00', + vsubne: '\u228A\uFE00', + vsupnE: '\u2ACC\uFE00', + vsupne: '\u228B\uFE00', + Vvdash: '\u22AA', + vzigzag: '\u299A', + Wcirc: '\u0174', + wcirc: '\u0175', + wedbar: '\u2A5F', + Wedge: '\u22C0', + wedge: '\u2227', + wedgeq: '\u2259', + weierp: '\u2118', + Wfr: '\uD835\uDD1A', + wfr: '\uD835\uDD34', + Wopf: '\uD835\uDD4E', + wopf: '\uD835\uDD68', + wp: '\u2118', + wr: '\u2240', + wreath: '\u2240', + Wscr: '\uD835\uDCB2', + wscr: '\uD835\uDCCC', + xcap: '\u22C2', + xcirc: '\u25EF', + xcup: '\u22C3', + xdtri: '\u25BD', + Xfr: '\uD835\uDD1B', + xfr: '\uD835\uDD35', + xhArr: '\u27FA', + xharr: '\u27F7', + Xi: '\u039E', + xi: '\u03BE', + xlArr: '\u27F8', + xlarr: '\u27F5', + xmap: '\u27FC', + xnis: '\u22FB', + xodot: '\u2A00', + Xopf: '\uD835\uDD4F', + xopf: '\uD835\uDD69', + xoplus: '\u2A01', + xotime: '\u2A02', + xrArr: '\u27F9', + xrarr: '\u27F6', + Xscr: '\uD835\uDCB3', + xscr: '\uD835\uDCCD', + xsqcup: '\u2A06', + xuplus: '\u2A04', + xutri: '\u25B3', + xvee: '\u22C1', + xwedge: '\u22C0', + Yacute: '\u00DD', + yacute: '\u00FD', + YAcy: '\u042F', + yacy: '\u044F', + Ycirc: '\u0176', + ycirc: '\u0177', + Ycy: '\u042B', + ycy: '\u044B', + yen: '\u00A5', + Yfr: '\uD835\uDD1C', + yfr: '\uD835\uDD36', + YIcy: '\u0407', + yicy: '\u0457', + Yopf: '\uD835\uDD50', + yopf: '\uD835\uDD6A', + Yscr: '\uD835\uDCB4', + yscr: '\uD835\uDCCE', + YUcy: '\u042E', + yucy: '\u044E', + Yuml: '\u0178', + yuml: '\u00FF', + Zacute: '\u0179', + zacute: '\u017A', + Zcaron: '\u017D', + zcaron: '\u017E', + Zcy: '\u0417', + zcy: '\u0437', + Zdot: '\u017B', + zdot: '\u017C', + zeetrf: '\u2128', + ZeroWidthSpace: '\u200B', + Zeta: '\u0396', + zeta: '\u03B6', + Zfr: '\u2128', + zfr: '\uD835\uDD37', + ZHcy: '\u0416', + zhcy: '\u0436', + zigrarr: '\u21DD', + Zopf: '\u2124', + zopf: '\uD835\uDD6B', + Zscr: '\uD835\uDCB5', + zscr: '\uD835\uDCCF', + zwj: '\u200D', + zwnj: '\u200C', +}); - return parts.join('') +/** + * @deprecated use `HTML_ENTITIES` instead + * @see HTML_ENTITIES + */ +exports.entityMap = exports.HTML_ENTITIES; + +},{"./conventions":9}],13:[function(_dereq_,module,exports){ +var dom = _dereq_('./dom') +exports.DOMImplementation = dom.DOMImplementation +exports.XMLSerializer = dom.XMLSerializer +exports.DOMParser = _dereq_('./dom-parser').DOMParser + +},{"./dom":11,"./dom-parser":10}],14:[function(_dereq_,module,exports){ +var NAMESPACE = _dereq_("./conventions").NAMESPACE; + +//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] +//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] +//[5] Name ::= NameStartChar (NameChar)* +var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF +var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"); +var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$'); +//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/ +//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',') + +//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE +//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE +var S_TAG = 0;//tag name offerring +var S_ATTR = 1;//attr name offerring +var S_ATTR_SPACE=2;//attr name end and space offer +var S_EQ = 3;//=space? +var S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only) +var S_ATTR_END = 5;//attr value end and no space(quot end) +var S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer) +var S_TAG_CLOSE = 7;//closed el + +/** + * Creates an error that will not be caught by XMLReader aka the SAX parser. + * + * @param {string} message + * @param {any?} locator Optional, can provide details about the location in the source + * @constructor + */ +function ParseError(message, locator) { + this.message = message + this.locator = locator + if(Error.captureStackTrace) Error.captureStackTrace(this, ParseError); } +ParseError.prototype = new Error(); +ParseError.prototype.name = ParseError.name -},{}],14:[function(_dereq_,module,exports){ -var bigInt = (function (undefined) { - "use strict"; - - var BASE = 1e7, - LOG_BASE = 7, - MAX_INT = 9007199254740992, - MAX_INT_ARR = smallToArray(MAX_INT), - DEFAULT_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz"; - - var supportsNativeBigInt = typeof BigInt === "function"; - - function Integer(v, radix, alphabet, caseSensitive) { - if (typeof v === "undefined") return Integer[0]; - if (typeof radix !== "undefined") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive); - return parseValue(v); - } - - function BigInteger(value, sign) { - this.value = value; - this.sign = sign; - this.isSmall = false; - } - BigInteger.prototype = Object.create(Integer.prototype); - - function SmallInteger(value) { - this.value = value; - this.sign = value < 0; - this.isSmall = true; - } - SmallInteger.prototype = Object.create(Integer.prototype); - - function NativeBigInt(value) { - this.value = value; - } - NativeBigInt.prototype = Object.create(Integer.prototype); - - function isPrecise(n) { - return -MAX_INT < n && n < MAX_INT; - } - - function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes - if (n < 1e7) - return [n]; - if (n < 1e14) - return [n % 1e7, Math.floor(n / 1e7)]; - return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)]; - } - - function arrayToSmall(arr) { // If BASE changes this function may need to change - trim(arr); - var length = arr.length; - if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) { - switch (length) { - case 0: return 0; - case 1: return arr[0]; - case 2: return arr[0] + arr[1] * BASE; - default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE; - } - } - return arr; - } - - function trim(v) { - var i = v.length; - while (v[--i] === 0); - v.length = i + 1; - } - - function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger - var x = new Array(length); - var i = -1; - while (++i < length) { - x[i] = 0; - } - return x; - } - - function truncate(n) { - if (n > 0) return Math.floor(n); - return Math.ceil(n); - } - - function add(a, b) { // assumes a and b are arrays with a.length >= b.length - var l_a = a.length, - l_b = b.length, - r = new Array(l_a), - carry = 0, - base = BASE, - sum, i; - for (i = 0; i < l_b; i++) { - sum = a[i] + b[i] + carry; - carry = sum >= base ? 1 : 0; - r[i] = sum - carry * base; - } - while (i < l_a) { - sum = a[i] + carry; - carry = sum === base ? 1 : 0; - r[i++] = sum - carry * base; - } - if (carry > 0) r.push(carry); - return r; - } - - function addAny(a, b) { - if (a.length >= b.length) return add(a, b); - return add(b, a); - } - - function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT - var l = a.length, - r = new Array(l), - base = BASE, - sum, i; - for (i = 0; i < l; i++) { - sum = a[i] - base + carry; - carry = Math.floor(sum / base); - r[i] = sum - carry * base; - carry += 1; - } - while (carry > 0) { - r[i++] = carry % base; - carry = Math.floor(carry / base); - } - return r; - } - - BigInteger.prototype.add = function (v) { - var n = parseValue(v); - if (this.sign !== n.sign) { - return this.subtract(n.negate()); - } - var a = this.value, b = n.value; - if (n.isSmall) { - return new BigInteger(addSmall(a, Math.abs(b)), this.sign); - } - return new BigInteger(addAny(a, b), this.sign); - }; - BigInteger.prototype.plus = BigInteger.prototype.add; - - SmallInteger.prototype.add = function (v) { - var n = parseValue(v); - var a = this.value; - if (a < 0 !== n.sign) { - return this.subtract(n.negate()); - } - var b = n.value; - if (n.isSmall) { - if (isPrecise(a + b)) return new SmallInteger(a + b); - b = smallToArray(Math.abs(b)); - } - return new BigInteger(addSmall(b, Math.abs(a)), a < 0); - }; - SmallInteger.prototype.plus = SmallInteger.prototype.add; - - NativeBigInt.prototype.add = function (v) { - return new NativeBigInt(this.value + parseValue(v).value); - } - NativeBigInt.prototype.plus = NativeBigInt.prototype.add; - - function subtract(a, b) { // assumes a and b are arrays with a >= b - var a_l = a.length, - b_l = b.length, - r = new Array(a_l), - borrow = 0, - base = BASE, - i, difference; - for (i = 0; i < b_l; i++) { - difference = a[i] - borrow - b[i]; - if (difference < 0) { - difference += base; - borrow = 1; - } else borrow = 0; - r[i] = difference; - } - for (i = b_l; i < a_l; i++) { - difference = a[i] - borrow; - if (difference < 0) difference += base; - else { - r[i++] = difference; - break; - } - r[i] = difference; - } - for (; i < a_l; i++) { - r[i] = a[i]; - } - trim(r); - return r; - } - - function subtractAny(a, b, sign) { - var value; - if (compareAbs(a, b) >= 0) { - value = subtract(a, b); - } else { - value = subtract(b, a); - sign = !sign; - } - value = arrayToSmall(value); - if (typeof value === "number") { - if (sign) value = -value; - return new SmallInteger(value); - } - return new BigInteger(value, sign); - } - - function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT - var l = a.length, - r = new Array(l), - carry = -b, - base = BASE, - i, difference; - for (i = 0; i < l; i++) { - difference = a[i] + carry; - carry = Math.floor(difference / base); - difference %= base; - r[i] = difference < 0 ? difference + base : difference; - } - r = arrayToSmall(r); - if (typeof r === "number") { - if (sign) r = -r; - return new SmallInteger(r); - } return new BigInteger(r, sign); - } - - BigInteger.prototype.subtract = function (v) { - var n = parseValue(v); - if (this.sign !== n.sign) { - return this.add(n.negate()); - } - var a = this.value, b = n.value; - if (n.isSmall) - return subtractSmall(a, Math.abs(b), this.sign); - return subtractAny(a, b, this.sign); - }; - BigInteger.prototype.minus = BigInteger.prototype.subtract; - - SmallInteger.prototype.subtract = function (v) { - var n = parseValue(v); - var a = this.value; - if (a < 0 !== n.sign) { - return this.add(n.negate()); - } - var b = n.value; - if (n.isSmall) { - return new SmallInteger(a - b); - } - return subtractSmall(b, Math.abs(a), a >= 0); - }; - SmallInteger.prototype.minus = SmallInteger.prototype.subtract; - - NativeBigInt.prototype.subtract = function (v) { - return new NativeBigInt(this.value - parseValue(v).value); - } - NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract; - - BigInteger.prototype.negate = function () { - return new BigInteger(this.value, !this.sign); - }; - SmallInteger.prototype.negate = function () { - var sign = this.sign; - var small = new SmallInteger(-this.value); - small.sign = !sign; - return small; - }; - NativeBigInt.prototype.negate = function () { - return new NativeBigInt(-this.value); - } - - BigInteger.prototype.abs = function () { - return new BigInteger(this.value, false); - }; - SmallInteger.prototype.abs = function () { - return new SmallInteger(Math.abs(this.value)); - }; - NativeBigInt.prototype.abs = function () { - return new NativeBigInt(this.value >= 0 ? this.value : -this.value); - } - - - function multiplyLong(a, b) { - var a_l = a.length, - b_l = b.length, - l = a_l + b_l, - r = createArray(l), - base = BASE, - product, carry, i, a_i, b_j; - for (i = 0; i < a_l; ++i) { - a_i = a[i]; - for (var j = 0; j < b_l; ++j) { - b_j = b[j]; - product = a_i * b_j + r[i + j]; - carry = Math.floor(product / base); - r[i + j] = product - carry * base; - r[i + j + 1] += carry; - } - } - trim(r); - return r; - } - - function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE - var l = a.length, - r = new Array(l), - base = BASE, - carry = 0, - product, i; - for (i = 0; i < l; i++) { - product = a[i] * b + carry; - carry = Math.floor(product / base); - r[i] = product - carry * base; - } - while (carry > 0) { - r[i++] = carry % base; - carry = Math.floor(carry / base); - } - return r; - } - - function shiftLeft(x, n) { - var r = []; - while (n-- > 0) r.push(0); - return r.concat(x); - } - - function multiplyKaratsuba(x, y) { - var n = Math.max(x.length, y.length); - - if (n <= 30) return multiplyLong(x, y); - n = Math.ceil(n / 2); - - var b = x.slice(n), - a = x.slice(0, n), - d = y.slice(n), - c = y.slice(0, n); - - var ac = multiplyKaratsuba(a, c), - bd = multiplyKaratsuba(b, d), - abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d)); - - var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n)); - trim(product); - return product; - } - - // The following function is derived from a surface fit of a graph plotting the performance difference - // between long multiplication and karatsuba multiplication versus the lengths of the two arrays. - function useKaratsuba(l1, l2) { - return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0; - } - - BigInteger.prototype.multiply = function (v) { - var n = parseValue(v), - a = this.value, b = n.value, - sign = this.sign !== n.sign, - abs; - if (n.isSmall) { - if (b === 0) return Integer[0]; - if (b === 1) return this; - if (b === -1) return this.negate(); - abs = Math.abs(b); - if (abs < BASE) { - return new BigInteger(multiplySmall(a, abs), sign); - } - b = smallToArray(abs); - } - if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes - return new BigInteger(multiplyKaratsuba(a, b), sign); - return new BigInteger(multiplyLong(a, b), sign); - }; - - BigInteger.prototype.times = BigInteger.prototype.multiply; - - function multiplySmallAndArray(a, b, sign) { // a >= 0 - if (a < BASE) { - return new BigInteger(multiplySmall(b, a), sign); - } - return new BigInteger(multiplyLong(b, smallToArray(a)), sign); - } - SmallInteger.prototype._multiplyBySmall = function (a) { - if (isPrecise(a.value * this.value)) { - return new SmallInteger(a.value * this.value); - } - return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign); - }; - BigInteger.prototype._multiplyBySmall = function (a) { - if (a.value === 0) return Integer[0]; - if (a.value === 1) return this; - if (a.value === -1) return this.negate(); - return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign); - }; - SmallInteger.prototype.multiply = function (v) { - return parseValue(v)._multiplyBySmall(this); - }; - SmallInteger.prototype.times = SmallInteger.prototype.multiply; - - NativeBigInt.prototype.multiply = function (v) { - return new NativeBigInt(this.value * parseValue(v).value); - } - NativeBigInt.prototype.times = NativeBigInt.prototype.multiply; - - function square(a) { - //console.assert(2 * BASE * BASE < MAX_INT); - var l = a.length, - r = createArray(l + l), - base = BASE, - product, carry, i, a_i, a_j; - for (i = 0; i < l; i++) { - a_i = a[i]; - carry = 0 - a_i * a_i; - for (var j = i; j < l; j++) { - a_j = a[j]; - product = 2 * (a_i * a_j) + r[i + j] + carry; - carry = Math.floor(product / base); - r[i + j] = product - carry * base; - } - r[i + l] = carry; - } - trim(r); - return r; - } - - BigInteger.prototype.square = function () { - return new BigInteger(square(this.value), false); - }; - - SmallInteger.prototype.square = function () { - var value = this.value * this.value; - if (isPrecise(value)) return new SmallInteger(value); - return new BigInteger(square(smallToArray(Math.abs(this.value))), false); - }; - - NativeBigInt.prototype.square = function (v) { - return new NativeBigInt(this.value * this.value); - } - - function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes. - var a_l = a.length, - b_l = b.length, - base = BASE, - result = createArray(b.length), - divisorMostSignificantDigit = b[b_l - 1], - // normalization - lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)), - remainder = multiplySmall(a, lambda), - divisor = multiplySmall(b, lambda), - quotientDigit, shift, carry, borrow, i, l, q; - if (remainder.length <= a_l) remainder.push(0); - divisor.push(0); - divisorMostSignificantDigit = divisor[b_l - 1]; - for (shift = a_l - b_l; shift >= 0; shift--) { - quotientDigit = base - 1; - if (remainder[shift + b_l] !== divisorMostSignificantDigit) { - quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit); - } - // quotientDigit <= base - 1 - carry = 0; - borrow = 0; - l = divisor.length; - for (i = 0; i < l; i++) { - carry += quotientDigit * divisor[i]; - q = Math.floor(carry / base); - borrow += remainder[shift + i] - (carry - q * base); - carry = q; - if (borrow < 0) { - remainder[shift + i] = borrow + base; - borrow = -1; - } else { - remainder[shift + i] = borrow; - borrow = 0; - } - } - while (borrow !== 0) { - quotientDigit -= 1; - carry = 0; - for (i = 0; i < l; i++) { - carry += remainder[shift + i] - base + divisor[i]; - if (carry < 0) { - remainder[shift + i] = carry + base; - carry = 0; - } else { - remainder[shift + i] = carry; - carry = 1; - } - } - borrow += carry; - } - result[shift] = quotientDigit; - } - // denormalization - remainder = divModSmall(remainder, lambda)[0]; - return [arrayToSmall(result), arrayToSmall(remainder)]; - } - - function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/ - // Performs faster than divMod1 on larger input sizes. - var a_l = a.length, - b_l = b.length, - result = [], - part = [], - base = BASE, - guess, xlen, highx, highy, check; - while (a_l) { - part.unshift(a[--a_l]); - trim(part); - if (compareAbs(part, b) < 0) { - result.push(0); - continue; - } - xlen = part.length; - highx = part[xlen - 1] * base + part[xlen - 2]; - highy = b[b_l - 1] * base + b[b_l - 2]; - if (xlen > b_l) { - highx = (highx + 1) * base; - } - guess = Math.ceil(highx / highy); - do { - check = multiplySmall(b, guess); - if (compareAbs(check, part) <= 0) break; - guess--; - } while (guess); - result.push(guess); - part = subtract(part, check); - } - result.reverse(); - return [arrayToSmall(result), arrayToSmall(part)]; - } - - function divModSmall(value, lambda) { - var length = value.length, - quotient = createArray(length), - base = BASE, - i, q, remainder, divisor; - remainder = 0; - for (i = length - 1; i >= 0; --i) { - divisor = remainder * base + value[i]; - q = truncate(divisor / lambda); - remainder = divisor - q * lambda; - quotient[i] = q | 0; - } - return [quotient, remainder | 0]; - } - - function divModAny(self, v) { - var value, n = parseValue(v); - if (supportsNativeBigInt) { - return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)]; - } - var a = self.value, b = n.value; - var quotient; - if (b === 0) throw new Error("Cannot divide by zero"); - if (self.isSmall) { - if (n.isSmall) { - return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)]; - } - return [Integer[0], self]; - } - if (n.isSmall) { - if (b === 1) return [self, Integer[0]]; - if (b == -1) return [self.negate(), Integer[0]]; - var abs = Math.abs(b); - if (abs < BASE) { - value = divModSmall(a, abs); - quotient = arrayToSmall(value[0]); - var remainder = value[1]; - if (self.sign) remainder = -remainder; - if (typeof quotient === "number") { - if (self.sign !== n.sign) quotient = -quotient; - return [new SmallInteger(quotient), new SmallInteger(remainder)]; - } - return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)]; - } - b = smallToArray(abs); - } - var comparison = compareAbs(a, b); - if (comparison === -1) return [Integer[0], self]; - if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]]; - - // divMod1 is faster on smaller input sizes - if (a.length + b.length <= 200) - value = divMod1(a, b); - else value = divMod2(a, b); - - quotient = value[0]; - var qSign = self.sign !== n.sign, - mod = value[1], - mSign = self.sign; - if (typeof quotient === "number") { - if (qSign) quotient = -quotient; - quotient = new SmallInteger(quotient); - } else quotient = new BigInteger(quotient, qSign); - if (typeof mod === "number") { - if (mSign) mod = -mod; - mod = new SmallInteger(mod); - } else mod = new BigInteger(mod, mSign); - return [quotient, mod]; - } - - BigInteger.prototype.divmod = function (v) { - var result = divModAny(this, v); - return { - quotient: result[0], - remainder: result[1] - }; - }; - NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod; - - - BigInteger.prototype.divide = function (v) { - return divModAny(this, v)[0]; - }; - NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) { - return new NativeBigInt(this.value / parseValue(v).value); - }; - SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide; - - BigInteger.prototype.mod = function (v) { - return divModAny(this, v)[1]; - }; - NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) { - return new NativeBigInt(this.value % parseValue(v).value); - }; - SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod; - - BigInteger.prototype.pow = function (v) { - var n = parseValue(v), - a = this.value, - b = n.value, - value, x, y; - if (b === 0) return Integer[1]; - if (a === 0) return Integer[0]; - if (a === 1) return Integer[1]; - if (a === -1) return n.isEven() ? Integer[1] : Integer[-1]; - if (n.sign) { - return Integer[0]; - } - if (!n.isSmall) throw new Error("The exponent " + n.toString() + " is too large."); - if (this.isSmall) { - if (isPrecise(value = Math.pow(a, b))) - return new SmallInteger(truncate(value)); - } - x = this; - y = Integer[1]; - while (true) { - if (b & 1 === 1) { - y = y.times(x); - --b; - } - if (b === 0) break; - b /= 2; - x = x.square(); - } - return y; - }; - SmallInteger.prototype.pow = BigInteger.prototype.pow; - - NativeBigInt.prototype.pow = function (v) { - var n = parseValue(v); - var a = this.value, b = n.value; - var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2); - if (b === _0) return Integer[1]; - if (a === _0) return Integer[0]; - if (a === _1) return Integer[1]; - if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1]; - if (n.isNegative()) return new NativeBigInt(_0); - var x = this; - var y = Integer[1]; - while (true) { - if ((b & _1) === _1) { - y = y.times(x); - --b; - } - if (b === _0) break; - b /= _2; - x = x.square(); - } - return y; - } - - BigInteger.prototype.modPow = function (exp, mod) { - exp = parseValue(exp); - mod = parseValue(mod); - if (mod.isZero()) throw new Error("Cannot take modPow with modulus 0"); - var r = Integer[1], - base = this.mod(mod); - if (exp.isNegative()) { - exp = exp.multiply(Integer[-1]); - base = base.modInv(mod); - } - while (exp.isPositive()) { - if (base.isZero()) return Integer[0]; - if (exp.isOdd()) r = r.multiply(base).mod(mod); - exp = exp.divide(2); - base = base.square().mod(mod); - } - return r; - }; - NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow; - - function compareAbs(a, b) { - if (a.length !== b.length) { - return a.length > b.length ? 1 : -1; - } - for (var i = a.length - 1; i >= 0; i--) { - if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1; - } - return 0; - } - - BigInteger.prototype.compareAbs = function (v) { - var n = parseValue(v), - a = this.value, - b = n.value; - if (n.isSmall) return 1; - return compareAbs(a, b); - }; - SmallInteger.prototype.compareAbs = function (v) { - var n = parseValue(v), - a = Math.abs(this.value), - b = n.value; - if (n.isSmall) { - b = Math.abs(b); - return a === b ? 0 : a > b ? 1 : -1; - } - return -1; - }; - NativeBigInt.prototype.compareAbs = function (v) { - var a = this.value; - var b = parseValue(v).value; - a = a >= 0 ? a : -a; - b = b >= 0 ? b : -b; - return a === b ? 0 : a > b ? 1 : -1; - } - - BigInteger.prototype.compare = function (v) { - // See discussion about comparison with Infinity: - // https://github.com/peterolson/BigInteger.js/issues/61 - if (v === Infinity) { - return -1; - } - if (v === -Infinity) { - return 1; - } - - var n = parseValue(v), - a = this.value, - b = n.value; - if (this.sign !== n.sign) { - return n.sign ? 1 : -1; - } - if (n.isSmall) { - return this.sign ? -1 : 1; - } - return compareAbs(a, b) * (this.sign ? -1 : 1); - }; - BigInteger.prototype.compareTo = BigInteger.prototype.compare; - - SmallInteger.prototype.compare = function (v) { - if (v === Infinity) { - return -1; - } - if (v === -Infinity) { - return 1; - } - - var n = parseValue(v), - a = this.value, - b = n.value; - if (n.isSmall) { - return a == b ? 0 : a > b ? 1 : -1; - } - if (a < 0 !== n.sign) { - return a < 0 ? -1 : 1; - } - return a < 0 ? 1 : -1; - }; - SmallInteger.prototype.compareTo = SmallInteger.prototype.compare; - - NativeBigInt.prototype.compare = function (v) { - if (v === Infinity) { - return -1; - } - if (v === -Infinity) { - return 1; - } - var a = this.value; - var b = parseValue(v).value; - return a === b ? 0 : a > b ? 1 : -1; - } - NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare; - - BigInteger.prototype.equals = function (v) { - return this.compare(v) === 0; - }; - NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals; - - BigInteger.prototype.notEquals = function (v) { - return this.compare(v) !== 0; - }; - NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals; - - BigInteger.prototype.greater = function (v) { - return this.compare(v) > 0; - }; - NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater; - - BigInteger.prototype.lesser = function (v) { - return this.compare(v) < 0; - }; - NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser; - - BigInteger.prototype.greaterOrEquals = function (v) { - return this.compare(v) >= 0; - }; - NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals; - - BigInteger.prototype.lesserOrEquals = function (v) { - return this.compare(v) <= 0; - }; - NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals; - - BigInteger.prototype.isEven = function () { - return (this.value[0] & 1) === 0; - }; - SmallInteger.prototype.isEven = function () { - return (this.value & 1) === 0; - }; - NativeBigInt.prototype.isEven = function () { - return (this.value & BigInt(1)) === BigInt(0); - } - - BigInteger.prototype.isOdd = function () { - return (this.value[0] & 1) === 1; - }; - SmallInteger.prototype.isOdd = function () { - return (this.value & 1) === 1; - }; - NativeBigInt.prototype.isOdd = function () { - return (this.value & BigInt(1)) === BigInt(1); - } - - BigInteger.prototype.isPositive = function () { - return !this.sign; - }; - SmallInteger.prototype.isPositive = function () { - return this.value > 0; - }; - NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive; - - BigInteger.prototype.isNegative = function () { - return this.sign; - }; - SmallInteger.prototype.isNegative = function () { - return this.value < 0; - }; - NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative; - - BigInteger.prototype.isUnit = function () { - return false; - }; - SmallInteger.prototype.isUnit = function () { - return Math.abs(this.value) === 1; - }; - NativeBigInt.prototype.isUnit = function () { - return this.abs().value === BigInt(1); - } - - BigInteger.prototype.isZero = function () { - return false; - }; - SmallInteger.prototype.isZero = function () { - return this.value === 0; - }; - NativeBigInt.prototype.isZero = function () { - return this.value === BigInt(0); - } - - BigInteger.prototype.isDivisibleBy = function (v) { - var n = parseValue(v); - if (n.isZero()) return false; - if (n.isUnit()) return true; - if (n.compareAbs(2) === 0) return this.isEven(); - return this.mod(n).isZero(); - }; - NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy; - - function isBasicPrime(v) { - var n = v.abs(); - if (n.isUnit()) return false; - if (n.equals(2) || n.equals(3) || n.equals(5)) return true; - if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false; - if (n.lesser(49)) return true; - // we don't know if it's prime: let the other functions figure it out - } - - function millerRabinTest(n, a) { - var nPrev = n.prev(), - b = nPrev, - r = 0, - d, t, i, x; - while (b.isEven()) b = b.divide(2), r++; - next: for (i = 0; i < a.length; i++) { - if (n.lesser(a[i])) continue; - x = bigInt(a[i]).modPow(b, n); - if (x.isUnit() || x.equals(nPrev)) continue; - for (d = r - 1; d != 0; d--) { - x = x.square().mod(n); - if (x.isUnit()) return false; - if (x.equals(nPrev)) continue next; - } - return false; - } - return true; - } - - // Set "strict" to true to force GRH-supported lower bound of 2*log(N)^2 - BigInteger.prototype.isPrime = function (strict) { - var isPrime = isBasicPrime(this); - if (isPrime !== undefined) return isPrime; - var n = this.abs(); - var bits = n.bitLength(); - if (bits <= 64) - return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]); - var logN = Math.log(2) * bits.toJSNumber(); - var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN); - for (var a = [], i = 0; i < t; i++) { - a.push(bigInt(i + 2)); - } - return millerRabinTest(n, a); - }; - NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime; - - BigInteger.prototype.isProbablePrime = function (iterations, rng) { - var isPrime = isBasicPrime(this); - if (isPrime !== undefined) return isPrime; - var n = this.abs(); - var t = iterations === undefined ? 5 : iterations; - for (var a = [], i = 0; i < t; i++) { - a.push(bigInt.randBetween(2, n.minus(2), rng)); - } - return millerRabinTest(n, a); - }; - NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime; - - BigInteger.prototype.modInv = function (n) { - var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR; - while (!newR.isZero()) { - q = r.divide(newR); - lastT = t; - lastR = r; - t = newT; - r = newR; - newT = lastT.subtract(q.multiply(newT)); - newR = lastR.subtract(q.multiply(newR)); - } - if (!r.isUnit()) throw new Error(this.toString() + " and " + n.toString() + " are not co-prime"); - if (t.compare(0) === -1) { - t = t.add(n); - } - if (this.isNegative()) { - return t.negate(); - } - return t; - }; - - NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv; - - BigInteger.prototype.next = function () { - var value = this.value; - if (this.sign) { - return subtractSmall(value, 1, this.sign); - } - return new BigInteger(addSmall(value, 1), this.sign); - }; - SmallInteger.prototype.next = function () { - var value = this.value; - if (value + 1 < MAX_INT) return new SmallInteger(value + 1); - return new BigInteger(MAX_INT_ARR, false); - }; - NativeBigInt.prototype.next = function () { - return new NativeBigInt(this.value + BigInt(1)); - } - - BigInteger.prototype.prev = function () { - var value = this.value; - if (this.sign) { - return new BigInteger(addSmall(value, 1), true); - } - return subtractSmall(value, 1, this.sign); - }; - SmallInteger.prototype.prev = function () { - var value = this.value; - if (value - 1 > -MAX_INT) return new SmallInteger(value - 1); - return new BigInteger(MAX_INT_ARR, true); - }; - NativeBigInt.prototype.prev = function () { - return new NativeBigInt(this.value - BigInt(1)); - } - - var powersOfTwo = [1]; - while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]); - var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1]; - - function shift_isSmall(n) { - return Math.abs(n) <= BASE; - } - - BigInteger.prototype.shiftLeft = function (v) { - var n = parseValue(v).toJSNumber(); - if (!shift_isSmall(n)) { - throw new Error(String(n) + " is too large for shifting."); - } - if (n < 0) return this.shiftRight(-n); - var result = this; - if (result.isZero()) return result; - while (n >= powers2Length) { - result = result.multiply(highestPower2); - n -= powers2Length - 1; - } - return result.multiply(powersOfTwo[n]); - }; - NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft; - - BigInteger.prototype.shiftRight = function (v) { - var remQuo; - var n = parseValue(v).toJSNumber(); - if (!shift_isSmall(n)) { - throw new Error(String(n) + " is too large for shifting."); - } - if (n < 0) return this.shiftLeft(-n); - var result = this; - while (n >= powers2Length) { - if (result.isZero() || (result.isNegative() && result.isUnit())) return result; - remQuo = divModAny(result, highestPower2); - result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0]; - n -= powers2Length - 1; - } - remQuo = divModAny(result, powersOfTwo[n]); - return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0]; - }; - NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight; - - function bitwise(x, y, fn) { - y = parseValue(y); - var xSign = x.isNegative(), ySign = y.isNegative(); - var xRem = xSign ? x.not() : x, - yRem = ySign ? y.not() : y; - var xDigit = 0, yDigit = 0; - var xDivMod = null, yDivMod = null; - var result = []; - while (!xRem.isZero() || !yRem.isZero()) { - xDivMod = divModAny(xRem, highestPower2); - xDigit = xDivMod[1].toJSNumber(); - if (xSign) { - xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers - } - - yDivMod = divModAny(yRem, highestPower2); - yDigit = yDivMod[1].toJSNumber(); - if (ySign) { - yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers - } - - xRem = xDivMod[0]; - yRem = yDivMod[0]; - result.push(fn(xDigit, yDigit)); - } - var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0); - for (var i = result.length - 1; i >= 0; i -= 1) { - sum = sum.multiply(highestPower2).add(bigInt(result[i])); - } - return sum; - } - - BigInteger.prototype.not = function () { - return this.negate().prev(); - }; - NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not; - - BigInteger.prototype.and = function (n) { - return bitwise(this, n, function (a, b) { return a & b; }); - }; - NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and; - - BigInteger.prototype.or = function (n) { - return bitwise(this, n, function (a, b) { return a | b; }); - }; - NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or; - - BigInteger.prototype.xor = function (n) { - return bitwise(this, n, function (a, b) { return a ^ b; }); - }; - NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor; - - var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I; - function roughLOB(n) { // get lowestOneBit (rough) - // SmallInteger: return Min(lowestOneBit(n), 1 << 30) - // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7] - var v = n.value, - x = typeof v === "number" ? v | LOBMASK_I : - typeof v === "bigint" ? v | BigInt(LOBMASK_I) : - v[0] + v[1] * BASE | LOBMASK_BI; - return x & -x; - } - - function integerLogarithm(value, base) { - if (base.compareTo(value) <= 0) { - var tmp = integerLogarithm(value, base.square(base)); - var p = tmp.p; - var e = tmp.e; - var t = p.multiply(base); - return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 }; - } - return { p: bigInt(1), e: 0 }; - } - - BigInteger.prototype.bitLength = function () { - var n = this; - if (n.compareTo(bigInt(0)) < 0) { - n = n.negate().subtract(bigInt(1)); - } - if (n.compareTo(bigInt(0)) === 0) { - return bigInt(0); - } - return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1)); - } - NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength; - - function max(a, b) { - a = parseValue(a); - b = parseValue(b); - return a.greater(b) ? a : b; - } - function min(a, b) { - a = parseValue(a); - b = parseValue(b); - return a.lesser(b) ? a : b; - } - function gcd(a, b) { - a = parseValue(a).abs(); - b = parseValue(b).abs(); - if (a.equals(b)) return a; - if (a.isZero()) return b; - if (b.isZero()) return a; - var c = Integer[1], d, t; - while (a.isEven() && b.isEven()) { - d = min(roughLOB(a), roughLOB(b)); - a = a.divide(d); - b = b.divide(d); - c = c.multiply(d); - } - while (a.isEven()) { - a = a.divide(roughLOB(a)); - } - do { - while (b.isEven()) { - b = b.divide(roughLOB(b)); - } - if (a.greater(b)) { - t = b; b = a; a = t; - } - b = b.subtract(a); - } while (!b.isZero()); - return c.isUnit() ? a : a.multiply(c); - } - function lcm(a, b) { - a = parseValue(a).abs(); - b = parseValue(b).abs(); - return a.divide(gcd(a, b)).multiply(b); - } - function randBetween(a, b, rng) { - a = parseValue(a); - b = parseValue(b); - var usedRNG = rng || Math.random; - var low = min(a, b), high = max(a, b); - var range = high.subtract(low).add(1); - if (range.isSmall) return low.add(Math.floor(usedRNG() * range)); - var digits = toBase(range, BASE).value; - var result = [], restricted = true; - for (var i = 0; i < digits.length; i++) { - var top = restricted ? digits[i] : BASE; - var digit = truncate(usedRNG() * top); - result.push(digit); - if (digit < top) restricted = false; - } - return low.add(Integer.fromArray(result, BASE, false)); - } - - var parseBase = function (text, base, alphabet, caseSensitive) { - alphabet = alphabet || DEFAULT_ALPHABET; - text = String(text); - if (!caseSensitive) { - text = text.toLowerCase(); - alphabet = alphabet.toLowerCase(); - } - var length = text.length; - var i; - var absBase = Math.abs(base); - var alphabetValues = {}; - for (i = 0; i < alphabet.length; i++) { - alphabetValues[alphabet[i]] = i; - } - for (i = 0; i < length; i++) { - var c = text[i]; - if (c === "-") continue; - if (c in alphabetValues) { - if (alphabetValues[c] >= absBase) { - if (c === "1" && absBase === 1) continue; - throw new Error(c + " is not a valid digit in base " + base + "."); - } - } - } - base = parseValue(base); - var digits = []; - var isNegative = text[0] === "-"; - for (i = isNegative ? 1 : 0; i < text.length; i++) { - var c = text[i]; - if (c in alphabetValues) digits.push(parseValue(alphabetValues[c])); - else if (c === "<") { - var start = i; - do { i++; } while (text[i] !== ">" && i < text.length); - digits.push(parseValue(text.slice(start + 1, i))); - } - else throw new Error(c + " is not a valid character"); - } - return parseBaseFromArray(digits, base, isNegative); - }; - - function parseBaseFromArray(digits, base, isNegative) { - var val = Integer[0], pow = Integer[1], i; - for (i = digits.length - 1; i >= 0; i--) { - val = val.add(digits[i].times(pow)); - pow = pow.times(base); - } - return isNegative ? val.negate() : val; - } - - function stringify(digit, alphabet) { - alphabet = alphabet || DEFAULT_ALPHABET; - if (digit < alphabet.length) { - return alphabet[digit]; - } - return "<" + digit + ">"; - } - - function toBase(n, base) { - base = bigInt(base); - if (base.isZero()) { - if (n.isZero()) return { value: [0], isNegative: false }; - throw new Error("Cannot convert nonzero numbers to base 0."); - } - if (base.equals(-1)) { - if (n.isZero()) return { value: [0], isNegative: false }; - if (n.isNegative()) - return { - value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber())) - .map(Array.prototype.valueOf, [1, 0]) - ), - isNegative: false - }; - - var arr = Array.apply(null, Array(n.toJSNumber() - 1)) - .map(Array.prototype.valueOf, [0, 1]); - arr.unshift([1]); - return { - value: [].concat.apply([], arr), - isNegative: false - }; - } - - var neg = false; - if (n.isNegative() && base.isPositive()) { - neg = true; - n = n.abs(); - } - if (base.isUnit()) { - if (n.isZero()) return { value: [0], isNegative: false }; - - return { - value: Array.apply(null, Array(n.toJSNumber())) - .map(Number.prototype.valueOf, 1), - isNegative: neg - }; - } - var out = []; - var left = n, divmod; - while (left.isNegative() || left.compareAbs(base) >= 0) { - divmod = left.divmod(base); - left = divmod.quotient; - var digit = divmod.remainder; - if (digit.isNegative()) { - digit = base.minus(digit).abs(); - left = left.next(); - } - out.push(digit.toJSNumber()); - } - out.push(left.toJSNumber()); - return { value: out.reverse(), isNegative: neg }; - } - - function toBaseString(n, base, alphabet) { - var arr = toBase(n, base); - return (arr.isNegative ? "-" : "") + arr.value.map(function (x) { - return stringify(x, alphabet); - }).join(''); - } - - BigInteger.prototype.toArray = function (radix) { - return toBase(this, radix); - }; - - SmallInteger.prototype.toArray = function (radix) { - return toBase(this, radix); - }; - - NativeBigInt.prototype.toArray = function (radix) { - return toBase(this, radix); - }; - - BigInteger.prototype.toString = function (radix, alphabet) { - if (radix === undefined) radix = 10; - if (radix !== 10) return toBaseString(this, radix, alphabet); - var v = this.value, l = v.length, str = String(v[--l]), zeros = "0000000", digit; - while (--l >= 0) { - digit = String(v[l]); - str += zeros.slice(digit.length) + digit; - } - var sign = this.sign ? "-" : ""; - return sign + str; - }; - - SmallInteger.prototype.toString = function (radix, alphabet) { - if (radix === undefined) radix = 10; - if (radix != 10) return toBaseString(this, radix, alphabet); - return String(this.value); - }; - - NativeBigInt.prototype.toString = SmallInteger.prototype.toString; - - NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); } - - BigInteger.prototype.valueOf = function () { - return parseInt(this.toString(), 10); - }; - BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf; - - SmallInteger.prototype.valueOf = function () { - return this.value; - }; - SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf; - NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () { - return parseInt(this.toString(), 10); - } - - function parseStringValue(v) { - if (isPrecise(+v)) { - var x = +v; - if (x === truncate(x)) - return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x); - throw new Error("Invalid integer: " + v); - } - var sign = v[0] === "-"; - if (sign) v = v.slice(1); - var split = v.split(/e/i); - if (split.length > 2) throw new Error("Invalid integer: " + split.join("e")); - if (split.length === 2) { - var exp = split[1]; - if (exp[0] === "+") exp = exp.slice(1); - exp = +exp; - if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error("Invalid integer: " + exp + " is not a valid exponent."); - var text = split[0]; - var decimalPlace = text.indexOf("."); - if (decimalPlace >= 0) { - exp -= text.length - decimalPlace - 1; - text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1); - } - if (exp < 0) throw new Error("Cannot include negative exponent part for integers"); - text += (new Array(exp + 1)).join("0"); - v = text; - } - var isValid = /^([0-9][0-9]*)$/.test(v); - if (!isValid) throw new Error("Invalid integer: " + v); - if (supportsNativeBigInt) { - return new NativeBigInt(BigInt(sign ? "-" + v : v)); - } - var r = [], max = v.length, l = LOG_BASE, min = max - l; - while (max > 0) { - r.push(+v.slice(min, max)); - min -= l; - if (min < 0) min = 0; - max -= l; - } - trim(r); - return new BigInteger(r, sign); - } - - function parseNumberValue(v) { - if (supportsNativeBigInt) { - return new NativeBigInt(BigInt(v)); - } - if (isPrecise(v)) { - if (v !== truncate(v)) throw new Error(v + " is not an integer."); - return new SmallInteger(v); - } - return parseStringValue(v.toString()); - } - - function parseValue(v) { - if (typeof v === "number") { - return parseNumberValue(v); - } - if (typeof v === "string") { - return parseStringValue(v); - } - if (typeof v === "bigint") { - return new NativeBigInt(v); - } - return v; - } - // Pre-define numbers in range [-999,999] - for (var i = 0; i < 1000; i++) { - Integer[i] = parseValue(i); - if (i > 0) Integer[-i] = parseValue(-i); - } - // Backwards compatibility - Integer.one = Integer[1]; - Integer.zero = Integer[0]; - Integer.minusOne = Integer[-1]; - Integer.max = max; - Integer.min = min; - Integer.gcd = gcd; - Integer.lcm = lcm; - Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; }; - Integer.randBetween = randBetween; - - Integer.fromArray = function (digits, base, isNegative) { - return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative); - }; - - return Integer; -})(); - -// Node.js check -if (typeof module !== "undefined" && module.hasOwnProperty("exports")) { - module.exports = bigInt; -} - -//amd check -if (typeof define === "function" && define.amd) { - define( function () { - return bigInt; - }); -} - -},{}],15:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -'use strict'; - -// adapted from http://code.google.com/p/plist/source/browse/trunk/src/com/dd/plist/BinaryPropertyListParser.java - -const fs = _dereq_('fs'); -const bigInt = _dereq_("big-integer"); -const debug = false; - -exports.maxObjectSize = 100 * 1000 * 1000; // 100Meg -exports.maxObjectCount = 32768; - -// EPOCH = new SimpleDateFormat("yyyy MM dd zzz").parse("2001 01 01 GMT").getTime(); -// ...but that's annoying in a static initializer because it can throw exceptions, ick. -// So we just hardcode the correct value. -const EPOCH = 978307200000; - -// UID object definition -const UID = exports.UID = function(id) { - this.UID = id; -}; - -const parseFile = exports.parseFile = function (fileNameOrBuffer, callback) { - return new Promise(function (resolve, reject) { - function tryParseBuffer(buffer) { - let err = null; - let result; - try { - result = parseBuffer(buffer); - resolve(result); - } catch (ex) { - err = ex; - reject(err); - } finally { - if (callback) callback(err, result); - } - } - - if (Buffer.isBuffer(fileNameOrBuffer)) { - return tryParseBuffer(fileNameOrBuffer); - } - fs.readFile(fileNameOrBuffer, function (err, data) { - if (err) { - reject(err); - return callback(err); - } - tryParseBuffer(data); - }); - }); -}; - -const parseBuffer = exports.parseBuffer = function (buffer) { - // check header - const header = buffer.slice(0, 'bplist'.length).toString('utf8'); - if (header !== 'bplist') { - throw new Error("Invalid binary plist. Expected 'bplist' at offset 0."); - } - - // Handle trailer, last 32 bytes of the file - const trailer = buffer.slice(buffer.length - 32, buffer.length); - // 6 null bytes (index 0 to 5) - const offsetSize = trailer.readUInt8(6); - if (debug) { - console.log("offsetSize: " + offsetSize); - } - const objectRefSize = trailer.readUInt8(7); - if (debug) { - console.log("objectRefSize: " + objectRefSize); - } - const numObjects = readUInt64BE(trailer, 8); - if (debug) { - console.log("numObjects: " + numObjects); - } - const topObject = readUInt64BE(trailer, 16); - if (debug) { - console.log("topObject: " + topObject); - } - const offsetTableOffset = readUInt64BE(trailer, 24); - if (debug) { - console.log("offsetTableOffset: " + offsetTableOffset); - } - - if (numObjects > exports.maxObjectCount) { - throw new Error("maxObjectCount exceeded"); - } - - // Handle offset table - const offsetTable = []; - - for (let i = 0; i < numObjects; i++) { - const offsetBytes = buffer.slice(offsetTableOffset + i * offsetSize, offsetTableOffset + (i + 1) * offsetSize); - offsetTable[i] = readUInt(offsetBytes, 0); - if (debug) { - console.log("Offset for Object #" + i + " is " + offsetTable[i] + " [" + offsetTable[i].toString(16) + "]"); - } - } - - // Parses an object inside the currently parsed binary property list. - // For the format specification check - // - // Apple's binary property list parser implementation. - function parseObject(tableOffset) { - const offset = offsetTable[tableOffset]; - const type = buffer[offset]; - const objType = (type & 0xF0) >> 4; //First 4 bits - const objInfo = (type & 0x0F); //Second 4 bits - switch (objType) { - case 0x0: - return parseSimple(); - case 0x1: - return parseInteger(); - case 0x8: - return parseUID(); - case 0x2: - return parseReal(); - case 0x3: - return parseDate(); - case 0x4: - return parseData(); - case 0x5: // ASCII - return parsePlistString(); - case 0x6: // UTF-16 - return parsePlistString(true); - case 0xA: - return parseArray(); - case 0xD: - return parseDictionary(); - default: - throw new Error("Unhandled type 0x" + objType.toString(16)); - } - - function parseSimple() { - //Simple - switch (objInfo) { - case 0x0: // null - return null; - case 0x8: // false - return false; - case 0x9: // true - return true; - case 0xF: // filler byte - return null; - default: - throw new Error("Unhandled simple type 0x" + objType.toString(16)); - } - } - - function bufferToHexString(buffer) { - let str = ''; - let i; - for (i = 0; i < buffer.length; i++) { - if (buffer[i] != 0x00) { - break; - } - } - for (; i < buffer.length; i++) { - const part = '00' + buffer[i].toString(16); - str += part.substr(part.length - 2); - } - return str; - } - - function parseInteger() { - const length = Math.pow(2, objInfo); - - if (objInfo == 0x4) { - const data = buffer.slice(offset + 1, offset + 1 + length); - const str = bufferToHexString(data); - return bigInt(str, 16); - } - if (objInfo == 0x3) { - return buffer.readInt32BE(offset + 1); - } - if (length < exports.maxObjectSize) { - return readUInt(buffer.slice(offset + 1, offset + 1 + length)); - } - throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available."); - } - - function parseUID() { - const length = objInfo + 1; - if (length < exports.maxObjectSize) { - return new UID(readUInt(buffer.slice(offset + 1, offset + 1 + length))); - } - throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available."); - } - - function parseReal() { - const length = Math.pow(2, objInfo); - if (length < exports.maxObjectSize) { - const realBuffer = buffer.slice(offset + 1, offset + 1 + length); - if (length === 4) { - return realBuffer.readFloatBE(0); - } - if (length === 8) { - return realBuffer.readDoubleBE(0); - } - } else { - throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available."); - } - } - - function parseDate() { - if (objInfo != 0x3) { - console.error("Unknown date type :" + objInfo + ". Parsing anyway..."); - } - const dateBuffer = buffer.slice(offset + 1, offset + 9); - return new Date(EPOCH + (1000 * dateBuffer.readDoubleBE(0))); - } - - function parseData() { - let dataoffset = 1; - let length = objInfo; - if (objInfo == 0xF) { - const int_type = buffer[offset + 1]; - const intType = (int_type & 0xF0) / 0x10; - if (intType != 0x1) { - console.error("0x4: UNEXPECTED LENGTH-INT TYPE! " + intType); - } - const intInfo = int_type & 0x0F; - const intLength = Math.pow(2, intInfo); - dataoffset = 2 + intLength; - if (intLength < 3) { - length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); - } else { - length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); - } - } - if (length < exports.maxObjectSize) { - return buffer.slice(offset + dataoffset, offset + dataoffset + length); - } - throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available."); - } - - function parsePlistString (isUtf16) { - isUtf16 = isUtf16 || 0; - let enc = "utf8"; - let length = objInfo; - let stroffset = 1; - if (objInfo == 0xF) { - const int_type = buffer[offset + 1]; - const intType = (int_type & 0xF0) / 0x10; - if (intType != 0x1) { - console.err("UNEXPECTED LENGTH-INT TYPE! " + intType); - } - const intInfo = int_type & 0x0F; - const intLength = Math.pow(2, intInfo); - stroffset = 2 + intLength; - if (intLength < 3) { - length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); - } else { - length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); - } - } - // length is String length -> to get byte length multiply by 2, as 1 character takes 2 bytes in UTF-16 - length *= (isUtf16 + 1); - if (length < exports.maxObjectSize) { - let plistString = Buffer.from(buffer.slice(offset + stroffset, offset + stroffset + length)); - if (isUtf16) { - plistString = swapBytes(plistString); - enc = "ucs2"; - } - return plistString.toString(enc); - } - throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available."); - } - - function parseArray() { - let length = objInfo; - let arrayoffset = 1; - if (objInfo == 0xF) { - const int_type = buffer[offset + 1]; - const intType = (int_type & 0xF0) / 0x10; - if (intType != 0x1) { - console.error("0xa: UNEXPECTED LENGTH-INT TYPE! " + intType); - } - const intInfo = int_type & 0x0F; - const intLength = Math.pow(2, intInfo); - arrayoffset = 2 + intLength; - if (intLength < 3) { - length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); - } else { - length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); - } - } - if (length * objectRefSize > exports.maxObjectSize) { - throw new Error("To little heap space available!"); - } - const array = []; - for (let i = 0; i < length; i++) { - const objRef = readUInt(buffer.slice(offset + arrayoffset + i * objectRefSize, offset + arrayoffset + (i + 1) * objectRefSize)); - array[i] = parseObject(objRef); - } - return array; - } - - function parseDictionary() { - let length = objInfo; - let dictoffset = 1; - if (objInfo == 0xF) { - const int_type = buffer[offset + 1]; - const intType = (int_type & 0xF0) / 0x10; - if (intType != 0x1) { - console.error("0xD: UNEXPECTED LENGTH-INT TYPE! " + intType); - } - const intInfo = int_type & 0x0F; - const intLength = Math.pow(2, intInfo); - dictoffset = 2 + intLength; - if (intLength < 3) { - length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); - } else { - length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength)); - } - } - if (length * 2 * objectRefSize > exports.maxObjectSize) { - throw new Error("To little heap space available!"); - } - if (debug) { - console.log("Parsing dictionary #" + tableOffset); - } - const dict = {}; - for (let i = 0; i < length; i++) { - const keyRef = readUInt(buffer.slice(offset + dictoffset + i * objectRefSize, offset + dictoffset + (i + 1) * objectRefSize)); - const valRef = readUInt(buffer.slice(offset + dictoffset + (length * objectRefSize) + i * objectRefSize, offset + dictoffset + (length * objectRefSize) + (i + 1) * objectRefSize)); - const key = parseObject(keyRef); - const val = parseObject(valRef); - if (debug) { - console.log(" DICT #" + tableOffset + ": Mapped " + key + " to " + val); - } - dict[key] = val; - } - return dict; - } - } - - return [ parseObject(topObject) ]; -}; - -function readUInt(buffer, start) { - start = start || 0; - - let l = 0; - for (let i = start; i < buffer.length; i++) { - l <<= 8; - l |= buffer[i] & 0xFF; - } - return l; -} - -// we're just going to toss the high order bits because javascript doesn't have 64-bit ints -function readUInt64BE(buffer, start) { - const data = buffer.slice(start, start + 8); - return data.readUInt32BE(4, 8); -} - -function swapBytes(buffer) { - const len = buffer.length; - for (let i = 0; i < len; i += 2) { - const a = buffer[i]; - buffer[i] = buffer[i+1]; - buffer[i+1] = a; - } - return buffer; -} - -}).call(this)}).call(this,_dereq_("buffer").Buffer) - -},{"big-integer":14,"buffer":20,"fs":19}],16:[function(_dereq_,module,exports){ - -},{}],17:[function(_dereq_,module,exports){ -(function (process,Buffer){(function (){ -'use strict'; -/* eslint camelcase: "off" */ - -var assert = _dereq_('assert'); - -var Zstream = _dereq_('pako/lib/zlib/zstream'); -var zlib_deflate = _dereq_('pako/lib/zlib/deflate.js'); -var zlib_inflate = _dereq_('pako/lib/zlib/inflate.js'); -var constants = _dereq_('pako/lib/zlib/constants'); - -for (var key in constants) { - exports[key] = constants[key]; -} - -// zlib modes -exports.NONE = 0; -exports.DEFLATE = 1; -exports.INFLATE = 2; -exports.GZIP = 3; -exports.GUNZIP = 4; -exports.DEFLATERAW = 5; -exports.INFLATERAW = 6; -exports.UNZIP = 7; - -var GZIP_HEADER_ID1 = 0x1f; -var GZIP_HEADER_ID2 = 0x8b; - -/** - * Emulate Node's zlib C++ layer for use by the JS layer in index.js - */ -function Zlib(mode) { - if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) { - throw new TypeError('Bad argument'); - } - - this.dictionary = null; - this.err = 0; - this.flush = 0; - this.init_done = false; - this.level = 0; - this.memLevel = 0; - this.mode = mode; - this.strategy = 0; - this.windowBits = 0; - this.write_in_progress = false; - this.pending_close = false; - this.gzip_id_bytes_read = 0; -} - -Zlib.prototype.close = function () { - if (this.write_in_progress) { - this.pending_close = true; - return; - } - - this.pending_close = false; - - assert(this.init_done, 'close before init'); - assert(this.mode <= exports.UNZIP); - - if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) { - zlib_deflate.deflateEnd(this.strm); - } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) { - zlib_inflate.inflateEnd(this.strm); - } - - this.mode = exports.NONE; - - this.dictionary = null; -}; - -Zlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) { - return this._write(true, flush, input, in_off, in_len, out, out_off, out_len); -}; - -Zlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) { - return this._write(false, flush, input, in_off, in_len, out, out_off, out_len); -}; - -Zlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) { - assert.equal(arguments.length, 8); - - assert(this.init_done, 'write before init'); - assert(this.mode !== exports.NONE, 'already finalized'); - assert.equal(false, this.write_in_progress, 'write already in progress'); - assert.equal(false, this.pending_close, 'close is pending'); - - this.write_in_progress = true; - - assert.equal(false, flush === undefined, 'must provide flush value'); - - this.write_in_progress = true; - - if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) { - throw new Error('Invalid flush value'); - } - - if (input == null) { - input = Buffer.alloc(0); - in_len = 0; - in_off = 0; - } - - this.strm.avail_in = in_len; - this.strm.input = input; - this.strm.next_in = in_off; - this.strm.avail_out = out_len; - this.strm.output = out; - this.strm.next_out = out_off; - this.flush = flush; - - if (!async) { - // sync version - this._process(); - - if (this._checkError()) { - return this._afterSync(); - } - return; - } - - // async version - var self = this; - process.nextTick(function () { - self._process(); - self._after(); - }); - - return this; -}; - -Zlib.prototype._afterSync = function () { - var avail_out = this.strm.avail_out; - var avail_in = this.strm.avail_in; - - this.write_in_progress = false; - - return [avail_in, avail_out]; -}; - -Zlib.prototype._process = function () { - var next_expected_header_byte = null; - - // If the avail_out is left at 0, then it means that it ran out - // of room. If there was avail_out left over, then it means - // that all of the input was consumed. - switch (this.mode) { - case exports.DEFLATE: - case exports.GZIP: - case exports.DEFLATERAW: - this.err = zlib_deflate.deflate(this.strm, this.flush); - break; - case exports.UNZIP: - if (this.strm.avail_in > 0) { - next_expected_header_byte = this.strm.next_in; - } - - switch (this.gzip_id_bytes_read) { - case 0: - if (next_expected_header_byte === null) { - break; - } - - if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) { - this.gzip_id_bytes_read = 1; - next_expected_header_byte++; - - if (this.strm.avail_in === 1) { - // The only available byte was already read. - break; - } - } else { - this.mode = exports.INFLATE; - break; - } - - // fallthrough - case 1: - if (next_expected_header_byte === null) { - break; - } - - if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) { - this.gzip_id_bytes_read = 2; - this.mode = exports.GUNZIP; - } else { - // There is no actual difference between INFLATE and INFLATERAW - // (after initialization). - this.mode = exports.INFLATE; - } - - break; - default: - throw new Error('invalid number of gzip magic number bytes read'); - } - - // fallthrough - case exports.INFLATE: - case exports.GUNZIP: - case exports.INFLATERAW: - this.err = zlib_inflate.inflate(this.strm, this.flush - - // If data was encoded with dictionary - );if (this.err === exports.Z_NEED_DICT && this.dictionary) { - // Load it - this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary); - if (this.err === exports.Z_OK) { - // And try to decode again - this.err = zlib_inflate.inflate(this.strm, this.flush); - } else if (this.err === exports.Z_DATA_ERROR) { - // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR. - // Make it possible for After() to tell a bad dictionary from bad - // input. - this.err = exports.Z_NEED_DICT; - } - } - while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) { - // Bytes remain in input buffer. Perhaps this is another compressed - // member in the same archive, or just trailing garbage. - // Trailing zero bytes are okay, though, since they are frequently - // used for padding. - - this.reset(); - this.err = zlib_inflate.inflate(this.strm, this.flush); - } - break; - default: - throw new Error('Unknown mode ' + this.mode); - } -}; - -Zlib.prototype._checkError = function () { - // Acceptable error states depend on the type of zlib stream. - switch (this.err) { - case exports.Z_OK: - case exports.Z_BUF_ERROR: - if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) { - this._error('unexpected end of file'); - return false; - } - break; - case exports.Z_STREAM_END: - // normal statuses, not fatal - break; - case exports.Z_NEED_DICT: - if (this.dictionary == null) { - this._error('Missing dictionary'); - } else { - this._error('Bad dictionary'); - } - return false; - default: - // something else. - this._error('Zlib error'); - return false; - } - - return true; -}; - -Zlib.prototype._after = function () { - if (!this._checkError()) { - return; - } - - var avail_out = this.strm.avail_out; - var avail_in = this.strm.avail_in; - - this.write_in_progress = false; - - // call the write() cb - this.callback(avail_in, avail_out); - - if (this.pending_close) { - this.close(); - } -}; - -Zlib.prototype._error = function (message) { - if (this.strm.msg) { - message = this.strm.msg; - } - this.onerror(message, this.err - - // no hope of rescue. - );this.write_in_progress = false; - if (this.pending_close) { - this.close(); - } -}; - -Zlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) { - assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])'); - - assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits'); - assert(level >= -1 && level <= 9, 'invalid compression level'); - - assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel'); - - assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy'); - - this._init(level, windowBits, memLevel, strategy, dictionary); - this._setDictionary(); -}; - -Zlib.prototype.params = function () { - throw new Error('deflateParams Not supported'); -}; - -Zlib.prototype.reset = function () { - this._reset(); - this._setDictionary(); -}; - -Zlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) { - this.level = level; - this.windowBits = windowBits; - this.memLevel = memLevel; - this.strategy = strategy; - - this.flush = exports.Z_NO_FLUSH; - - this.err = exports.Z_OK; - - if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) { - this.windowBits += 16; - } - - if (this.mode === exports.UNZIP) { - this.windowBits += 32; - } - - if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) { - this.windowBits = -1 * this.windowBits; - } - - this.strm = new Zstream(); - - switch (this.mode) { - case exports.DEFLATE: - case exports.GZIP: - case exports.DEFLATERAW: - this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy); - break; - case exports.INFLATE: - case exports.GUNZIP: - case exports.INFLATERAW: - case exports.UNZIP: - this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits); - break; - default: - throw new Error('Unknown mode ' + this.mode); - } - - if (this.err !== exports.Z_OK) { - this._error('Init error'); - } - - this.dictionary = dictionary; - - this.write_in_progress = false; - this.init_done = true; -}; - -Zlib.prototype._setDictionary = function () { - if (this.dictionary == null) { - return; - } - - this.err = exports.Z_OK; - - switch (this.mode) { - case exports.DEFLATE: - case exports.DEFLATERAW: - this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary); - break; - default: - break; - } - - if (this.err !== exports.Z_OK) { - this._error('Failed to set dictionary'); - } -}; - -Zlib.prototype._reset = function () { - this.err = exports.Z_OK; - - switch (this.mode) { - case exports.DEFLATE: - case exports.DEFLATERAW: - case exports.GZIP: - this.err = zlib_deflate.deflateReset(this.strm); - break; - case exports.INFLATE: - case exports.INFLATERAW: - case exports.GUNZIP: - this.err = zlib_inflate.inflateReset(this.strm); - break; - default: - break; - } - - if (this.err !== exports.Z_OK) { - this._error('Failed to reset stream'); - } -}; - -exports.Zlib = Zlib; -}).call(this)}).call(this,_dereq_('_process'),_dereq_("buffer").Buffer) - -},{"_process":78,"assert":9,"buffer":20,"pako/lib/zlib/constants":64,"pako/lib/zlib/deflate.js":66,"pako/lib/zlib/inflate.js":68,"pako/lib/zlib/zstream":72}],18:[function(_dereq_,module,exports){ -(function (process){(function (){ -'use strict'; - -var Buffer = _dereq_('buffer').Buffer; -var Transform = _dereq_('stream').Transform; -var binding = _dereq_('./binding'); -var util = _dereq_('util'); -var assert = _dereq_('assert').ok; -var kMaxLength = _dereq_('buffer').kMaxLength; -var kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes'; - -// zlib doesn't provide these, so kludge them in following the same -// const naming scheme zlib uses. -binding.Z_MIN_WINDOWBITS = 8; -binding.Z_MAX_WINDOWBITS = 15; -binding.Z_DEFAULT_WINDOWBITS = 15; - -// fewer than 64 bytes per chunk is stupid. -// technically it could work with as few as 8, but even 64 bytes -// is absurdly low. Usually a MB or more is best. -binding.Z_MIN_CHUNK = 64; -binding.Z_MAX_CHUNK = Infinity; -binding.Z_DEFAULT_CHUNK = 16 * 1024; - -binding.Z_MIN_MEMLEVEL = 1; -binding.Z_MAX_MEMLEVEL = 9; -binding.Z_DEFAULT_MEMLEVEL = 8; - -binding.Z_MIN_LEVEL = -1; -binding.Z_MAX_LEVEL = 9; -binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION; - -// expose all the zlib constants -var bkeys = Object.keys(binding); -for (var bk = 0; bk < bkeys.length; bk++) { - var bkey = bkeys[bk]; - if (bkey.match(/^Z/)) { - Object.defineProperty(exports, bkey, { - enumerable: true, value: binding[bkey], writable: false - }); - } -} - -// translation table for return codes. -var codes = { - Z_OK: binding.Z_OK, - Z_STREAM_END: binding.Z_STREAM_END, - Z_NEED_DICT: binding.Z_NEED_DICT, - Z_ERRNO: binding.Z_ERRNO, - Z_STREAM_ERROR: binding.Z_STREAM_ERROR, - Z_DATA_ERROR: binding.Z_DATA_ERROR, - Z_MEM_ERROR: binding.Z_MEM_ERROR, - Z_BUF_ERROR: binding.Z_BUF_ERROR, - Z_VERSION_ERROR: binding.Z_VERSION_ERROR -}; - -var ckeys = Object.keys(codes); -for (var ck = 0; ck < ckeys.length; ck++) { - var ckey = ckeys[ck]; - codes[codes[ckey]] = ckey; -} - -Object.defineProperty(exports, 'codes', { - enumerable: true, value: Object.freeze(codes), writable: false -}); - -exports.Deflate = Deflate; -exports.Inflate = Inflate; -exports.Gzip = Gzip; -exports.Gunzip = Gunzip; -exports.DeflateRaw = DeflateRaw; -exports.InflateRaw = InflateRaw; -exports.Unzip = Unzip; - -exports.createDeflate = function (o) { - return new Deflate(o); -}; - -exports.createInflate = function (o) { - return new Inflate(o); -}; - -exports.createDeflateRaw = function (o) { - return new DeflateRaw(o); -}; - -exports.createInflateRaw = function (o) { - return new InflateRaw(o); -}; - -exports.createGzip = function (o) { - return new Gzip(o); -}; - -exports.createGunzip = function (o) { - return new Gunzip(o); -}; - -exports.createUnzip = function (o) { - return new Unzip(o); -}; - -// Convenience methods. -// compress/decompress a string or buffer in one step. -exports.deflate = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new Deflate(opts), buffer, callback); -}; - -exports.deflateSync = function (buffer, opts) { - return zlibBufferSync(new Deflate(opts), buffer); -}; - -exports.gzip = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new Gzip(opts), buffer, callback); -}; - -exports.gzipSync = function (buffer, opts) { - return zlibBufferSync(new Gzip(opts), buffer); -}; - -exports.deflateRaw = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new DeflateRaw(opts), buffer, callback); -}; - -exports.deflateRawSync = function (buffer, opts) { - return zlibBufferSync(new DeflateRaw(opts), buffer); -}; - -exports.unzip = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new Unzip(opts), buffer, callback); -}; - -exports.unzipSync = function (buffer, opts) { - return zlibBufferSync(new Unzip(opts), buffer); -}; - -exports.inflate = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new Inflate(opts), buffer, callback); -}; - -exports.inflateSync = function (buffer, opts) { - return zlibBufferSync(new Inflate(opts), buffer); -}; - -exports.gunzip = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new Gunzip(opts), buffer, callback); -}; - -exports.gunzipSync = function (buffer, opts) { - return zlibBufferSync(new Gunzip(opts), buffer); -}; - -exports.inflateRaw = function (buffer, opts, callback) { - if (typeof opts === 'function') { - callback = opts; - opts = {}; - } - return zlibBuffer(new InflateRaw(opts), buffer, callback); -}; - -exports.inflateRawSync = function (buffer, opts) { - return zlibBufferSync(new InflateRaw(opts), buffer); -}; - -function zlibBuffer(engine, buffer, callback) { - var buffers = []; - var nread = 0; - - engine.on('error', onError); - engine.on('end', onEnd); - - engine.end(buffer); - flow(); - - function flow() { - var chunk; - while (null !== (chunk = engine.read())) { - buffers.push(chunk); - nread += chunk.length; - } - engine.once('readable', flow); - } - - function onError(err) { - engine.removeListener('end', onEnd); - engine.removeListener('readable', flow); - callback(err); - } - - function onEnd() { - var buf; - var err = null; - - if (nread >= kMaxLength) { - err = new RangeError(kRangeErrorMessage); - } else { - buf = Buffer.concat(buffers, nread); - } - - buffers = []; - engine.close(); - callback(err, buf); - } -} - -function zlibBufferSync(engine, buffer) { - if (typeof buffer === 'string') buffer = Buffer.from(buffer); - - if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer'); - - var flushFlag = engine._finishFlushFlag; - - return engine._processChunk(buffer, flushFlag); -} - -// generic zlib -// minimal 2-byte header -function Deflate(opts) { - if (!(this instanceof Deflate)) return new Deflate(opts); - Zlib.call(this, opts, binding.DEFLATE); -} - -function Inflate(opts) { - if (!(this instanceof Inflate)) return new Inflate(opts); - Zlib.call(this, opts, binding.INFLATE); -} - -// gzip - bigger header, same deflate compression -function Gzip(opts) { - if (!(this instanceof Gzip)) return new Gzip(opts); - Zlib.call(this, opts, binding.GZIP); -} - -function Gunzip(opts) { - if (!(this instanceof Gunzip)) return new Gunzip(opts); - Zlib.call(this, opts, binding.GUNZIP); -} - -// raw - no header -function DeflateRaw(opts) { - if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts); - Zlib.call(this, opts, binding.DEFLATERAW); -} - -function InflateRaw(opts) { - if (!(this instanceof InflateRaw)) return new InflateRaw(opts); - Zlib.call(this, opts, binding.INFLATERAW); -} - -// auto-detect header. -function Unzip(opts) { - if (!(this instanceof Unzip)) return new Unzip(opts); - Zlib.call(this, opts, binding.UNZIP); -} - -function isValidFlushFlag(flag) { - return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK; -} - -// the Zlib class they all inherit from -// This thing manages the queue of requests, and returns -// true or false if there is anything in the queue when -// you call the .write() method. - -function Zlib(opts, mode) { - var _this = this; - - this._opts = opts = opts || {}; - this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK; - - Transform.call(this, opts); - - if (opts.flush && !isValidFlushFlag(opts.flush)) { - throw new Error('Invalid flush flag: ' + opts.flush); - } - if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) { - throw new Error('Invalid flush flag: ' + opts.finishFlush); - } - - this._flushFlag = opts.flush || binding.Z_NO_FLUSH; - this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH; - - if (opts.chunkSize) { - if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) { - throw new Error('Invalid chunk size: ' + opts.chunkSize); - } - } - - if (opts.windowBits) { - if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) { - throw new Error('Invalid windowBits: ' + opts.windowBits); - } - } - - if (opts.level) { - if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) { - throw new Error('Invalid compression level: ' + opts.level); - } - } - - if (opts.memLevel) { - if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) { - throw new Error('Invalid memLevel: ' + opts.memLevel); - } - } - - if (opts.strategy) { - if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) { - throw new Error('Invalid strategy: ' + opts.strategy); - } - } - - if (opts.dictionary) { - if (!Buffer.isBuffer(opts.dictionary)) { - throw new Error('Invalid dictionary: it should be a Buffer instance'); - } - } - - this._handle = new binding.Zlib(mode); - - var self = this; - this._hadError = false; - this._handle.onerror = function (message, errno) { - // there is no way to cleanly recover. - // continuing only obscures problems. - _close(self); - self._hadError = true; - - var error = new Error(message); - error.errno = errno; - error.code = exports.codes[errno]; - self.emit('error', error); - }; - - var level = exports.Z_DEFAULT_COMPRESSION; - if (typeof opts.level === 'number') level = opts.level; - - var strategy = exports.Z_DEFAULT_STRATEGY; - if (typeof opts.strategy === 'number') strategy = opts.strategy; - - this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary); - - this._buffer = Buffer.allocUnsafe(this._chunkSize); - this._offset = 0; - this._level = level; - this._strategy = strategy; - - this.once('end', this.close); - - Object.defineProperty(this, '_closed', { - get: function () { - return !_this._handle; - }, - configurable: true, - enumerable: true - }); -} - -util.inherits(Zlib, Transform); - -Zlib.prototype.params = function (level, strategy, callback) { - if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) { - throw new RangeError('Invalid compression level: ' + level); - } - if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) { - throw new TypeError('Invalid strategy: ' + strategy); - } - - if (this._level !== level || this._strategy !== strategy) { - var self = this; - this.flush(binding.Z_SYNC_FLUSH, function () { - assert(self._handle, 'zlib binding closed'); - self._handle.params(level, strategy); - if (!self._hadError) { - self._level = level; - self._strategy = strategy; - if (callback) callback(); - } - }); - } else { - process.nextTick(callback); - } -}; - -Zlib.prototype.reset = function () { - assert(this._handle, 'zlib binding closed'); - return this._handle.reset(); -}; - -// This is the _flush function called by the transform class, -// internally, when the last chunk has been written. -Zlib.prototype._flush = function (callback) { - this._transform(Buffer.alloc(0), '', callback); -}; - -Zlib.prototype.flush = function (kind, callback) { - var _this2 = this; - - var ws = this._writableState; - - if (typeof kind === 'function' || kind === undefined && !callback) { - callback = kind; - kind = binding.Z_FULL_FLUSH; - } - - if (ws.ended) { - if (callback) process.nextTick(callback); - } else if (ws.ending) { - if (callback) this.once('end', callback); - } else if (ws.needDrain) { - if (callback) { - this.once('drain', function () { - return _this2.flush(kind, callback); - }); - } - } else { - this._flushFlag = kind; - this.write(Buffer.alloc(0), '', callback); - } -}; - -Zlib.prototype.close = function (callback) { - _close(this, callback); - process.nextTick(emitCloseNT, this); -}; - -function _close(engine, callback) { - if (callback) process.nextTick(callback); - - // Caller may invoke .close after a zlib error (which will null _handle). - if (!engine._handle) return; - - engine._handle.close(); - engine._handle = null; -} - -function emitCloseNT(self) { - self.emit('close'); -} - -Zlib.prototype._transform = function (chunk, encoding, cb) { - var flushFlag; - var ws = this._writableState; - var ending = ws.ending || ws.ended; - var last = ending && (!chunk || ws.length === chunk.length); - - if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input')); - - if (!this._handle) return cb(new Error('zlib binding closed')); - - // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag - // (or whatever flag was provided using opts.finishFlush). - // If it's explicitly flushing at some other time, then we use - // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression - // goodness. - if (last) flushFlag = this._finishFlushFlag;else { - flushFlag = this._flushFlag; - // once we've flushed the last of the queue, stop flushing and - // go back to the normal behavior. - if (chunk.length >= ws.length) { - this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH; - } - } - - this._processChunk(chunk, flushFlag, cb); -}; - -Zlib.prototype._processChunk = function (chunk, flushFlag, cb) { - var availInBefore = chunk && chunk.length; - var availOutBefore = this._chunkSize - this._offset; - var inOff = 0; - - var self = this; - - var async = typeof cb === 'function'; - - if (!async) { - var buffers = []; - var nread = 0; - - var error; - this.on('error', function (er) { - error = er; - }); - - assert(this._handle, 'zlib binding closed'); - do { - var res = this._handle.writeSync(flushFlag, chunk, // in - inOff, // in_off - availInBefore, // in_len - this._buffer, // out - this._offset, //out_off - availOutBefore); // out_len - } while (!this._hadError && callback(res[0], res[1])); - - if (this._hadError) { - throw error; - } - - if (nread >= kMaxLength) { - _close(this); - throw new RangeError(kRangeErrorMessage); - } - - var buf = Buffer.concat(buffers, nread); - _close(this); - - return buf; - } - - assert(this._handle, 'zlib binding closed'); - var req = this._handle.write(flushFlag, chunk, // in - inOff, // in_off - availInBefore, // in_len - this._buffer, // out - this._offset, //out_off - availOutBefore); // out_len - - req.buffer = chunk; - req.callback = callback; - - function callback(availInAfter, availOutAfter) { - // When the callback is used in an async write, the callback's - // context is the `req` object that was created. The req object - // is === this._handle, and that's why it's important to null - // out the values after they are done being used. `this._handle` - // can stay in memory longer than the callback and buffer are needed. - if (this) { - this.buffer = null; - this.callback = null; - } - - if (self._hadError) return; - - var have = availOutBefore - availOutAfter; - assert(have >= 0, 'have should not go down'); - - if (have > 0) { - var out = self._buffer.slice(self._offset, self._offset + have); - self._offset += have; - // serve some output to the consumer. - if (async) { - self.push(out); - } else { - buffers.push(out); - nread += out.length; - } - } - - // exhausted the output buffer, or used all the input create a new one. - if (availOutAfter === 0 || self._offset >= self._chunkSize) { - availOutBefore = self._chunkSize; - self._offset = 0; - self._buffer = Buffer.allocUnsafe(self._chunkSize); - } - - if (availOutAfter === 0) { - // Not actually done. Need to reprocess. - // Also, update the availInBefore to the availInAfter value, - // so that if we have to hit it a third (fourth, etc.) time, - // it'll have the correct byte counts. - inOff += availInBefore - availInAfter; - availInBefore = availInAfter; - - if (!async) return true; - - var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize); - newReq.callback = callback; // this same function - newReq.buffer = chunk; - return; - } - - if (!async) return false; - - // finished with the chunk. - cb(); - } -}; - -util.inherits(Deflate, Zlib); -util.inherits(Inflate, Zlib); -util.inherits(Gzip, Zlib); -util.inherits(Gunzip, Zlib); -util.inherits(DeflateRaw, Zlib); -util.inherits(InflateRaw, Zlib); -util.inherits(Unzip, Zlib); -}).call(this)}).call(this,_dereq_('_process')) - -},{"./binding":17,"_process":78,"assert":9,"buffer":20,"stream":94,"util":102}],19:[function(_dereq_,module,exports){ -arguments[4][16][0].apply(exports,arguments) -},{"dup":16}],20:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - -'use strict' - -var base64 = _dereq_('base64-js') -var ieee754 = _dereq_('ieee754') - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 - -var K_MAX_LENGTH = 0x7fffffff -exports.kMaxLength = K_MAX_LENGTH - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() - -if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && - typeof console.error === 'function') { - console.error( - 'This browser lacks typed array (Uint8Array) support which is required by ' + - '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' - ) -} - -function typedArraySupport () { - // Can typed array instances can be augmented? - try { - var arr = new Uint8Array(1) - arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } - return arr.foo() === 42 - } catch (e) { - return false - } -} - -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.buffer - } -}) - -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.byteOffset - } -}) - -function createBuffer (length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"') - } - // Return an augmented `Uint8Array` instance - var buf = new Uint8Array(length) - buf.__proto__ = Buffer.prototype - return buf -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ) - } - return allocUnsafe(arg) - } - return from(arg, encodingOrOffset, length) -} - -// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 -if (typeof Symbol !== 'undefined' && Symbol.species != null && - Buffer[Symbol.species] === Buffer) { - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true, - enumerable: false, - writable: false - }) -} - -Buffer.poolSize = 8192 // not used by this implementation - -function from (value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - if (ArrayBuffer.isView(value)) { - return fromArrayLike(value) - } - - if (value == null) { - throw TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) - } - - if (isInstance(value, ArrayBuffer) || - (value && isInstance(value.buffer, ArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'number') { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ) - } - - var valueOf = value.valueOf && value.valueOf() - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length) - } - - var b = fromObject(value) - if (b) return b - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && - typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from( - value[Symbol.toPrimitive]('string'), encodingOrOffset, length - ) - } - - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length) -} - -// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 -Buffer.prototype.__proto__ = Uint8Array.prototype -Buffer.__proto__ = Uint8Array - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number') - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } -} - -function alloc (size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(size).fill(fill, encoding) - : createBuffer(size).fill(fill) - } - return createBuffer(size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding) -} - -function allocUnsafe (size) { - assertSize(size) - return createBuffer(size < 0 ? 0 : checked(size) | 0) -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size) -} -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size) -} - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - - var length = byteLength(string, encoding) | 0 - var buf = createBuffer(length) - - var actual = buf.write(string, encoding) - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual) - } - - return buf -} - -function fromArrayLike (array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0 - var buf = createBuffer(length) - for (var i = 0; i < length; i += 1) { - buf[i] = array[i] & 255 - } - return buf -} - -function fromArrayBuffer (array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds') - } - - var buf - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array) - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset) - } else { - buf = new Uint8Array(array, byteOffset, length) - } - - // Return an augmented `Uint8Array` instance - buf.__proto__ = Buffer.prototype - return buf -} - -function fromObject (obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0 - var buf = createBuffer(len) - - if (buf.length === 0) { - return buf - } - - obj.copy(buf, 0, 0, len) - return buf - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0) - } - return fromArrayLike(obj) - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data) - } -} - -function checked (length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return b != null && b._isBuffer === true && - b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false -} - -Buffer.compare = function compare (a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ) - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } - - var buffer = Buffer.allocUnsafe(length) - var pos = 0 - for (i = 0; i < list.length; ++i) { - var buf = list[i] - if (isInstance(buf, Uint8Array)) { - buf = Buffer.from(buf) - } - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos) - pos += buf.length - } - return buffer -} - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + - 'Received type ' + typeof string - ) - } - - var len = string.length - var mustMatch = (arguments.length > 2 && arguments[2] === true) - if (!mustMatch && len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 - } - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - var loweredCase = false - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0 - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -Buffer.prototype._isBuffer = true - -function swap (b, n, m) { - var i = b[n] - b[n] = b[m] - b[m] = i -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1) - } - return this -} - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this -} - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) - } - return this -} - -Buffer.prototype.toString = function toString () { - var length = this.length - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.toLocaleString = Buffer.prototype.toString - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() - if (this.length > max) str += ' ... ' - return '' -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength) - } - if (!Buffer.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. ' + - 'Received type ' + (typeof target) - ) - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 - - if (this === target) return 0 - - var x = thisEnd - thisStart - var y = end - start - var len = Math.min(x, y) - - var thisCopy = this.slice(thisStart, thisEnd) - var targetCopy = target.slice(start, end) - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1) - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1 - var arrLength = arr.length - var valLength = val.length - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i - if (dir) { - var foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - var found = true - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -} - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - var strLen = string.length - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (numberIsNaN(parsed)) return i - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0 - if (isFinite(length)) { - length = length >>> 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] - - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; ++i) { - out += toHex(buf[i]) - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf = this.subarray(start, end) - // Return an augmented `Uint8Array` instance - newBuf.__proto__ = Buffer.prototype - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('Index out of range') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end) - } else if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (var i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start] - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ) - } - - return len -} - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - if (val.length === 1) { - var code = val.charCodeAt(0) - if ((encoding === 'utf8' && code < 128) || - encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code - } - } - } else if (typeof val === 'number') { - val = val & 255 - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 - - if (!val) val = 0 - - var i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : Buffer.from(val, encoding) - var len = bytes.length - if (len === 0) { - throw new TypeError('The value "' + val + - '" is invalid for argument "value"') - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] - } - } - - return this -} - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g - -function base64clean (str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0] - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = str.trim().replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - // valid lead - leadSurrogate = codePoint - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function isInstance (obj, type) { - return obj instanceof type || - (obj != null && obj.constructor != null && obj.constructor.name != null && - obj.constructor.name === type.name) -} -function numberIsNaN (obj) { - // For IE11 support - return obj !== obj // eslint-disable-line no-self-compare -} - -}).call(this)}).call(this,_dereq_("buffer").Buffer) - -},{"base64-js":13,"buffer":20,"ieee754":52}],21:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -/*! - * Copyright 2008 Fair Oaks Labs, Inc. - * All rights reserved. - */ - -// Utility object: Encode/Decode C-style binary primitives to/from octet arrays -function BufferPack() { - // Module-level (private) variables - var el, bBE = false, m = this; - - // Raw byte arrays - m._DeArray = function (a, p, l) { - return [a.slice(p,p+l)]; - }; - m._EnArray = function (a, p, l, v) { - for (var i = 0; i < l; a[p+i] = v[i]?v[i]:0, i++); - }; - - // ASCII characters - m._DeChar = function (a, p) { - return String.fromCharCode(a[p]); - }; - m._EnChar = function (a, p, v) { - a[p] = v.charCodeAt(0); - }; - - // Little-endian (un)signed N-byte integers - m._DeInt = function (a, p) { - var lsb = bBE?(el.len-1):0, nsb = bBE?-1:1, stop = lsb+nsb*el.len, rv, i, f; - for (rv = 0, i = lsb, f = 1; i != stop; rv+=(a[p+i]*f), i+=nsb, f*=256); - if (el.bSigned && (rv & Math.pow(2, el.len*8-1))) { - rv -= Math.pow(2, el.len*8); - } - return rv; - }; - m._EnInt = function (a, p, v) { - var lsb = bBE?(el.len-1):0, nsb = bBE?-1:1, stop = lsb+nsb*el.len, i; - v = (vel.max)?el.max:v; - for (i = lsb; i != stop; a[p+i]=v&0xff, i+=nsb, v>>=8); - }; - - // ASCII character strings - m._DeString = function (a, p, l) { - for (var rv = new Array(l), i = 0; i < l; rv[i] = String.fromCharCode(a[p+i]), i++); - return rv.join(''); - }; - m._EnString = function (a, p, l, v) { - for (var t, i = 0; i < l; a[p+i] = (t=v.charCodeAt(i))?t:0, i++); - }; - - // ASCII character strings null terminated - m._DeNullString = function (a, p, l, v) { - var str = m._DeString(a, p, l, v); - return str.substring(0, str.length - 1); - }; - - // Little-endian N-bit IEEE 754 floating point - m._De754 = function (a, p) { - var s, e, m, i, d, nBits, mLen, eLen, eBias, eMax; - mLen = el.mLen, eLen = el.len*8-el.mLen-1, eMax = (1<>1; - - i = bBE?0:(el.len-1); d = bBE?1:-1; s = a[p+i]; i+=d; nBits = -7; - for (e = s&((1<<(-nBits))-1), s>>=(-nBits), nBits += eLen; nBits > 0; e=e*256+a[p+i], i+=d, nBits-=8); - for (m = e&((1<<(-nBits))-1), e>>=(-nBits), nBits += mLen; nBits > 0; m=m*256+a[p+i], i+=d, nBits-=8); - - switch (e) { - case 0: - // Zero, or denormalized number - e = 1-eBias; - break; - case eMax: - // NaN, or +/-Infinity - return m?NaN:((s?-1:1)*Infinity); - default: - // Normalized number - m = m + Math.pow(2, mLen); - e = e - eBias; - break; - } - return (s?-1:1) * m * Math.pow(2, e-mLen); - }; - m._En754 = function (a, p, v) { - var s, e, m, i, d, c, mLen, eLen, eBias, eMax; - mLen = el.mLen, eLen = el.len*8-el.mLen-1, eMax = (1<>1; - - s = v<0?1:0; - v = Math.abs(v); - if (isNaN(v) || (v == Infinity)) { - m = isNaN(v)?1:0; - e = eMax; - } else { - e = Math.floor(Math.log(v)/Math.LN2); // Calculate log2 of the value - - if (v*(c = Math.pow(2, -e)) < 1) { - e--; c*=2; // Math.log() isn't 100% reliable - } - - // Round by adding 1/2 the significand's LSD - if (e+eBias >= 1) { - v += el.rt/c; // Normalized: mLen significand digits - } else { - v += el.rt*Math.pow(2, 1-eBias); // Denormalized: <= mLen significand digits - } - - if (v*c >= 2) { - e++; c/=2; // Rounding can increment the exponent - } - - if (e+eBias >= eMax) { - // Overflow - m = 0; - e = eMax; - } else if (e+eBias >= 1) { - // Normalized - term order matters, as Math.pow(2, 52-e) and v*Math.pow(2, 52) can overflow - m = (v*c-1)*Math.pow(2, mLen); - e = e + eBias; - } else { - // Denormalized - also catches the '0' case, somewhat by chance - m = v*Math.pow(2, eBias-1)*Math.pow(2, mLen); - e = 0; - } - } - - for (i = bBE?(el.len-1):0, d=bBE?-1:1; mLen >= 8; a[p+i]=m&0xff, i+=d, m/=256, mLen-=8); - for (e=(e< 0; a[p+i]=e&0xff, i+=d, e/=256, eLen-=8); - a[p+i-d] |= s*128; - }; - - // Class data - m._sPattern = '(\\d+)?([AxcbBhHsSfdiIlL])(\\(([a-zA-Z0-9]+)\\))?'; - m._lenLut = {'A': 1, 'x': 1, 'c': 1, 'b': 1, 'B': 1, 'h': 2, 'H': 2, 's': 1, - 'S': 1, 'f': 4, 'd': 8, 'i': 4, 'I': 4, 'l': 4, 'L': 4}; - m._elLut = {'A': {en: m._EnArray, de: m._DeArray}, - 's': {en: m._EnString, de: m._DeString}, - 'S': {en: m._EnString, de: m._DeNullString}, - 'c': {en: m._EnChar, de: m._DeChar}, - 'b': {en: m._EnInt, de: m._DeInt, len: 1, bSigned: true, min: -Math.pow(2, 7), max: Math.pow(2, 7) - 1}, - 'B': {en: m._EnInt, de: m._DeInt, len: 1, bSigned: false, min: 0, max: Math.pow(2, 8) - 1}, - 'h': {en: m._EnInt, de: m._DeInt, len: 2, bSigned: true, min: -Math.pow(2, 15), max: Math.pow(2, 15) - 1}, - 'H': {en: m._EnInt, de: m._DeInt, len: 2, bSigned: false, min: 0, max: Math.pow(2, 16) - 1}, - 'i': {en: m._EnInt, de: m._DeInt, len: 4, bSigned: true, min: -Math.pow(2, 31), max: Math.pow(2, 31) - 1}, - 'I': {en: m._EnInt, de: m._DeInt, len: 4, bSigned: false, min: 0, max: Math.pow(2, 32) - 1}, - 'l': {en: m._EnInt, de: m._DeInt, len: 4, bSigned: true, min: -Math.pow(2, 31), max: Math.pow(2, 31) - 1}, - 'L': {en: m._EnInt, de: m._DeInt, len: 4, bSigned: false, min: 0, max: Math.pow(2, 32) - 1}, - 'f': {en: m._En754, de: m._De754, len: 4, mLen: 23, rt: Math.pow(2, -24) - Math.pow(2, -77)}, - 'd': {en: m._En754, de: m._De754, len: 8, mLen: 52, rt: 0}}; - - // Unpack a series of n elements of size s from array a at offset p with fxn - m._UnpackSeries = function (n, s, a, p) { - for (var fxn = el.de, rv = [], i = 0; i < n; rv.push(fxn(a, p+i*s)), i++); - return rv; - }; - - // Pack a series of n elements of size s from array v at offset i to array a at offset p with fxn - m._PackSeries = function (n, s, a, p, v, i) { - for (var fxn = el.en, o = 0; o < n; fxn(a, p+o*s, v[i+o]), o++); - }; - - m._zip = function (keys, values) { - var result = {}; - - for (var i = 0; i < keys.length; i++) { - result[keys[i]] = values[i]; - } - - return result; - } - - // Unpack the octet array a, beginning at offset p, according to the fmt string - m.unpack = function (fmt, a, p) { - // Set the private bBE flag based on the format string - assume big-endianness - bBE = (fmt.charAt(0) != '<'); - - p = p?p:0; - var re = new RegExp(this._sPattern, 'g'); - var m; - var n; - var s; - var rk = []; - var rv = []; - - while (m = re.exec(fmt)) { - n = ((m[1]==undefined)||(m[1]==''))?1:parseInt(m[1]); - - if(m[2] === 'S') { // Null term string support - n = 0; // Need to deal with empty null term strings - while(a[p + n] !== 0) { - n++; - } - n++; // Add one for null byte - } - - s = this._lenLut[m[2]]; - - if ((p + n*s) > a.length) { - return undefined; - } - - switch (m[2]) { - case 'A': case 's': case 'S': - rv.push(this._elLut[m[2]].de(a, p, n)); - break; - case 'c': case 'b': case 'B': case 'h': case 'H': - case 'i': case 'I': case 'l': case 'L': case 'f': case 'd': - el = this._elLut[m[2]]; - rv.push(this._UnpackSeries(n, s, a, p)); - break; - } - - rk.push(m[4]); // Push key on to array - - p += n*s; - } - - rv = Array.prototype.concat.apply([], rv) - - if(rk.indexOf(undefined) !== -1) { - return rv; - } else { - return this._zip(rk, rv); - } - }; - - // Pack the supplied values into the octet array a, beginning at offset p, according to the fmt string - m.packTo = function (fmt, a, p, values) { - // Set the private bBE flag based on the format string - assume big-endianness - bBE = (fmt.charAt(0) != '<'); - - var re = new RegExp(this._sPattern, 'g'); - var m; - var n; - var s; - var i = 0; - var j; - - while (m = re.exec(fmt)) { - n = ((m[1]==undefined)||(m[1]==''))?1:parseInt(m[1]); - - // Null term string support - if(m[2] === 'S') { - n = values[i].length + 1; // Add one for null byte - } - - s = this._lenLut[m[2]]; - - if ((p + n*s) > a.length) { - return false; - } - - switch (m[2]) { - case 'A': case 's': case 'S': - if ((i + 1) > values.length) { return false; } - this._elLut[m[2]].en(a, p, n, values[i]); - i += 1; - break; - case 'c': case 'b': case 'B': case 'h': case 'H': - case 'i': case 'I': case 'l': case 'L': case 'f': case 'd': - el = this._elLut[m[2]]; - if ((i + n) > values.length) { return false; } - this._PackSeries(n, s, a, p, values, i); - i += n; - break; - case 'x': - for (j = 0; j < n; j++) { a[p+j] = 0; } - break; - } - p += n*s; - } - - return a; - }; - - // Pack the supplied values into a new octet array, according to the fmt string - m.pack = function (fmt, values) { - return this.packTo(fmt, new Buffer(this.calcLength(fmt, values)), 0, values); - }; - - // Determine the number of bytes represented by the format string - m.calcLength = function (format, values) { - var re = new RegExp(this._sPattern, 'g'), m, sum = 0, i = 0; - while (m = re.exec(format)) { - var n = (((m[1]==undefined)||(m[1]==''))?1:parseInt(m[1])) * this._lenLut[m[2]]; - - if(m[2] === 'S') { - n = values[i].length + 1; // Add one for null byte - } - - sum += n; - i++; - } - return sum; - }; -}; - -module.exports = new BufferPack(); - -}).call(this)}).call(this,_dereq_("buffer").Buffer) - -},{"buffer":20}],22:[function(_dereq_,module,exports){ -/* - Copyright 2013-2014 Daniel Wirtz - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -/** - * @license bytebuffer.js (c) 2015 Daniel Wirtz - * Backing buffer: ArrayBuffer, Accessor: Uint8Array - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/bytebuffer.js for details - */ -(function(global, factory) { - - /* AMD */ if (typeof define === 'function' && define["amd"]) - define(["long"], factory); - /* CommonJS */ else if (typeof _dereq_ === 'function' && typeof module === "object" && module && module["exports"]) - module['exports'] = (function() { - var Long; try { Long = _dereq_("long"); } catch (e) {} - return factory(Long); - })(); - /* Global */ else - (global["dcodeIO"] = global["dcodeIO"] || {})["ByteBuffer"] = factory(global["dcodeIO"]["Long"]); - -})(this, function(Long) { - "use strict"; - - /** - * Constructs a new ByteBuffer. - * @class The swiss army knife for binary data in JavaScript. - * @exports ByteBuffer - * @constructor - * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}. - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @expose - */ - var ByteBuffer = function(capacity, littleEndian, noAssert) { - if (typeof capacity === 'undefined') - capacity = ByteBuffer.DEFAULT_CAPACITY; - if (typeof littleEndian === 'undefined') - littleEndian = ByteBuffer.DEFAULT_ENDIAN; - if (typeof noAssert === 'undefined') - noAssert = ByteBuffer.DEFAULT_NOASSERT; - if (!noAssert) { - capacity = capacity | 0; - if (capacity < 0) - throw RangeError("Illegal capacity"); - littleEndian = !!littleEndian; - noAssert = !!noAssert; - } - - /** - * Backing ArrayBuffer. - * @type {!ArrayBuffer} - * @expose - */ - this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity); - - /** - * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`. - * @type {?Uint8Array} - * @expose - */ - this.view = capacity === 0 ? null : new Uint8Array(this.buffer); - - /** - * Absolute read/write offset. - * @type {number} - * @expose - * @see ByteBuffer#flip - * @see ByteBuffer#clear - */ - this.offset = 0; - - /** - * Marked offset. - * @type {number} - * @expose - * @see ByteBuffer#mark - * @see ByteBuffer#reset - */ - this.markedOffset = -1; - - /** - * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation. - * @type {number} - * @expose - * @see ByteBuffer#flip - * @see ByteBuffer#clear - */ - this.limit = capacity; - - /** - * Whether to use little endian byte order, defaults to `false` for big endian. - * @type {boolean} - * @expose - */ - this.littleEndian = littleEndian; - - /** - * Whether to skip assertions of offsets and values, defaults to `false`. - * @type {boolean} - * @expose - */ - this.noAssert = noAssert; - }; - - /** - * ByteBuffer version. - * @type {string} - * @const - * @expose - */ - ByteBuffer.VERSION = "5.0.1"; - - /** - * Little endian constant that can be used instead of its boolean value. Evaluates to `true`. - * @type {boolean} - * @const - * @expose - */ - ByteBuffer.LITTLE_ENDIAN = true; - - /** - * Big endian constant that can be used instead of its boolean value. Evaluates to `false`. - * @type {boolean} - * @const - * @expose - */ - ByteBuffer.BIG_ENDIAN = false; - - /** - * Default initial capacity of `16`. - * @type {number} - * @expose - */ - ByteBuffer.DEFAULT_CAPACITY = 16; - - /** - * Default endianess of `false` for big endian. - * @type {boolean} - * @expose - */ - ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN; - - /** - * Default no assertions flag of `false`. - * @type {boolean} - * @expose - */ - ByteBuffer.DEFAULT_NOASSERT = false; - - /** - * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded - * and int64 support is not available. - * @type {?Long} - * @const - * @see https://github.com/dcodeIO/long.js - * @expose - */ - ByteBuffer.Long = Long || null; - - /** - * @alias ByteBuffer.prototype - * @inner - */ - var ByteBufferPrototype = ByteBuffer.prototype; - - /** - * An indicator used to reliably determine if an object is a ByteBuffer or not. - * @type {boolean} - * @const - * @expose - * @private - */ - ByteBufferPrototype.__isByteBuffer__; - - Object.defineProperty(ByteBufferPrototype, "__isByteBuffer__", { - value: true, - enumerable: false, - configurable: false - }); - - // helpers - - /** - * @type {!ArrayBuffer} - * @inner - */ - var EMPTY_BUFFER = new ArrayBuffer(0); - - /** - * String.fromCharCode reference for compile-time renaming. - * @type {function(...number):string} - * @inner - */ - var stringFromCharCode = String.fromCharCode; - - /** - * Creates a source function for a string. - * @param {string} s String to read from - * @returns {function():number|null} Source function returning the next char code respectively `null` if there are - * no more characters left. - * @throws {TypeError} If the argument is invalid - * @inner - */ - function stringSource(s) { - var i=0; return function() { - return i < s.length ? s.charCodeAt(i++) : null; - }; - } - - /** - * Creates a destination function for a string. - * @returns {function(number=):undefined|string} Destination function successively called with the next char code. - * Returns the final string when called without arguments. - * @inner - */ - function stringDestination() { - var cs = [], ps = []; return function() { - if (arguments.length === 0) - return ps.join('')+stringFromCharCode.apply(String, cs); - if (cs.length + arguments.length > 1024) - ps.push(stringFromCharCode.apply(String, cs)), - cs.length = 0; - Array.prototype.push.apply(cs, arguments); - }; - } - - /** - * Gets the accessor type. - * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes) - * @expose - */ - ByteBuffer.accessor = function() { - return Uint8Array; - }; - /** - * Allocates a new ByteBuffer backed by a buffer of the specified capacity. - * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}. - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} - * @expose - */ - ByteBuffer.allocate = function(capacity, littleEndian, noAssert) { - return new ByteBuffer(capacity, littleEndian, noAssert); - }; - - /** - * Concatenates multiple ByteBuffers into one. - * @param {!Array.} buffers Buffers to concatenate - * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string ("base64", "hex", "binary", - * defaults to "utf8") - * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults - * to {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} Concatenated ByteBuffer - * @expose - */ - ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) { - if (typeof encoding === 'boolean' || typeof encoding !== 'string') { - noAssert = littleEndian; - littleEndian = encoding; - encoding = undefined; - } - var capacity = 0; - for (var i=0, k=buffers.length, length; i 0) capacity += length; - } - if (capacity === 0) - return new ByteBuffer(0, littleEndian, noAssert); - var bb = new ByteBuffer(capacity, littleEndian, noAssert), - bi; - i=0; while (i} buffer Anything that can be wrapped - * @param {(string|boolean)=} encoding String encoding if `buffer` is a string ("base64", "hex", "binary", defaults to - * "utf8") - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer` - * @expose - */ - ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) { - if (typeof encoding !== 'string') { - noAssert = littleEndian; - littleEndian = encoding; - encoding = undefined; - } - if (typeof buffer === 'string') { - if (typeof encoding === 'undefined') - encoding = "utf8"; - switch (encoding) { - case "base64": - return ByteBuffer.fromBase64(buffer, littleEndian); - case "hex": - return ByteBuffer.fromHex(buffer, littleEndian); - case "binary": - return ByteBuffer.fromBinary(buffer, littleEndian); - case "utf8": - return ByteBuffer.fromUTF8(buffer, littleEndian); - case "debug": - return ByteBuffer.fromDebug(buffer, littleEndian); - default: - throw Error("Unsupported encoding: "+encoding); - } - } - if (buffer === null || typeof buffer !== 'object') - throw TypeError("Illegal buffer"); - var bb; - if (ByteBuffer.isByteBuffer(buffer)) { - bb = ByteBufferPrototype.clone.call(buffer); - bb.markedOffset = -1; - return bb; - } - if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array - bb = new ByteBuffer(0, littleEndian, noAssert); - if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER - bb.buffer = buffer.buffer; - bb.offset = buffer.byteOffset; - bb.limit = buffer.byteOffset + buffer.byteLength; - bb.view = new Uint8Array(buffer.buffer); - } - } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer - bb = new ByteBuffer(0, littleEndian, noAssert); - if (buffer.byteLength > 0) { - bb.buffer = buffer; - bb.offset = 0; - bb.limit = buffer.byteLength; - bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null; - } - } else if (Object.prototype.toString.call(buffer) === "[object Array]") { // Create from octets - bb = new ByteBuffer(buffer.length, littleEndian, noAssert); - bb.limit = buffer.length; - for (var i=0; i} value Array of booleans to write - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted. - * @returns {!ByteBuffer} - * @expose - */ - ByteBufferPrototype.writeBitSet = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (!(value instanceof Array)) - throw TypeError("Illegal BitSet: Not an array"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - - var start = offset, - bits = value.length, - bytes = (bits >> 3), - bit = 0, - k; - - offset += this.writeVarint32(bits,offset); - - while(bytes--) { - k = (!!value[bit++] & 1) | - ((!!value[bit++] & 1) << 1) | - ((!!value[bit++] & 1) << 2) | - ((!!value[bit++] & 1) << 3) | - ((!!value[bit++] & 1) << 4) | - ((!!value[bit++] & 1) << 5) | - ((!!value[bit++] & 1) << 6) | - ((!!value[bit++] & 1) << 7); - this.writeByte(k,offset++); - } - - if(bit < bits) { - var m = 0; k = 0; - while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++)); - this.writeByte(k,offset++); - } - - if (relative) { - this.offset = offset; - return this; - } - return offset - start; - } - - /** - * Reads a BitSet as an array of booleans. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted. - * @returns {Array - * @expose - */ - ByteBufferPrototype.readBitSet = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - - var ret = this.readVarint32(offset), - bits = ret.value, - bytes = (bits >> 3), - bit = 0, - value = [], - k; - - offset += ret.length; - - while(bytes--) { - k = this.readByte(offset++); - value[bit++] = !!(k & 0x01); - value[bit++] = !!(k & 0x02); - value[bit++] = !!(k & 0x04); - value[bit++] = !!(k & 0x08); - value[bit++] = !!(k & 0x10); - value[bit++] = !!(k & 0x20); - value[bit++] = !!(k & 0x40); - value[bit++] = !!(k & 0x80); - } - - if(bit < bits) { - var m = 0; - k = this.readByte(offset++); - while(bit < bits) value[bit++] = !!((k >> (m++)) & 1); - } - - if (relative) { - this.offset = offset; - } - return value; - } - /** - * Reads the specified number of bytes. - * @param {number} length Number of bytes to read - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted. - * @returns {!ByteBuffer} - * @expose - */ - ByteBufferPrototype.readBytes = function(length, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + length > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+length+") <= "+this.buffer.byteLength); - } - var slice = this.slice(offset, offset + length); - if (relative) this.offset += length; - return slice; - }; - - /** - * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}. - * @function - * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets - * will be modified according to the performed read operation. - * @param {(string|number)=} encoding Encoding if `data` is a string ("base64", "hex", "binary", defaults to "utf8") - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeBytes = ByteBufferPrototype.append; - - // types/ints/int8 - - /** - * Writes an 8bit signed integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeInt8 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value |= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 1; - var capacity0 = this.buffer.byteLength; - if (offset > capacity0) - this.resize((capacity0 *= 2) > offset ? capacity0 : offset); - offset -= 1; - this.view[offset] = value; - if (relative) this.offset += 1; - return this; - }; - - /** - * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8; - - /** - * Reads an 8bit signed integer. - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readInt8 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - var value = this.view[offset]; - if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed - if (relative) this.offset += 1; - return value; - }; - - /** - * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}. - * @function - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8; - - /** - * Writes an 8bit unsigned integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeUint8 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value >>>= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 1; - var capacity1 = this.buffer.byteLength; - if (offset > capacity1) - this.resize((capacity1 *= 2) > offset ? capacity1 : offset); - offset -= 1; - this.view[offset] = value; - if (relative) this.offset += 1; - return this; - }; - - /** - * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8; - - /** - * Reads an 8bit unsigned integer. - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readUint8 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - var value = this.view[offset]; - if (relative) this.offset += 1; - return value; - }; - - /** - * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}. - * @function - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8; - - // types/ints/int16 - - /** - * Writes a 16bit signed integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @throws {TypeError} If `offset` or `value` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.writeInt16 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value |= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 2; - var capacity2 = this.buffer.byteLength; - if (offset > capacity2) - this.resize((capacity2 *= 2) > offset ? capacity2 : offset); - offset -= 2; - if (this.littleEndian) { - this.view[offset+1] = (value & 0xFF00) >>> 8; - this.view[offset ] = value & 0x00FF; - } else { - this.view[offset] = (value & 0xFF00) >>> 8; - this.view[offset+1] = value & 0x00FF; - } - if (relative) this.offset += 2; - return this; - }; - - /** - * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @throws {TypeError} If `offset` or `value` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16; - - /** - * Reads a 16bit signed integer. - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @returns {number} Value read - * @throws {TypeError} If `offset` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.readInt16 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 2 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+2+") <= "+this.buffer.byteLength); - } - var value = 0; - if (this.littleEndian) { - value = this.view[offset ]; - value |= this.view[offset+1] << 8; - } else { - value = this.view[offset ] << 8; - value |= this.view[offset+1]; - } - if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed - if (relative) this.offset += 2; - return value; - }; - - /** - * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}. - * @function - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @returns {number} Value read - * @throws {TypeError} If `offset` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16; - - /** - * Writes a 16bit unsigned integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @throws {TypeError} If `offset` or `value` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.writeUint16 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value >>>= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 2; - var capacity3 = this.buffer.byteLength; - if (offset > capacity3) - this.resize((capacity3 *= 2) > offset ? capacity3 : offset); - offset -= 2; - if (this.littleEndian) { - this.view[offset+1] = (value & 0xFF00) >>> 8; - this.view[offset ] = value & 0x00FF; - } else { - this.view[offset] = (value & 0xFF00) >>> 8; - this.view[offset+1] = value & 0x00FF; - } - if (relative) this.offset += 2; - return this; - }; - - /** - * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @throws {TypeError} If `offset` or `value` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16; - - /** - * Reads a 16bit unsigned integer. - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @returns {number} Value read - * @throws {TypeError} If `offset` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.readUint16 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 2 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+2+") <= "+this.buffer.byteLength); - } - var value = 0; - if (this.littleEndian) { - value = this.view[offset ]; - value |= this.view[offset+1] << 8; - } else { - value = this.view[offset ] << 8; - value |= this.view[offset+1]; - } - if (relative) this.offset += 2; - return value; - }; - - /** - * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}. - * @function - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted. - * @returns {number} Value read - * @throws {TypeError} If `offset` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @expose - */ - ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16; - - // types/ints/int32 - - /** - * Writes a 32bit signed integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @expose - */ - ByteBufferPrototype.writeInt32 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value |= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 4; - var capacity4 = this.buffer.byteLength; - if (offset > capacity4) - this.resize((capacity4 *= 2) > offset ? capacity4 : offset); - offset -= 4; - if (this.littleEndian) { - this.view[offset+3] = (value >>> 24) & 0xFF; - this.view[offset+2] = (value >>> 16) & 0xFF; - this.view[offset+1] = (value >>> 8) & 0xFF; - this.view[offset ] = value & 0xFF; - } else { - this.view[offset ] = (value >>> 24) & 0xFF; - this.view[offset+1] = (value >>> 16) & 0xFF; - this.view[offset+2] = (value >>> 8) & 0xFF; - this.view[offset+3] = value & 0xFF; - } - if (relative) this.offset += 4; - return this; - }; - - /** - * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @expose - */ - ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32; - - /** - * Reads a 32bit signed integer. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readInt32 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 4 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); - } - var value = 0; - if (this.littleEndian) { - value = this.view[offset+2] << 16; - value |= this.view[offset+1] << 8; - value |= this.view[offset ]; - value += this.view[offset+3] << 24 >>> 0; - } else { - value = this.view[offset+1] << 16; - value |= this.view[offset+2] << 8; - value |= this.view[offset+3]; - value += this.view[offset ] << 24 >>> 0; - } - value |= 0; // Cast to signed - if (relative) this.offset += 4; - return value; - }; - - /** - * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}. - * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32; - - /** - * Writes a 32bit unsigned integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @expose - */ - ByteBufferPrototype.writeUint32 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value >>>= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 4; - var capacity5 = this.buffer.byteLength; - if (offset > capacity5) - this.resize((capacity5 *= 2) > offset ? capacity5 : offset); - offset -= 4; - if (this.littleEndian) { - this.view[offset+3] = (value >>> 24) & 0xFF; - this.view[offset+2] = (value >>> 16) & 0xFF; - this.view[offset+1] = (value >>> 8) & 0xFF; - this.view[offset ] = value & 0xFF; - } else { - this.view[offset ] = (value >>> 24) & 0xFF; - this.view[offset+1] = (value >>> 16) & 0xFF; - this.view[offset+2] = (value >>> 8) & 0xFF; - this.view[offset+3] = value & 0xFF; - } - if (relative) this.offset += 4; - return this; - }; - - /** - * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @expose - */ - ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32; - - /** - * Reads a 32bit unsigned integer. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readUint32 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 4 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); - } - var value = 0; - if (this.littleEndian) { - value = this.view[offset+2] << 16; - value |= this.view[offset+1] << 8; - value |= this.view[offset ]; - value += this.view[offset+3] << 24 >>> 0; - } else { - value = this.view[offset+1] << 16; - value |= this.view[offset+2] << 8; - value |= this.view[offset+3]; - value += this.view[offset ] << 24 >>> 0; - } - if (relative) this.offset += 4; - return value; - }; - - /** - * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}. - * @function - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} Value read - * @expose - */ - ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32; - - // types/ints/int64 - - if (Long) { - - /** - * Writes a 64bit signed integer. - * @param {number|!Long} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeInt64 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - else if (!(value && value instanceof Long)) - throw TypeError("Illegal value: "+value+" (not an integer or Long)"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - offset += 8; - var capacity6 = this.buffer.byteLength; - if (offset > capacity6) - this.resize((capacity6 *= 2) > offset ? capacity6 : offset); - offset -= 8; - var lo = value.low, - hi = value.high; - if (this.littleEndian) { - this.view[offset+3] = (lo >>> 24) & 0xFF; - this.view[offset+2] = (lo >>> 16) & 0xFF; - this.view[offset+1] = (lo >>> 8) & 0xFF; - this.view[offset ] = lo & 0xFF; - offset += 4; - this.view[offset+3] = (hi >>> 24) & 0xFF; - this.view[offset+2] = (hi >>> 16) & 0xFF; - this.view[offset+1] = (hi >>> 8) & 0xFF; - this.view[offset ] = hi & 0xFF; - } else { - this.view[offset ] = (hi >>> 24) & 0xFF; - this.view[offset+1] = (hi >>> 16) & 0xFF; - this.view[offset+2] = (hi >>> 8) & 0xFF; - this.view[offset+3] = hi & 0xFF; - offset += 4; - this.view[offset ] = (lo >>> 24) & 0xFF; - this.view[offset+1] = (lo >>> 16) & 0xFF; - this.view[offset+2] = (lo >>> 8) & 0xFF; - this.view[offset+3] = lo & 0xFF; - } - if (relative) this.offset += 8; - return this; - }; - - /** - * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}. - * @param {number|!Long} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64; - - /** - * Reads a 64bit signed integer. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!Long} - * @expose - */ - ByteBufferPrototype.readInt64 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 8 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+8+") <= "+this.buffer.byteLength); - } - var lo = 0, - hi = 0; - if (this.littleEndian) { - lo = this.view[offset+2] << 16; - lo |= this.view[offset+1] << 8; - lo |= this.view[offset ]; - lo += this.view[offset+3] << 24 >>> 0; - offset += 4; - hi = this.view[offset+2] << 16; - hi |= this.view[offset+1] << 8; - hi |= this.view[offset ]; - hi += this.view[offset+3] << 24 >>> 0; - } else { - hi = this.view[offset+1] << 16; - hi |= this.view[offset+2] << 8; - hi |= this.view[offset+3]; - hi += this.view[offset ] << 24 >>> 0; - offset += 4; - lo = this.view[offset+1] << 16; - lo |= this.view[offset+2] << 8; - lo |= this.view[offset+3]; - lo += this.view[offset ] << 24 >>> 0; - } - var value = new Long(lo, hi, false); - if (relative) this.offset += 8; - return value; - }; - - /** - * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!Long} - * @expose - */ - ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64; - - /** - * Writes a 64bit unsigned integer. - * @param {number|!Long} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeUint64 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - else if (!(value && value instanceof Long)) - throw TypeError("Illegal value: "+value+" (not an integer or Long)"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - offset += 8; - var capacity7 = this.buffer.byteLength; - if (offset > capacity7) - this.resize((capacity7 *= 2) > offset ? capacity7 : offset); - offset -= 8; - var lo = value.low, - hi = value.high; - if (this.littleEndian) { - this.view[offset+3] = (lo >>> 24) & 0xFF; - this.view[offset+2] = (lo >>> 16) & 0xFF; - this.view[offset+1] = (lo >>> 8) & 0xFF; - this.view[offset ] = lo & 0xFF; - offset += 4; - this.view[offset+3] = (hi >>> 24) & 0xFF; - this.view[offset+2] = (hi >>> 16) & 0xFF; - this.view[offset+1] = (hi >>> 8) & 0xFF; - this.view[offset ] = hi & 0xFF; - } else { - this.view[offset ] = (hi >>> 24) & 0xFF; - this.view[offset+1] = (hi >>> 16) & 0xFF; - this.view[offset+2] = (hi >>> 8) & 0xFF; - this.view[offset+3] = hi & 0xFF; - offset += 4; - this.view[offset ] = (lo >>> 24) & 0xFF; - this.view[offset+1] = (lo >>> 16) & 0xFF; - this.view[offset+2] = (lo >>> 8) & 0xFF; - this.view[offset+3] = lo & 0xFF; - } - if (relative) this.offset += 8; - return this; - }; - - /** - * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}. - * @function - * @param {number|!Long} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64; - - /** - * Reads a 64bit unsigned integer. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!Long} - * @expose - */ - ByteBufferPrototype.readUint64 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 8 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+8+") <= "+this.buffer.byteLength); - } - var lo = 0, - hi = 0; - if (this.littleEndian) { - lo = this.view[offset+2] << 16; - lo |= this.view[offset+1] << 8; - lo |= this.view[offset ]; - lo += this.view[offset+3] << 24 >>> 0; - offset += 4; - hi = this.view[offset+2] << 16; - hi |= this.view[offset+1] << 8; - hi |= this.view[offset ]; - hi += this.view[offset+3] << 24 >>> 0; - } else { - hi = this.view[offset+1] << 16; - hi |= this.view[offset+2] << 8; - hi |= this.view[offset+3]; - hi += this.view[offset ] << 24 >>> 0; - offset += 4; - lo = this.view[offset+1] << 16; - lo |= this.view[offset+2] << 8; - lo |= this.view[offset+3]; - lo += this.view[offset ] << 24 >>> 0; - } - var value = new Long(lo, hi, true); - if (relative) this.offset += 8; - return value; - }; - - /** - * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}. - * @function - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!Long} - * @expose - */ - ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64; - - } // Long - - - // types/floats/float32 - - /* - ieee754 - https://github.com/feross/ieee754 - - The MIT License (MIT) - - Copyright (c) Feross Aboukhadijeh - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - */ - - /** - * Reads an IEEE754 float from a byte array. - * @param {!Array} buffer - * @param {number} offset - * @param {boolean} isLE - * @param {number} mLen - * @param {number} nBytes - * @returns {number} - * @inner - */ - function ieee754_read(buffer, offset, isLE, mLen, nBytes) { - var e, m, - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - nBits = -7, - i = isLE ? (nBytes - 1) : 0, - d = isLE ? -1 : 1, - s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity); - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen); - } - - /** - * Writes an IEEE754 float to a byte array. - * @param {!Array} buffer - * @param {number} value - * @param {number} offset - * @param {boolean} isLE - * @param {number} mLen - * @param {number} nBytes - * @inner - */ - function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c, - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), - i = isLE ? 0 : (nBytes - 1), - d = isLE ? 1 : -1, - s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128; - } - - /** - * Writes a 32bit float. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeFloat32 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number') - throw TypeError("Illegal value: "+value+" (not a number)"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 4; - var capacity8 = this.buffer.byteLength; - if (offset > capacity8) - this.resize((capacity8 *= 2) > offset ? capacity8 : offset); - offset -= 4; - ieee754_write(this.view, value, offset, this.littleEndian, 23, 4); - if (relative) this.offset += 4; - return this; - }; - - /** - * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32; - - /** - * Reads a 32bit float. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} - * @expose - */ - ByteBufferPrototype.readFloat32 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 4 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); - } - var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4); - if (relative) this.offset += 4; - return value; - }; - - /** - * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}. - * @function - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted. - * @returns {number} - * @expose - */ - ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32; - - // types/floats/float64 - - /** - * Writes a 64bit float. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeFloat64 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number') - throw TypeError("Illegal value: "+value+" (not a number)"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - offset += 8; - var capacity9 = this.buffer.byteLength; - if (offset > capacity9) - this.resize((capacity9 *= 2) > offset ? capacity9 : offset); - offset -= 8; - ieee754_write(this.view, value, offset, this.littleEndian, 52, 8); - if (relative) this.offset += 8; - return this; - }; - - /** - * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}. - * @function - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64; - - /** - * Reads a 64bit float. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {number} - * @expose - */ - ByteBufferPrototype.readFloat64 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 8 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+8+") <= "+this.buffer.byteLength); - } - var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8); - if (relative) this.offset += 8; - return value; - }; - - /** - * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}. - * @function - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted. - * @returns {number} - * @expose - */ - ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64; - - - // types/varints/varint32 - - /** - * Maximum number of bytes required to store a 32bit base 128 variable-length integer. - * @type {number} - * @const - * @expose - */ - ByteBuffer.MAX_VARINT32_BYTES = 5; - - /** - * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer. - * @param {number} value Value to encode - * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES} - * @expose - */ - ByteBuffer.calculateVarint32 = function(value) { - // ref: src/google/protobuf/io/coded_stream.cc - value = value >>> 0; - if (value < 1 << 7 ) return 1; - else if (value < 1 << 14) return 2; - else if (value < 1 << 21) return 3; - else if (value < 1 << 28) return 4; - else return 5; - }; - - /** - * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding. - * @param {number} n Signed 32bit integer - * @returns {number} Unsigned zigzag encoded 32bit integer - * @expose - */ - ByteBuffer.zigZagEncode32 = function(n) { - return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h - }; - - /** - * Decodes a zigzag encoded signed 32bit integer. - * @param {number} n Unsigned zigzag encoded 32bit integer - * @returns {number} Signed 32bit integer - * @expose - */ - ByteBuffer.zigZagDecode32 = function(n) { - return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h - }; - - /** - * Writes a 32bit base 128 variable-length integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written - * @expose - */ - ByteBufferPrototype.writeVarint32 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value |= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - var size = ByteBuffer.calculateVarint32(value), - b; - offset += size; - var capacity10 = this.buffer.byteLength; - if (offset > capacity10) - this.resize((capacity10 *= 2) > offset ? capacity10 : offset); - offset -= size; - value >>>= 0; - while (value >= 0x80) { - b = (value & 0x7f) | 0x80; - this.view[offset++] = b; - value >>>= 7; - } - this.view[offset++] = value; - if (relative) { - this.offset = offset; - return this; - } - return size; - }; - - /** - * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer. - * @param {number} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written - * @expose - */ - ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) { - return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset); - }; - - /** - * Reads a 32bit base 128 variable-length integer. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read - * and the actual number of bytes read. - * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available - * to fully decode the varint. - * @expose - */ - ByteBufferPrototype.readVarint32 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - var c = 0, - value = 0 >>> 0, - b; - do { - if (!this.noAssert && offset > this.limit) { - var err = Error("Truncated"); - err['truncated'] = true; - throw err; - } - b = this.view[offset++]; - if (c < 5) - value |= (b & 0x7f) << (7*c); - ++c; - } while ((b & 0x80) !== 0); - value |= 0; - if (relative) { - this.offset = offset; - return value; - } - return { - "value": value, - "length": c - }; - }; - - /** - * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read - * and the actual number of bytes read. - * @throws {Error} If it's not a valid varint - * @expose - */ - ByteBufferPrototype.readVarint32ZigZag = function(offset) { - var val = this.readVarint32(offset); - if (typeof val === 'object') - val["value"] = ByteBuffer.zigZagDecode32(val["value"]); - else - val = ByteBuffer.zigZagDecode32(val); - return val; - }; - - // types/varints/varint64 - - if (Long) { - - /** - * Maximum number of bytes required to store a 64bit base 128 variable-length integer. - * @type {number} - * @const - * @expose - */ - ByteBuffer.MAX_VARINT64_BYTES = 10; - - /** - * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer. - * @param {number|!Long} value Value to encode - * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES} - * @expose - */ - ByteBuffer.calculateVarint64 = function(value) { - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - // ref: src/google/protobuf/io/coded_stream.cc - var part0 = value.toInt() >>> 0, - part1 = value.shiftRightUnsigned(28).toInt() >>> 0, - part2 = value.shiftRightUnsigned(56).toInt() >>> 0; - if (part2 == 0) { - if (part1 == 0) { - if (part0 < 1 << 14) - return part0 < 1 << 7 ? 1 : 2; - else - return part0 < 1 << 21 ? 3 : 4; - } else { - if (part1 < 1 << 14) - return part1 < 1 << 7 ? 5 : 6; - else - return part1 < 1 << 21 ? 7 : 8; - } - } else - return part2 < 1 << 7 ? 9 : 10; - }; - - /** - * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding. - * @param {number|!Long} value Signed long - * @returns {!Long} Unsigned zigzag encoded long - * @expose - */ - ByteBuffer.zigZagEncode64 = function(value) { - if (typeof value === 'number') - value = Long.fromNumber(value, false); - else if (typeof value === 'string') - value = Long.fromString(value, false); - else if (value.unsigned !== false) value = value.toSigned(); - // ref: src/google/protobuf/wire_format_lite.h - return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned(); - }; - - /** - * Decodes a zigzag encoded signed 64bit integer. - * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number - * @returns {!Long} Signed long - * @expose - */ - ByteBuffer.zigZagDecode64 = function(value) { - if (typeof value === 'number') - value = Long.fromNumber(value, false); - else if (typeof value === 'string') - value = Long.fromString(value, false); - else if (value.unsigned !== false) value = value.toSigned(); - // ref: src/google/protobuf/wire_format_lite.h - return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned(); - }; - - /** - * Writes a 64bit base 128 variable-length integer. - * @param {number|Long} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written. - * @expose - */ - ByteBufferPrototype.writeVarint64 = function(value, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof value === 'number') - value = Long.fromNumber(value); - else if (typeof value === 'string') - value = Long.fromString(value); - else if (!(value && value instanceof Long)) - throw TypeError("Illegal value: "+value+" (not an integer or Long)"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - if (typeof value === 'number') - value = Long.fromNumber(value, false); - else if (typeof value === 'string') - value = Long.fromString(value, false); - else if (value.unsigned !== false) value = value.toSigned(); - var size = ByteBuffer.calculateVarint64(value), - part0 = value.toInt() >>> 0, - part1 = value.shiftRightUnsigned(28).toInt() >>> 0, - part2 = value.shiftRightUnsigned(56).toInt() >>> 0; - offset += size; - var capacity11 = this.buffer.byteLength; - if (offset > capacity11) - this.resize((capacity11 *= 2) > offset ? capacity11 : offset); - offset -= size; - switch (size) { - case 10: this.view[offset+9] = (part2 >>> 7) & 0x01; - case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F; - case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F; - case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F; - case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F; - case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F; - case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F; - case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F; - case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F; - case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F; - } - if (relative) { - this.offset += size; - return this; - } else { - return size; - } - }; - - /** - * Writes a zig-zag encoded 64bit base 128 variable-length integer. - * @param {number|Long} value Value to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written. - * @expose - */ - ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) { - return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset); - }; - - /** - * Reads a 64bit base 128 variable-length integer. Requires Long.js. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and - * the actual number of bytes read. - * @throws {Error} If it's not a valid varint - * @expose - */ - ByteBufferPrototype.readVarint64 = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - // ref: src/google/protobuf/io/coded_stream.cc - var start = offset, - part0 = 0, - part1 = 0, - part2 = 0, - b = 0; - b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) { - b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) { - throw Error("Buffer overrun"); }}}}}}}}}} - var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false); - if (relative) { - this.offset = offset; - return value; - } else { - return { - 'value': value, - 'length': offset-start - }; - } - }; - - /** - * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and - * the actual number of bytes read. - * @throws {Error} If it's not a valid varint - * @expose - */ - ByteBufferPrototype.readVarint64ZigZag = function(offset) { - var val = this.readVarint64(offset); - if (val && val['value'] instanceof Long) - val["value"] = ByteBuffer.zigZagDecode64(val["value"]); - else - val = ByteBuffer.zigZagDecode64(val); - return val; - }; - - } // Long - - - // types/strings/cstring - - /** - * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL - * characters itself. - * @param {string} str String to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * contained in `str` + 1 if omitted. - * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written - * @expose - */ - ByteBufferPrototype.writeCString = function(str, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - var i, - k = str.length; - if (!this.noAssert) { - if (typeof str !== 'string') - throw TypeError("Illegal str: Not a string"); - for (i=0; i>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - // UTF8 strings do not contain zero bytes in between except for the zero character, so: - k = utfx.calculateUTF16asUTF8(stringSource(str))[1]; - offset += k+1; - var capacity12 = this.buffer.byteLength; - if (offset > capacity12) - this.resize((capacity12 *= 2) > offset ? capacity12 : offset); - offset -= k+1; - utfx.encodeUTF16toUTF8(stringSource(str), function(b) { - this.view[offset++] = b; - }.bind(this)); - this.view[offset++] = 0; - if (relative) { - this.offset = offset; - return this; - } - return k; - }; - - /** - * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters - * itself. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string - * read and the actual number of bytes read. - * @expose - */ - ByteBufferPrototype.readCString = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - var start = offset, - temp; - // UTF8 strings do not contain zero bytes in between except for the zero character itself, so: - var sd, b = -1; - utfx.decodeUTF8toUTF16(function() { - if (b === 0) return null; - if (offset >= this.limit) - throw RangeError("Illegal range: Truncated data, "+offset+" < "+this.limit); - b = this.view[offset++]; - return b === 0 ? null : b; - }.bind(this), sd = stringDestination(), true); - if (relative) { - this.offset = offset; - return sd(); - } else { - return { - "string": sd(), - "length": offset - start - }; - } - }; - - // types/strings/istring - - /** - * Writes a length as uint32 prefixed UTF8 encoded string. - * @param {string} str String to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written - * @expose - * @see ByteBuffer#writeVarint32 - */ - ByteBufferPrototype.writeIString = function(str, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof str !== 'string') - throw TypeError("Illegal str: Not a string"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - var start = offset, - k; - k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1]; - offset += 4+k; - var capacity13 = this.buffer.byteLength; - if (offset > capacity13) - this.resize((capacity13 *= 2) > offset ? capacity13 : offset); - offset -= 4+k; - if (this.littleEndian) { - this.view[offset+3] = (k >>> 24) & 0xFF; - this.view[offset+2] = (k >>> 16) & 0xFF; - this.view[offset+1] = (k >>> 8) & 0xFF; - this.view[offset ] = k & 0xFF; - } else { - this.view[offset ] = (k >>> 24) & 0xFF; - this.view[offset+1] = (k >>> 16) & 0xFF; - this.view[offset+2] = (k >>> 8) & 0xFF; - this.view[offset+3] = k & 0xFF; - } - offset += 4; - utfx.encodeUTF16toUTF8(stringSource(str), function(b) { - this.view[offset++] = b; - }.bind(this)); - if (offset !== start + 4 + k) - throw RangeError("Illegal range: Truncated data, "+offset+" == "+(offset+4+k)); - if (relative) { - this.offset = offset; - return this; - } - return offset - start; - }; - - /** - * Reads a length as uint32 prefixed UTF8 encoded string. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string - * read and the actual number of bytes read. - * @expose - * @see ByteBuffer#readVarint32 - */ - ByteBufferPrototype.readIString = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 4 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+4+") <= "+this.buffer.byteLength); - } - var start = offset; - var len = this.readUint32(offset); - var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4); - offset += str['length']; - if (relative) { - this.offset = offset; - return str['string']; - } else { - return { - 'string': str['string'], - 'length': offset - start - }; - } - }; - - // types/strings/utf8string - - /** - * Metrics representing number of UTF8 characters. Evaluates to `c`. - * @type {string} - * @const - * @expose - */ - ByteBuffer.METRICS_CHARS = 'c'; - - /** - * Metrics representing number of bytes. Evaluates to `b`. - * @type {string} - * @const - * @expose - */ - ByteBuffer.METRICS_BYTES = 'b'; - - /** - * Writes an UTF8 encoded string. - * @param {string} str String to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted. - * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written. - * @expose - */ - ByteBufferPrototype.writeUTF8String = function(str, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - var k; - var start = offset; - k = utfx.calculateUTF16asUTF8(stringSource(str))[1]; - offset += k; - var capacity14 = this.buffer.byteLength; - if (offset > capacity14) - this.resize((capacity14 *= 2) > offset ? capacity14 : offset); - offset -= k; - utfx.encodeUTF16toUTF8(stringSource(str), function(b) { - this.view[offset++] = b; - }.bind(this)); - if (relative) { - this.offset = offset; - return this; - } - return offset - start; - }; - - /** - * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}. - * @function - * @param {string} str String to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted. - * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written. - * @expose - */ - ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String; - - /** - * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's - * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF. - * @param {string} str String to calculate - * @returns {number} Number of UTF8 characters - * @expose - */ - ByteBuffer.calculateUTF8Chars = function(str) { - return utfx.calculateUTF16asUTF8(stringSource(str))[0]; - }; - - /** - * Calculates the number of UTF8 bytes of a string. - * @param {string} str String to calculate - * @returns {number} Number of UTF8 bytes - * @expose - */ - ByteBuffer.calculateUTF8Bytes = function(str) { - return utfx.calculateUTF16asUTF8(stringSource(str))[1]; - }; - - /** - * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}. - * @function - * @param {string} str String to calculate - * @returns {number} Number of UTF8 bytes - * @expose - */ - ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes; - - /** - * Reads an UTF8 encoded string. - * @param {number} length Number of characters or bytes to read. - * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to - * {@link ByteBuffer.METRICS_CHARS}. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string - * read and the actual number of bytes read. - * @expose - */ - ByteBufferPrototype.readUTF8String = function(length, metrics, offset) { - if (typeof metrics === 'number') { - offset = metrics; - metrics = undefined; - } - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS; - if (!this.noAssert) { - if (typeof length !== 'number' || length % 1 !== 0) - throw TypeError("Illegal length: "+length+" (not an integer)"); - length |= 0; - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - var i = 0, - start = offset, - sd; - if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser - sd = stringDestination(); - utfx.decodeUTF8(function() { - return i < length && offset < this.limit ? this.view[offset++] : null; - }.bind(this), function(cp) { - ++i; utfx.UTF8toUTF16(cp, sd); - }); - if (i !== length) - throw RangeError("Illegal range: Truncated data, "+i+" == "+length); - if (relative) { - this.offset = offset; - return sd(); - } else { - return { - "string": sd(), - "length": offset - start - }; - } - } else if (metrics === ByteBuffer.METRICS_BYTES) { - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + length > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+length+") <= "+this.buffer.byteLength); - } - var k = offset + length; - utfx.decodeUTF8toUTF16(function() { - return offset < k ? this.view[offset++] : null; - }.bind(this), sd = stringDestination(), this.noAssert); - if (offset !== k) - throw RangeError("Illegal range: Truncated data, "+offset+" == "+k); - if (relative) { - this.offset = offset; - return sd(); - } else { - return { - 'string': sd(), - 'length': offset - start - }; - } - } else - throw TypeError("Unsupported metrics: "+metrics); - }; - - /** - * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}. - * @function - * @param {number} length Number of characters or bytes to read - * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to - * {@link ByteBuffer.METRICS_CHARS}. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string - * read and the actual number of bytes read. - * @expose - */ - ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String; - - // types/strings/vstring - - /** - * Writes a length as varint32 prefixed UTF8 encoded string. - * @param {string} str String to write - * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written - * @expose - * @see ByteBuffer#writeVarint32 - */ - ByteBufferPrototype.writeVString = function(str, offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof str !== 'string') - throw TypeError("Illegal str: Not a string"); - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - var start = offset, - k, l; - k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1]; - l = ByteBuffer.calculateVarint32(k); - offset += l+k; - var capacity15 = this.buffer.byteLength; - if (offset > capacity15) - this.resize((capacity15 *= 2) > offset ? capacity15 : offset); - offset -= l+k; - offset += this.writeVarint32(k, offset); - utfx.encodeUTF16toUTF8(stringSource(str), function(b) { - this.view[offset++] = b; - }.bind(this)); - if (offset !== start+k+l) - throw RangeError("Illegal range: Truncated data, "+offset+" == "+(offset+k+l)); - if (relative) { - this.offset = offset; - return this; - } - return offset - start; - }; - - /** - * Reads a length as varint32 prefixed UTF8 encoded string. - * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string - * read and the actual number of bytes read. - * @expose - * @see ByteBuffer#readVarint32 - */ - ByteBufferPrototype.readVString = function(offset) { - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 1 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+1+") <= "+this.buffer.byteLength); - } - var start = offset; - var len = this.readVarint32(offset); - var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']); - offset += str['length']; - if (relative) { - this.offset = offset; - return str['string']; - } else { - return { - 'string': str['string'], - 'length': offset - start - }; - } - }; - - - /** - * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended - * data's length. - * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets - * will be modified according to the performed read operation. - * @param {(string|number)=} encoding Encoding if `data` is a string ("base64", "hex", "binary", defaults to "utf8") - * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. - * @returns {!ByteBuffer} this - * @expose - * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|` - * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|` - */ - ByteBufferPrototype.append = function(source, encoding, offset) { - if (typeof encoding === 'number' || typeof encoding !== 'string') { - offset = encoding; - encoding = undefined; - } - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - if (!(source instanceof ByteBuffer)) - source = ByteBuffer.wrap(source, encoding); - var length = source.limit - source.offset; - if (length <= 0) return this; // Nothing to append - offset += length; - var capacity16 = this.buffer.byteLength; - if (offset > capacity16) - this.resize((capacity16 *= 2) > offset ? capacity16 : offset); - offset -= length; - this.view.set(source.view.subarray(source.offset, source.limit), offset); - source.offset += length; - if (relative) this.offset += length; - return this; - }; - - /** - * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the - specified offset up to the length of this ByteBuffer's data. - * @param {!ByteBuffer} target Target ByteBuffer - * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * read if omitted. - * @returns {!ByteBuffer} this - * @expose - * @see ByteBuffer#append - */ - ByteBufferPrototype.appendTo = function(target, offset) { - target.append(this, offset); - return this; - }; - - /** - * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to - * disable them if your code already makes sure that everything is valid. - * @param {boolean} assert `true` to enable assertions, otherwise `false` - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.assert = function(assert) { - this.noAssert = !assert; - return this; - }; - - /** - * Gets the capacity of this ByteBuffer's backing buffer. - * @returns {number} Capacity of the backing buffer - * @expose - */ - ByteBufferPrototype.capacity = function() { - return this.buffer.byteLength; - }; - /** - * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the - * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.clear = function() { - this.offset = 0; - this.limit = this.buffer.byteLength; - this.markedOffset = -1; - return this; - }; - - /** - * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset}, - * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}. - * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false` - * @returns {!ByteBuffer} Cloned instance - * @expose - */ - ByteBufferPrototype.clone = function(copy) { - var bb = new ByteBuffer(0, this.littleEndian, this.noAssert); - if (copy) { - bb.buffer = new ArrayBuffer(this.buffer.byteLength); - bb.view = new Uint8Array(bb.buffer); - } else { - bb.buffer = this.buffer; - bb.view = this.view; - } - bb.offset = this.offset; - bb.markedOffset = this.markedOffset; - bb.limit = this.limit; - return bb; - }; - - /** - * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes - * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and - * adapt {@link ByteBuffer#markedOffset} to the same relative position if set. - * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset} - * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit} - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.compact = function(begin, end) { - if (typeof begin === 'undefined') begin = this.offset; - if (typeof end === 'undefined') end = this.limit; - if (!this.noAssert) { - if (typeof begin !== 'number' || begin % 1 !== 0) - throw TypeError("Illegal begin: Not an integer"); - begin >>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - if (begin === 0 && end === this.buffer.byteLength) - return this; // Already compacted - var len = end - begin; - if (len === 0) { - this.buffer = EMPTY_BUFFER; - this.view = null; - if (this.markedOffset >= 0) this.markedOffset -= begin; - this.offset = 0; - this.limit = 0; - return this; - } - var buffer = new ArrayBuffer(len); - var view = new Uint8Array(buffer); - view.set(this.view.subarray(begin, end)); - this.buffer = buffer; - this.view = view; - if (this.markedOffset >= 0) this.markedOffset -= begin; - this.offset = 0; - this.limit = len; - return this; - }; - - /** - * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and - * {@link ByteBuffer#limit}. - * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}. - * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}. - * @returns {!ByteBuffer} Copy - * @expose - */ - ByteBufferPrototype.copy = function(begin, end) { - if (typeof begin === 'undefined') begin = this.offset; - if (typeof end === 'undefined') end = this.limit; - if (!this.noAssert) { - if (typeof begin !== 'number' || begin % 1 !== 0) - throw TypeError("Illegal begin: Not an integer"); - begin >>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - if (begin === end) - return new ByteBuffer(0, this.littleEndian, this.noAssert); - var capacity = end - begin, - bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert); - bb.offset = 0; - bb.limit = capacity; - if (bb.markedOffset >= 0) bb.markedOffset -= begin; - this.copyTo(bb, 0, begin, end); - return bb; - }; - - /** - * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and - * {@link ByteBuffer#limit}. - * @param {!ByteBuffer} target Target ByteBuffer - * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset} - * by the number of bytes copied if omitted. - * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the - * number of bytes copied if omitted. - * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit} - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) { - var relative, - targetRelative; - if (!this.noAssert) { - if (!ByteBuffer.isByteBuffer(target)) - throw TypeError("Illegal target: Not a ByteBuffer"); - } - targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0; - sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0; - sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0; - - if (targetOffset < 0 || targetOffset > target.buffer.byteLength) - throw RangeError("Illegal target range: 0 <= "+targetOffset+" <= "+target.buffer.byteLength); - if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength) - throw RangeError("Illegal source range: 0 <= "+sourceOffset+" <= "+this.buffer.byteLength); - - var len = sourceLimit - sourceOffset; - if (len === 0) - return target; // Nothing to copy - - target.ensureCapacity(targetOffset + len); - - target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset); - - if (relative) this.offset += len; - if (targetRelative) target.offset += len; - - return this; - }; - - /** - * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the - * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity, - * the required capacity will be used instead. - * @param {number} capacity Required capacity - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.ensureCapacity = function(capacity) { - var current = this.buffer.byteLength; - if (current < capacity) - return this.resize((current *= 2) > capacity ? current : capacity); - return this; - }; - - /** - * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between - * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. - * @param {number|string} value Byte value to fill with. If given as a string, the first character is used. - * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes - * written if omitted. defaults to {@link ByteBuffer#offset}. - * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}. - * @returns {!ByteBuffer} this - * @expose - * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes - */ - ByteBufferPrototype.fill = function(value, begin, end) { - var relative = typeof begin === 'undefined'; - if (relative) begin = this.offset; - if (typeof value === 'string' && value.length > 0) - value = value.charCodeAt(0); - if (typeof begin === 'undefined') begin = this.offset; - if (typeof end === 'undefined') end = this.limit; - if (!this.noAssert) { - if (typeof value !== 'number' || value % 1 !== 0) - throw TypeError("Illegal value: "+value+" (not an integer)"); - value |= 0; - if (typeof begin !== 'number' || begin % 1 !== 0) - throw TypeError("Illegal begin: Not an integer"); - begin >>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - if (begin >= end) - return this; // Nothing to fill - while (begin < end) this.view[begin++] = value; - if (relative) this.offset = begin; - return this; - }; - - /** - * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and - * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.flip = function() { - this.limit = this.offset; - this.offset = 0; - return this; - }; - /** - * Marks an offset on this ByteBuffer to be used later. - * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}. - * @returns {!ByteBuffer} this - * @throws {TypeError} If `offset` is not a valid number - * @throws {RangeError} If `offset` is out of bounds - * @see ByteBuffer#reset - * @expose - */ - ByteBufferPrototype.mark = function(offset) { - offset = typeof offset === 'undefined' ? this.offset : offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - this.markedOffset = offset; - return this; - }; - /** - * Sets the byte order. - * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.order = function(littleEndian) { - if (!this.noAssert) { - if (typeof littleEndian !== 'boolean') - throw TypeError("Illegal littleEndian: Not a boolean"); - } - this.littleEndian = !!littleEndian; - return this; - }; - - /** - * Switches (to) little endian byte order. - * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.LE = function(littleEndian) { - this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true; - return this; - }; - - /** - * Switches (to) big endian byte order. - * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.BE = function(bigEndian) { - this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false; - return this; - }; - /** - * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the - * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer - * will be resized and its contents moved accordingly. - * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be - * modified according to the performed read operation. - * @param {(string|number)=} encoding Encoding if `data` is a string ("base64", "hex", "binary", defaults to "utf8") - * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes - * prepended if omitted. - * @returns {!ByteBuffer} this - * @expose - * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|` - * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|` - */ - ByteBufferPrototype.prepend = function(source, encoding, offset) { - if (typeof encoding === 'number' || typeof encoding !== 'string') { - offset = encoding; - encoding = undefined; - } - var relative = typeof offset === 'undefined'; - if (relative) offset = this.offset; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: "+offset+" (not an integer)"); - offset >>>= 0; - if (offset < 0 || offset + 0 > this.buffer.byteLength) - throw RangeError("Illegal offset: 0 <= "+offset+" (+"+0+") <= "+this.buffer.byteLength); - } - if (!(source instanceof ByteBuffer)) - source = ByteBuffer.wrap(source, encoding); - var len = source.limit - source.offset; - if (len <= 0) return this; // Nothing to prepend - var diff = len - offset; - if (diff > 0) { // Not enough space before offset, so resize + move - var buffer = new ArrayBuffer(this.buffer.byteLength + diff); - var view = new Uint8Array(buffer); - view.set(this.view.subarray(offset, this.buffer.byteLength), len); - this.buffer = buffer; - this.view = view; - this.offset += diff; - if (this.markedOffset >= 0) this.markedOffset += diff; - this.limit += diff; - offset += diff; - } else { - var arrayView = new Uint8Array(this.buffer); - } - this.view.set(source.view.subarray(source.offset, source.limit), offset - len); - - source.offset = source.limit; - if (relative) - this.offset -= len; - return this; - }; - - /** - * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the - * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer - * will be resized and its contents moved accordingly. - * @param {!ByteBuffer} target Target ByteBuffer - * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes - * prepended if omitted. - * @returns {!ByteBuffer} this - * @expose - * @see ByteBuffer#prepend - */ - ByteBufferPrototype.prependTo = function(target, offset) { - target.prepend(this, offset); - return this; - }; - /** - * Prints debug information about this ByteBuffer's contents. - * @param {function(string)=} out Output function to call, defaults to console.log - * @expose - */ - ByteBufferPrototype.printDebug = function(out) { - if (typeof out !== 'function') out = console.log.bind(console); - out( - this.toString()+"\n"+ - "-------------------------------------------------------------------\n"+ - this.toDebug(/* columns */ true) - ); - }; - - /** - * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and - * {@link ByteBuffer#limit}, so this returns `limit - offset`. - * @returns {number} Remaining readable bytes. May be negative if `offset > limit`. - * @expose - */ - ByteBufferPrototype.remaining = function() { - return this.limit - this.offset; - }; - /** - * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark} - * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been - * marked, sets `offset = 0`. - * @returns {!ByteBuffer} this - * @see ByteBuffer#mark - * @expose - */ - ByteBufferPrototype.reset = function() { - if (this.markedOffset >= 0) { - this.offset = this.markedOffset; - this.markedOffset = -1; - } else { - this.offset = 0; - } - return this; - }; - /** - * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that - * large or larger. - * @param {number} capacity Capacity required - * @returns {!ByteBuffer} this - * @throws {TypeError} If `capacity` is not a number - * @throws {RangeError} If `capacity < 0` - * @expose - */ - ByteBufferPrototype.resize = function(capacity) { - if (!this.noAssert) { - if (typeof capacity !== 'number' || capacity % 1 !== 0) - throw TypeError("Illegal capacity: "+capacity+" (not an integer)"); - capacity |= 0; - if (capacity < 0) - throw RangeError("Illegal capacity: 0 <= "+capacity); - } - if (this.buffer.byteLength < capacity) { - var buffer = new ArrayBuffer(capacity); - var view = new Uint8Array(buffer); - view.set(this.view); - this.buffer = buffer; - this.view = view; - } - return this; - }; - /** - * Reverses this ByteBuffer's contents. - * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset} - * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit} - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.reverse = function(begin, end) { - if (typeof begin === 'undefined') begin = this.offset; - if (typeof end === 'undefined') end = this.limit; - if (!this.noAssert) { - if (typeof begin !== 'number' || begin % 1 !== 0) - throw TypeError("Illegal begin: Not an integer"); - begin >>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - if (begin === end) - return this; // Nothing to reverse - Array.prototype.reverse.call(this.view.subarray(begin, end)); - return this; - }; - /** - * Skips the next `length` bytes. This will just advance - * @param {number} length Number of bytes to skip. May also be negative to move the offset back. - * @returns {!ByteBuffer} this - * @expose - */ - ByteBufferPrototype.skip = function(length) { - if (!this.noAssert) { - if (typeof length !== 'number' || length % 1 !== 0) - throw TypeError("Illegal length: "+length+" (not an integer)"); - length |= 0; - } - var offset = this.offset + length; - if (!this.noAssert) { - if (offset < 0 || offset > this.buffer.byteLength) - throw RangeError("Illegal length: 0 <= "+this.offset+" + "+length+" <= "+this.buffer.byteLength); - } - this.offset = offset; - return this; - }; - - /** - * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`. - * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}. - * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}. - * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer} - * @expose - */ - ByteBufferPrototype.slice = function(begin, end) { - if (typeof begin === 'undefined') begin = this.offset; - if (typeof end === 'undefined') end = this.limit; - if (!this.noAssert) { - if (typeof begin !== 'number' || begin % 1 !== 0) - throw TypeError("Illegal begin: Not an integer"); - begin >>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - var bb = this.clone(); - bb.offset = begin; - bb.limit = end; - return bb; - }; - /** - * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between - * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. - * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if - * possible. Defaults to `false` - * @returns {!ArrayBuffer} Contents as an ArrayBuffer - * @expose - */ - ByteBufferPrototype.toBuffer = function(forceCopy) { - var offset = this.offset, - limit = this.limit; - if (!this.noAssert) { - if (typeof offset !== 'number' || offset % 1 !== 0) - throw TypeError("Illegal offset: Not an integer"); - offset >>>= 0; - if (typeof limit !== 'number' || limit % 1 !== 0) - throw TypeError("Illegal limit: Not an integer"); - limit >>>= 0; - if (offset < 0 || offset > limit || limit > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+offset+" <= "+limit+" <= "+this.buffer.byteLength); - } - // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is - // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So: - if (!forceCopy && offset === 0 && limit === this.buffer.byteLength) - return this.buffer; - if (offset === limit) - return EMPTY_BUFFER; - var buffer = new ArrayBuffer(limit - offset); - new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0); - return buffer; - }; - - /** - * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between - * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}. - * @function - * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory. - * Defaults to `false` - * @returns {!ArrayBuffer} Contents as an ArrayBuffer - * @expose - */ - ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer; - - /** - * Converts the ByteBuffer's contents to a string. - * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows - * direct conversion to "utf8", "hex", "base64" and "binary" encoding. "debug" returns a hex representation with - * highlighted offsets. - * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset} - * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit} - * @returns {string} String representation - * @throws {Error} If `encoding` is invalid - * @expose - */ - ByteBufferPrototype.toString = function(encoding, begin, end) { - if (typeof encoding === 'undefined') - return "ByteBufferAB(offset="+this.offset+",markedOffset="+this.markedOffset+",limit="+this.limit+",capacity="+this.capacity()+")"; - if (typeof encoding === 'number') - encoding = "utf8", - begin = encoding, - end = begin; - switch (encoding) { - case "utf8": - return this.toUTF8(begin, end); - case "base64": - return this.toBase64(begin, end); - case "hex": - return this.toHex(begin, end); - case "binary": - return this.toBinary(begin, end); - case "debug": - return this.toDebug(); - case "columns": - return this.toColumns(); - default: - throw Error("Unsupported encoding: "+encoding); - } - }; - - // lxiv-embeddable - - /** - * lxiv-embeddable (c) 2014 Daniel Wirtz - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/lxiv for details - */ - var lxiv = function() { - "use strict"; - - /** - * lxiv namespace. - * @type {!Object.} - * @exports lxiv - */ - var lxiv = {}; - - /** - * Character codes for output. - * @type {!Array.} - * @inner - */ - var aout = [ - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47 - ]; - - /** - * Character codes for input. - * @type {!Array.} - * @inner - */ - var ain = []; - for (var i=0, k=aout.length; i>2)&0x3f]); - t = (b&0x3)<<4; - if ((b = src()) !== null) { - t |= (b>>4)&0xf; - dst(aout[(t|((b>>4)&0xf))&0x3f]); - t = (b&0xf)<<2; - if ((b = src()) !== null) - dst(aout[(t|((b>>6)&0x3))&0x3f]), - dst(aout[b&0x3f]); - else - dst(aout[t&0x3f]), - dst(61); - } else - dst(aout[t&0x3f]), - dst(61), - dst(61); - } - }; - - /** - * Decodes base64 char codes to bytes. - * @param {!function():number|null} src Characters source as a function returning the next char code respectively - * `null` if there are no more characters left. - * @param {!function(number)} dst Bytes destination as a function successively called with the next byte. - * @throws {Error} If a character code is invalid - */ - lxiv.decode = function(src, dst) { - var c, t1, t2; - function fail(c) { - throw Error("Illegal character code: "+c); - } - while ((c = src()) !== null) { - t1 = ain[c]; - if (typeof t1 === 'undefined') fail(c); - if ((c = src()) !== null) { - t2 = ain[c]; - if (typeof t2 === 'undefined') fail(c); - dst((t1<<2)>>>0|(t2&0x30)>>4); - if ((c = src()) !== null) { - t1 = ain[c]; - if (typeof t1 === 'undefined') - if (c === 61) break; else fail(c); - dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2); - if ((c = src()) !== null) { - t2 = ain[c]; - if (typeof t2 === 'undefined') - if (c === 61) break; else fail(c); - dst(((t1&0x3)<<6)>>>0|t2); - } - } - } - } - }; - - /** - * Tests if a string is valid base64. - * @param {string} str String to test - * @returns {boolean} `true` if valid, otherwise `false` - */ - lxiv.test = function(str) { - return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str); - }; - - return lxiv; - }(); - - // encodings/base64 - - /** - * Encodes this ByteBuffer's contents to a base64 encoded string. - * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}. - * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}. - * @returns {string} Base64 encoded string - * @throws {RangeError} If `begin` or `end` is out of bounds - * @expose - */ - ByteBufferPrototype.toBase64 = function(begin, end) { - if (typeof begin === 'undefined') - begin = this.offset; - if (typeof end === 'undefined') - end = this.limit; - begin = begin | 0; end = end | 0; - if (begin < 0 || end > this.capacity || begin > end) - throw RangeError("begin, end"); - var sd; lxiv.encode(function() { - return begin < end ? this.view[begin++] : null; - }.bind(this), sd = stringDestination()); - return sd(); - }; - - /** - * Decodes a base64 encoded string to a ByteBuffer. - * @param {string} str String to decode - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @returns {!ByteBuffer} ByteBuffer - * @expose - */ - ByteBuffer.fromBase64 = function(str, littleEndian) { - if (typeof str !== 'string') - throw TypeError("str"); - var bb = new ByteBuffer(str.length/4*3, littleEndian), - i = 0; - lxiv.decode(stringSource(str), function(b) { - bb.view[i++] = b; - }); - bb.limit = i; - return bb; - }; - - /** - * Encodes a binary string to base64 like `window.btoa` does. - * @param {string} str Binary string - * @returns {string} Base64 encoded string - * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa - * @expose - */ - ByteBuffer.btoa = function(str) { - return ByteBuffer.fromBinary(str).toBase64(); - }; - - /** - * Decodes a base64 encoded string to binary like `window.atob` does. - * @param {string} b64 Base64 encoded string - * @returns {string} Binary string - * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob - * @expose - */ - ByteBuffer.atob = function(b64) { - return ByteBuffer.fromBase64(b64).toBinary(); - }; - - // encodings/binary - - /** - * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes. - * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}. - * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}. - * @returns {string} Binary encoded string - * @throws {RangeError} If `offset > limit` - * @expose - */ - ByteBufferPrototype.toBinary = function(begin, end) { - if (typeof begin === 'undefined') - begin = this.offset; - if (typeof end === 'undefined') - end = this.limit; - begin |= 0; end |= 0; - if (begin < 0 || end > this.capacity() || begin > end) - throw RangeError("begin, end"); - if (begin === end) - return ""; - var chars = [], - parts = []; - while (begin < end) { - chars.push(this.view[begin++]); - if (chars.length >= 1024) - parts.push(String.fromCharCode.apply(String, chars)), - chars = []; - } - return parts.join('') + String.fromCharCode.apply(String, chars); - }; - - /** - * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer. - * @param {string} str String to decode - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @returns {!ByteBuffer} ByteBuffer - * @expose - */ - ByteBuffer.fromBinary = function(str, littleEndian) { - if (typeof str !== 'string') - throw TypeError("str"); - var i = 0, - k = str.length, - charCode, - bb = new ByteBuffer(k, littleEndian); - while (i 0xff) - throw RangeError("illegal char code: "+charCode); - bb.view[i++] = charCode; - } - bb.limit = k; - return bb; - }; - - // encodings/debug - - /** - * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are: - * * `<` : offset, - * * `'` : markedOffset, - * * `>` : limit, - * * `|` : offset and limit, - * * `[` : offset and markedOffset, - * * `]` : markedOffset and limit, - * * `!` : offset, markedOffset and limit - * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false` - * @returns {string|!Array.} Debug string or array of lines if `asArray = true` - * @expose - * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3` - * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4` - * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1` - * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1` - */ - ByteBufferPrototype.toDebug = function(columns) { - var i = -1, - k = this.buffer.byteLength, - b, - hex = "", - asc = "", - out = ""; - while (i 32 && b < 127 ? String.fromCharCode(b) : '.'; - } - ++i; - if (columns) { - if (i > 0 && i % 16 === 0 && i !== k) { - while (hex.length < 3*16+3) hex += " "; - out += hex+asc+"\n"; - hex = asc = ""; - } - } - if (i === this.offset && i === this.limit) - hex += i === this.markedOffset ? "!" : "|"; - else if (i === this.offset) - hex += i === this.markedOffset ? "[" : "<"; - else if (i === this.limit) - hex += i === this.markedOffset ? "]" : ">"; - else - hex += i === this.markedOffset ? "'" : (columns || (i !== 0 && i !== k) ? " " : ""); - } - if (columns && hex !== " ") { - while (hex.length < 3*16+3) - hex += " "; - out += hex + asc + "\n"; - } - return columns ? out : hex; - }; - - /** - * Decodes a hex encoded string with marked offsets to a ByteBuffer. - * @param {string} str Debug string to decode (not be generated with `columns = true`) - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} ByteBuffer - * @expose - * @see ByteBuffer#toDebug - */ - ByteBuffer.fromDebug = function(str, littleEndian, noAssert) { - var k = str.length, - bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert); - var i = 0, j = 0, ch, b, - rs = false, // Require symbol next - ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)? - fail = false; - while (i': - if (!noAssert) { - if (hl) { - fail = true; - break; - } - hl = true; - } - bb.limit = j; - rs = false; - break; - case "'": - if (!noAssert) { - if (hm) { - fail = true; - break; - } - hm = true; - } - bb.markedOffset = j; - rs = false; - break; - case ' ': - rs = false; - break; - default: - if (!noAssert) { - if (rs) { - fail = true; - break; - } - } - b = parseInt(ch+str.charAt(i++), 16); - if (!noAssert) { - if (isNaN(b) || b < 0 || b > 255) - throw TypeError("Illegal str: Not a debug encoded string"); - } - bb.view[j++] = b; - rs = true; - } - if (fail) - throw TypeError("Illegal str: Invalid symbol at "+i); - } - if (!noAssert) { - if (!ho || !hl) - throw TypeError("Illegal str: Missing offset or limit"); - if (j>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - var out = new Array(end - begin), - b; - while (begin < end) { - b = this.view[begin++]; - if (b < 0x10) - out.push("0", b.toString(16)); - else out.push(b.toString(16)); - } - return out.join(''); - }; - - /** - * Decodes a hex encoded string to a ByteBuffer. - * @param {string} str String to decode - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} ByteBuffer - * @expose - */ - ByteBuffer.fromHex = function(str, littleEndian, noAssert) { - if (!noAssert) { - if (typeof str !== 'string') - throw TypeError("Illegal str: Not a string"); - if (str.length % 2 !== 0) - throw TypeError("Illegal str: Length not a multiple of 2"); - } - var k = str.length, - bb = new ByteBuffer((k / 2) | 0, littleEndian), - b; - for (var i=0, j=0; i 255) - throw TypeError("Illegal str: Contains non-hex characters"); - bb.view[j++] = b; - } - bb.limit = j; - return bb; - }; - - // utfx-embeddable - - /** - * utfx-embeddable (c) 2014 Daniel Wirtz - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/utfx for details - */ - var utfx = function() { - "use strict"; - - /** - * utfx namespace. - * @inner - * @type {!Object.} - */ - var utfx = {}; - - /** - * Maximum valid code point. - * @type {number} - * @const - */ - utfx.MAX_CODEPOINT = 0x10FFFF; - - /** - * Encodes UTF8 code points to UTF8 bytes. - * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point - * respectively `null` if there are no more code points left or a single numeric code point. - * @param {!function(number)} dst Bytes destination as a function successively called with the next byte - */ - utfx.encodeUTF8 = function(src, dst) { - var cp = null; - if (typeof src === 'number') - cp = src, - src = function() { return null; }; - while (cp !== null || (cp = src()) !== null) { - if (cp < 0x80) - dst(cp&0x7F); - else if (cp < 0x800) - dst(((cp>>6)&0x1F)|0xC0), - dst((cp&0x3F)|0x80); - else if (cp < 0x10000) - dst(((cp>>12)&0x0F)|0xE0), - dst(((cp>>6)&0x3F)|0x80), - dst((cp&0x3F)|0x80); - else - dst(((cp>>18)&0x07)|0xF0), - dst(((cp>>12)&0x3F)|0x80), - dst(((cp>>6)&0x3F)|0x80), - dst((cp&0x3F)|0x80); - cp = null; - } - }; - - /** - * Decodes UTF8 bytes to UTF8 code points. - * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there - * are no more bytes left. - * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point. - * @throws {RangeError} If a starting byte is invalid in UTF8 - * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the - * remaining bytes. - */ - utfx.decodeUTF8 = function(src, dst) { - var a, b, c, d, fail = function(b) { - b = b.slice(0, b.indexOf(null)); - var err = Error(b.toString()); - err.name = "TruncatedError"; - err['bytes'] = b; - throw err; - }; - while ((a = src()) !== null) { - if ((a&0x80) === 0) - dst(a); - else if ((a&0xE0) === 0xC0) - ((b = src()) === null) && fail([a, b]), - dst(((a&0x1F)<<6) | (b&0x3F)); - else if ((a&0xF0) === 0xE0) - ((b=src()) === null || (c=src()) === null) && fail([a, b, c]), - dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F)); - else if ((a&0xF8) === 0xF0) - ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]), - dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F)); - else throw RangeError("Illegal starting byte: "+a); - } - }; - - /** - * Converts UTF16 characters to UTF8 code points. - * @param {!function():number|null} src Characters source as a function returning the next char code respectively - * `null` if there are no more characters left. - * @param {!function(number)} dst Code points destination as a function successively called with each converted code - * point. - */ - utfx.UTF16toUTF8 = function(src, dst) { - var c1, c2 = null; - while (true) { - if ((c1 = c2 !== null ? c2 : src()) === null) - break; - if (c1 >= 0xD800 && c1 <= 0xDFFF) { - if ((c2 = src()) !== null) { - if (c2 >= 0xDC00 && c2 <= 0xDFFF) { - dst((c1-0xD800)*0x400+c2-0xDC00+0x10000); - c2 = null; continue; - } - } - } - dst(c1); - } - if (c2 !== null) dst(c2); - }; - - /** - * Converts UTF8 code points to UTF16 characters. - * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point - * respectively `null` if there are no more code points left or a single numeric code point. - * @param {!function(number)} dst Characters destination as a function successively called with each converted char code. - * @throws {RangeError} If a code point is out of range - */ - utfx.UTF8toUTF16 = function(src, dst) { - var cp = null; - if (typeof src === 'number') - cp = src, src = function() { return null; }; - while (cp !== null || (cp = src()) !== null) { - if (cp <= 0xFFFF) - dst(cp); - else - cp -= 0x10000, - dst((cp>>10)+0xD800), - dst((cp%0x400)+0xDC00); - cp = null; - } - }; - - /** - * Converts and encodes UTF16 characters to UTF8 bytes. - * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null` - * if there are no more characters left. - * @param {!function(number)} dst Bytes destination as a function successively called with the next byte. - */ - utfx.encodeUTF16toUTF8 = function(src, dst) { - utfx.UTF16toUTF8(src, function(cp) { - utfx.encodeUTF8(cp, dst); - }); - }; - - /** - * Decodes and converts UTF8 bytes to UTF16 characters. - * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there - * are no more bytes left. - * @param {!function(number)} dst Characters destination as a function successively called with each converted char code. - * @throws {RangeError} If a starting byte is invalid in UTF8 - * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes. - */ - utfx.decodeUTF8toUTF16 = function(src, dst) { - utfx.decodeUTF8(src, function(cp) { - utfx.UTF8toUTF16(cp, dst); - }); - }; - - /** - * Calculates the byte length of an UTF8 code point. - * @param {number} cp UTF8 code point - * @returns {number} Byte length - */ - utfx.calculateCodePoint = function(cp) { - return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4; - }; - - /** - * Calculates the number of UTF8 bytes required to store UTF8 code points. - * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively - * `null` if there are no more code points left. - * @returns {number} The number of UTF8 bytes required - */ - utfx.calculateUTF8 = function(src) { - var cp, l=0; - while ((cp = src()) !== null) - l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4; - return l; - }; - - /** - * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes. - * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively - * `null` if there are no more characters left. - * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1. - */ - utfx.calculateUTF16asUTF8 = function(src) { - var n=0, l=0; - utfx.UTF16toUTF8(src, function(cp) { - ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4; - }); - return [n,l]; - }; - - return utfx; - }(); - - // encodings/utf8 - - /** - * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded - * string. - * @returns {string} Hex encoded string - * @throws {RangeError} If `offset > limit` - * @expose - */ - ByteBufferPrototype.toUTF8 = function(begin, end) { - if (typeof begin === 'undefined') begin = this.offset; - if (typeof end === 'undefined') end = this.limit; - if (!this.noAssert) { - if (typeof begin !== 'number' || begin % 1 !== 0) - throw TypeError("Illegal begin: Not an integer"); - begin >>>= 0; - if (typeof end !== 'number' || end % 1 !== 0) - throw TypeError("Illegal end: Not an integer"); - end >>>= 0; - if (begin < 0 || begin > end || end > this.buffer.byteLength) - throw RangeError("Illegal range: 0 <= "+begin+" <= "+end+" <= "+this.buffer.byteLength); - } - var sd; try { - utfx.decodeUTF8toUTF16(function() { - return begin < end ? this.view[begin++] : null; - }.bind(this), sd = stringDestination()); - } catch (e) { - if (begin !== end) - throw RangeError("Illegal range: Truncated data, "+begin+" != "+end); - } - return sd(); - }; - - /** - * Decodes an UTF8 encoded string to a ByteBuffer. - * @param {string} str String to decode - * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to - * {@link ByteBuffer.DEFAULT_ENDIAN}. - * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to - * {@link ByteBuffer.DEFAULT_NOASSERT}. - * @returns {!ByteBuffer} ByteBuffer - * @expose - */ - ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) { - if (!noAssert) - if (typeof str !== 'string') - throw TypeError("Illegal str: Not a string"); - var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert), - i = 0; - utfx.encodeUTF16toUTF8(stringSource(str), function(b) { - bb.view[i++] = b; - }); - bb.limit = i; - return bb; - }; - - return ByteBuffer; -}); - -},{"long":23}],23:[function(_dereq_,module,exports){ -/* - Copyright 2013 Daniel Wirtz - Copyright 2009 The Closure Library Authors. All Rights Reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS-IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -/** - * @license long.js (c) 2013 Daniel Wirtz - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/long.js for details - */ -(function(global, factory) { - - /* AMD */ if (typeof define === 'function' && define["amd"]) - define([], factory); - /* CommonJS */ else if (typeof _dereq_ === 'function' && typeof module === "object" && module && module["exports"]) - module["exports"] = factory(); - /* Global */ else - (global["dcodeIO"] = global["dcodeIO"] || {})["Long"] = factory(); - -})(this, function() { - "use strict"; - - /** - * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers. - * See the from* functions below for more convenient ways of constructing Longs. - * @exports Long - * @class A Long class for representing a 64 bit two's-complement integer value. - * @param {number} low The low (signed) 32 bits of the long - * @param {number} high The high (signed) 32 bits of the long - * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed - * @constructor - */ - function Long(low, high, unsigned) { - - /** - * The low 32 bits as a signed value. - * @type {number} - */ - this.low = low | 0; - - /** - * The high 32 bits as a signed value. - * @type {number} - */ - this.high = high | 0; - - /** - * Whether unsigned or not. - * @type {boolean} - */ - this.unsigned = !!unsigned; - } - - // The internal representation of a long is the two given signed, 32-bit values. - // We use 32-bit pieces because these are the size of integers on which - // Javascript performs bit-operations. For operations like addition and - // multiplication, we split each number into 16 bit pieces, which can easily be - // multiplied within Javascript's floating-point representation without overflow - // or change in sign. - // - // In the algorithms below, we frequently reduce the negative case to the - // positive case by negating the input(s) and then post-processing the result. - // Note that we must ALWAYS check specially whether those values are MIN_VALUE - // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as - // a positive number, it overflows back into a negative). Not handling this - // case would often result in infinite recursion. - // - // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from* - // methods on which they depend. - - /** - * An indicator used to reliably determine if an object is a Long or not. - * @type {boolean} - * @const - * @private - */ - Long.prototype.__isLong__; - - Object.defineProperty(Long.prototype, "__isLong__", { - value: true, - enumerable: false, - configurable: false - }); - - /** - * @function - * @param {*} obj Object - * @returns {boolean} - * @inner - */ - function isLong(obj) { - return (obj && obj["__isLong__"]) === true; - } - - /** - * Tests if the specified object is a Long. - * @function - * @param {*} obj Object - * @returns {boolean} - */ - Long.isLong = isLong; - - /** - * A cache of the Long representations of small integer values. - * @type {!Object} - * @inner - */ - var INT_CACHE = {}; - - /** - * A cache of the Long representations of small unsigned integer values. - * @type {!Object} - * @inner - */ - var UINT_CACHE = {}; - - /** - * @param {number} value - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ - function fromInt(value, unsigned) { - var obj, cachedObj, cache; - if (unsigned) { - value >>>= 0; - if (cache = (0 <= value && value < 256)) { - cachedObj = UINT_CACHE[value]; - if (cachedObj) - return cachedObj; - } - obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true); - if (cache) - UINT_CACHE[value] = obj; - return obj; - } else { - value |= 0; - if (cache = (-128 <= value && value < 128)) { - cachedObj = INT_CACHE[value]; - if (cachedObj) - return cachedObj; - } - obj = fromBits(value, value < 0 ? -1 : 0, false); - if (cache) - INT_CACHE[value] = obj; - return obj; - } - } - - /** - * Returns a Long representing the given 32 bit integer value. - * @function - * @param {number} value The 32 bit integer in question - * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed - * @returns {!Long} The corresponding Long value - */ - Long.fromInt = fromInt; - - /** - * @param {number} value - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ - function fromNumber(value, unsigned) { - if (isNaN(value) || !isFinite(value)) - return unsigned ? UZERO : ZERO; - if (unsigned) { - if (value < 0) - return UZERO; - if (value >= TWO_PWR_64_DBL) - return MAX_UNSIGNED_VALUE; - } else { - if (value <= -TWO_PWR_63_DBL) - return MIN_VALUE; - if (value + 1 >= TWO_PWR_63_DBL) - return MAX_VALUE; - } - if (value < 0) - return fromNumber(-value, unsigned).neg(); - return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); - } - - /** - * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * @function - * @param {number} value The number in question - * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed - * @returns {!Long} The corresponding Long value - */ - Long.fromNumber = fromNumber; - - /** - * @param {number} lowBits - * @param {number} highBits - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ - function fromBits(lowBits, highBits, unsigned) { - return new Long(lowBits, highBits, unsigned); - } - - /** - * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is - * assumed to use 32 bits. - * @function - * @param {number} lowBits The low 32 bits - * @param {number} highBits The high 32 bits - * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed - * @returns {!Long} The corresponding Long value - */ - Long.fromBits = fromBits; - - /** - * @function - * @param {number} base - * @param {number} exponent - * @returns {number} - * @inner - */ - var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4) - - /** - * @param {string} str - * @param {(boolean|number)=} unsigned - * @param {number=} radix - * @returns {!Long} - * @inner - */ - function fromString(str, unsigned, radix) { - if (str.length === 0) - throw Error('empty string'); - if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") - return ZERO; - if (typeof unsigned === 'number') { - // For goog.math.long compatibility - radix = unsigned, - unsigned = false; - } else { - unsigned = !! unsigned; - } - radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError('radix'); - - var p; - if ((p = str.indexOf('-')) > 0) - throw Error('interior hyphen'); - else if (p === 0) { - return fromString(str.substring(1), unsigned, radix).neg(); - } - - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = fromNumber(pow_dbl(radix, 8)); - - var result = ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i), - value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = fromNumber(pow_dbl(radix, size)); - result = result.mul(power).add(fromNumber(value)); - } else { - result = result.mul(radixToPower); - result = result.add(fromNumber(value)); - } - } - result.unsigned = unsigned; - return result; - } - - /** - * Returns a Long representation of the given string, written using the specified radix. - * @function - * @param {string} str The textual representation of the Long - * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed - * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 - * @returns {!Long} The corresponding Long value - */ - Long.fromString = fromString; - - /** - * @function - * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val - * @returns {!Long} - * @inner - */ - function fromValue(val) { - if (val /* is compatible */ instanceof Long) - return val; - if (typeof val === 'number') - return fromNumber(val); - if (typeof val === 'string') - return fromString(val); - // Throws for non-objects, converts non-instanceof Long: - return fromBits(val.low, val.high, val.unsigned); - } - - /** - * Converts the specified value to a Long. - * @function - * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value - * @returns {!Long} - */ - Long.fromValue = fromValue; - - // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be - // no runtime penalty for these. - - /** - * @type {number} - * @const - * @inner - */ - var TWO_PWR_16_DBL = 1 << 16; - - /** - * @type {number} - * @const - * @inner - */ - var TWO_PWR_24_DBL = 1 << 24; - - /** - * @type {number} - * @const - * @inner - */ - var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; - - /** - * @type {number} - * @const - * @inner - */ - var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; - - /** - * @type {number} - * @const - * @inner - */ - var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; - - /** - * @type {!Long} - * @const - * @inner - */ - var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); - - /** - * @type {!Long} - * @inner - */ - var ZERO = fromInt(0); - - /** - * Signed zero. - * @type {!Long} - */ - Long.ZERO = ZERO; - - /** - * @type {!Long} - * @inner - */ - var UZERO = fromInt(0, true); - - /** - * Unsigned zero. - * @type {!Long} - */ - Long.UZERO = UZERO; - - /** - * @type {!Long} - * @inner - */ - var ONE = fromInt(1); - - /** - * Signed one. - * @type {!Long} - */ - Long.ONE = ONE; - - /** - * @type {!Long} - * @inner - */ - var UONE = fromInt(1, true); - - /** - * Unsigned one. - * @type {!Long} - */ - Long.UONE = UONE; - - /** - * @type {!Long} - * @inner - */ - var NEG_ONE = fromInt(-1); - - /** - * Signed negative one. - * @type {!Long} - */ - Long.NEG_ONE = NEG_ONE; - - /** - * @type {!Long} - * @inner - */ - var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false); - - /** - * Maximum signed value. - * @type {!Long} - */ - Long.MAX_VALUE = MAX_VALUE; - - /** - * @type {!Long} - * @inner - */ - var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true); - - /** - * Maximum unsigned value. - * @type {!Long} - */ - Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; - - /** - * @type {!Long} - * @inner - */ - var MIN_VALUE = fromBits(0, 0x80000000|0, false); - - /** - * Minimum signed value. - * @type {!Long} - */ - Long.MIN_VALUE = MIN_VALUE; - - /** - * @alias Long.prototype - * @inner - */ - var LongPrototype = Long.prototype; - - /** - * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. - * @returns {number} - */ - LongPrototype.toInt = function toInt() { - return this.unsigned ? this.low >>> 0 : this.low; - }; - - /** - * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). - * @returns {number} - */ - LongPrototype.toNumber = function toNumber() { - if (this.unsigned) - return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0); - return this.high * TWO_PWR_32_DBL + (this.low >>> 0); - }; - - /** - * Converts the Long to a string written in the specified radix. - * @param {number=} radix Radix (2-36), defaults to 10 - * @returns {string} - * @override - * @throws {RangeError} If `radix` is out of range - */ - LongPrototype.toString = function toString(radix) { - radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError('radix'); - if (this.isZero()) - return '0'; - if (this.isNegative()) { // Unsigned Longs are never negative - if (this.eq(MIN_VALUE)) { - // We need to change the Long value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = fromNumber(radix), - div = this.div(radixLong), - rem1 = div.mul(radixLong).sub(this); - return div.toString(radix) + rem1.toInt().toString(radix); - } else - return '-' + this.neg().toString(radix); - } - - // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), - rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower), - intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, - digits = intval.toString(radix); - rem = remDiv; - if (rem.isZero()) - return digits + result; - else { - while (digits.length < 6) - digits = '0' + digits; - result = '' + digits + result; - } - } - }; - - /** - * Gets the high 32 bits as a signed integer. - * @returns {number} Signed high bits - */ - LongPrototype.getHighBits = function getHighBits() { - return this.high; - }; - - /** - * Gets the high 32 bits as an unsigned integer. - * @returns {number} Unsigned high bits - */ - LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { - return this.high >>> 0; - }; - - /** - * Gets the low 32 bits as a signed integer. - * @returns {number} Signed low bits - */ - LongPrototype.getLowBits = function getLowBits() { - return this.low; - }; - - /** - * Gets the low 32 bits as an unsigned integer. - * @returns {number} Unsigned low bits - */ - LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { - return this.low >>> 0; - }; - - /** - * Gets the number of bits needed to represent the absolute value of this Long. - * @returns {number} - */ - LongPrototype.getNumBitsAbs = function getNumBitsAbs() { - if (this.isNegative()) // Unsigned Longs are never negative - return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); - var val = this.high != 0 ? this.high : this.low; - for (var bit = 31; bit > 0; bit--) - if ((val & (1 << bit)) != 0) - break; - return this.high != 0 ? bit + 33 : bit + 1; - }; - - /** - * Tests if this Long's value equals zero. - * @returns {boolean} - */ - LongPrototype.isZero = function isZero() { - return this.high === 0 && this.low === 0; - }; - - /** - * Tests if this Long's value is negative. - * @returns {boolean} - */ - LongPrototype.isNegative = function isNegative() { - return !this.unsigned && this.high < 0; - }; - - /** - * Tests if this Long's value is positive. - * @returns {boolean} - */ - LongPrototype.isPositive = function isPositive() { - return this.unsigned || this.high >= 0; - }; - - /** - * Tests if this Long's value is odd. - * @returns {boolean} - */ - LongPrototype.isOdd = function isOdd() { - return (this.low & 1) === 1; - }; - - /** - * Tests if this Long's value is even. - * @returns {boolean} - */ - LongPrototype.isEven = function isEven() { - return (this.low & 1) === 0; - }; - - /** - * Tests if this Long's value equals the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.equals = function equals(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1) - return false; - return this.high === other.high && this.low === other.low; - }; - - /** - * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.eq = LongPrototype.equals; - - /** - * Tests if this Long's value differs from the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.notEquals = function notEquals(other) { - return !this.eq(/* validates */ other); - }; - - /** - * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.neq = LongPrototype.notEquals; - - /** - * Tests if this Long's value is less than the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.lessThan = function lessThan(other) { - return this.comp(/* validates */ other) < 0; - }; - - /** - * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.lt = LongPrototype.lessThan; - - /** - * Tests if this Long's value is less than or equal the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { - return this.comp(/* validates */ other) <= 0; - }; - - /** - * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.lte = LongPrototype.lessThanOrEqual; - - /** - * Tests if this Long's value is greater than the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.greaterThan = function greaterThan(other) { - return this.comp(/* validates */ other) > 0; - }; - - /** - * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.gt = LongPrototype.greaterThan; - - /** - * Tests if this Long's value is greater than or equal the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { - return this.comp(/* validates */ other) >= 0; - }; - - /** - * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ - LongPrototype.gte = LongPrototype.greaterThanOrEqual; - - /** - * Compares this Long's value with the specified's. - * @param {!Long|number|string} other Other value - * @returns {number} 0 if they are the same, 1 if the this is greater and -1 - * if the given one is greater - */ - LongPrototype.compare = function compare(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.eq(other)) - return 0; - var thisNeg = this.isNegative(), - otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) - return -1; - if (!thisNeg && otherNeg) - return 1; - // At this point the sign bits are the same - if (!this.unsigned) - return this.sub(other).isNegative() ? -1 : 1; - // Both are positive if at least one is unsigned - return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1; - }; - - /** - * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}. - * @function - * @param {!Long|number|string} other Other value - * @returns {number} 0 if they are the same, 1 if the this is greater and -1 - * if the given one is greater - */ - LongPrototype.comp = LongPrototype.compare; - - /** - * Negates this Long's value. - * @returns {!Long} Negated Long - */ - LongPrototype.negate = function negate() { - if (!this.unsigned && this.eq(MIN_VALUE)) - return MIN_VALUE; - return this.not().add(ONE); - }; - - /** - * Negates this Long's value. This is an alias of {@link Long#negate}. - * @function - * @returns {!Long} Negated Long - */ - LongPrototype.neg = LongPrototype.negate; - - /** - * Returns the sum of this and the specified Long. - * @param {!Long|number|string} addend Addend - * @returns {!Long} Sum - */ - LongPrototype.add = function add(addend) { - if (!isLong(addend)) - addend = fromValue(addend); - - // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high >>> 16; - var a32 = this.high & 0xFFFF; - var a16 = this.low >>> 16; - var a00 = this.low & 0xFFFF; - - var b48 = addend.high >>> 16; - var b32 = addend.high & 0xFFFF; - var b16 = addend.low >>> 16; - var b00 = addend.low & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); - }; - - /** - * Returns the difference of this and the specified Long. - * @param {!Long|number|string} subtrahend Subtrahend - * @returns {!Long} Difference - */ - LongPrototype.subtract = function subtract(subtrahend) { - if (!isLong(subtrahend)) - subtrahend = fromValue(subtrahend); - return this.add(subtrahend.neg()); - }; - - /** - * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}. - * @function - * @param {!Long|number|string} subtrahend Subtrahend - * @returns {!Long} Difference - */ - LongPrototype.sub = LongPrototype.subtract; - - /** - * Returns the product of this and the specified Long. - * @param {!Long|number|string} multiplier Multiplier - * @returns {!Long} Product - */ - LongPrototype.multiply = function multiply(multiplier) { - if (this.isZero()) - return ZERO; - if (!isLong(multiplier)) - multiplier = fromValue(multiplier); - if (multiplier.isZero()) - return ZERO; - if (this.eq(MIN_VALUE)) - return multiplier.isOdd() ? MIN_VALUE : ZERO; - if (multiplier.eq(MIN_VALUE)) - return this.isOdd() ? MIN_VALUE : ZERO; - - if (this.isNegative()) { - if (multiplier.isNegative()) - return this.neg().mul(multiplier.neg()); - else - return this.neg().mul(multiplier).neg(); - } else if (multiplier.isNegative()) - return this.mul(multiplier.neg()).neg(); - - // If both longs are small, use float multiplication - if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) - return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); - - // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high >>> 16; - var a32 = this.high & 0xFFFF; - var a16 = this.low >>> 16; - var a00 = this.low & 0xFFFF; - - var b48 = multiplier.high >>> 16; - var b32 = multiplier.high & 0xFFFF; - var b16 = multiplier.low >>> 16; - var b00 = multiplier.low & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); - }; - - /** - * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}. - * @function - * @param {!Long|number|string} multiplier Multiplier - * @returns {!Long} Product - */ - LongPrototype.mul = LongPrototype.multiply; - - /** - * Returns this Long divided by the specified. The result is signed if this Long is signed or - * unsigned if this Long is unsigned. - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Quotient - */ - LongPrototype.divide = function divide(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); - if (divisor.isZero()) - throw Error('division by zero'); - if (this.isZero()) - return this.unsigned ? UZERO : ZERO; - var approx, rem, res; - if (!this.unsigned) { - // This section is only relevant for signed longs and is derived from the - // closure library as a whole. - if (this.eq(MIN_VALUE)) { - if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) - return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - else if (divisor.eq(MIN_VALUE)) - return ONE; - else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shr(1); - approx = halfThis.div(divisor).shl(1); - if (approx.eq(ZERO)) { - return divisor.isNegative() ? ONE : NEG_ONE; - } else { - rem = this.sub(divisor.mul(approx)); - res = approx.add(rem.div(divisor)); - return res; - } - } - } else if (divisor.eq(MIN_VALUE)) - return this.unsigned ? UZERO : ZERO; - if (this.isNegative()) { - if (divisor.isNegative()) - return this.neg().div(divisor.neg()); - return this.neg().div(divisor).neg(); - } else if (divisor.isNegative()) - return this.div(divisor.neg()).neg(); - res = ZERO; - } else { - // The algorithm below has not been made for unsigned longs. It's therefore - // required to take special care of the MSB prior to running it. - if (!divisor.unsigned) - divisor = divisor.toUnsigned(); - if (divisor.gt(this)) - return UZERO; - if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true - return UONE; - res = UZERO; - } - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - rem = this; - while (rem.gte(divisor)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); - - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2), - delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), - - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - approxRes = fromNumber(approx), - approxRem = approxRes.mul(divisor); - while (approxRem.isNegative() || approxRem.gt(rem)) { - approx -= delta; - approxRes = fromNumber(approx, this.unsigned); - approxRem = approxRes.mul(divisor); - } - - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) - approxRes = ONE; - - res = res.add(approxRes); - rem = rem.sub(approxRem); - } - return res; - }; - - /** - * Returns this Long divided by the specified. This is an alias of {@link Long#divide}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Quotient - */ - LongPrototype.div = LongPrototype.divide; - - /** - * Returns this Long modulo the specified. - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - */ - LongPrototype.modulo = function modulo(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); - return this.sub(this.div(divisor).mul(divisor)); - }; - - /** - * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - */ - LongPrototype.mod = LongPrototype.modulo; - - /** - * Returns the bitwise NOT of this Long. - * @returns {!Long} - */ - LongPrototype.not = function not() { - return fromBits(~this.low, ~this.high, this.unsigned); - }; - - /** - * Returns the bitwise AND of this Long and the specified. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ - LongPrototype.and = function and(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low & other.low, this.high & other.high, this.unsigned); - }; - - /** - * Returns the bitwise OR of this Long and the specified. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ - LongPrototype.or = function or(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low | other.low, this.high | other.high, this.unsigned); - }; - - /** - * Returns the bitwise XOR of this Long and the given one. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ - LongPrototype.xor = function xor(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); - }; - - /** - * Returns this Long with bits shifted to the left by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ - LongPrototype.shiftLeft = function shiftLeft(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); - else - return fromBits(0, this.low << (numBits - 32), this.unsigned); - }; - - /** - * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ - LongPrototype.shl = LongPrototype.shiftLeft; - - /** - * Returns this Long with bits arithmetically shifted to the right by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ - LongPrototype.shiftRight = function shiftRight(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); - else - return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); - }; - - /** - * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ - LongPrototype.shr = LongPrototype.shiftRight; - - /** - * Returns this Long with bits logically shifted to the right by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ - LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - numBits &= 63; - if (numBits === 0) - return this; - else { - var high = this.high; - if (numBits < 32) { - var low = this.low; - return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned); - } else if (numBits === 32) - return fromBits(high, 0, this.unsigned); - else - return fromBits(high >>> (numBits - 32), 0, this.unsigned); - } - }; - - /** - * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ - LongPrototype.shru = LongPrototype.shiftRightUnsigned; - - /** - * Converts this Long to signed. - * @returns {!Long} Signed long - */ - LongPrototype.toSigned = function toSigned() { - if (!this.unsigned) - return this; - return fromBits(this.low, this.high, false); - }; - - /** - * Converts this Long to unsigned. - * @returns {!Long} Unsigned long - */ - LongPrototype.toUnsigned = function toUnsigned() { - if (this.unsigned) - return this; - return fromBits(this.low, this.high, true); - }; - - /** - * Converts this Long to its byte representation. - * @param {boolean=} le Whether little or big endian, defaults to big endian - * @returns {!Array.} Byte representation - */ - LongPrototype.toBytes = function(le) { - return le ? this.toBytesLE() : this.toBytesBE(); - } - - /** - * Converts this Long to its little endian byte representation. - * @returns {!Array.} Little endian byte representation - */ - LongPrototype.toBytesLE = function() { - var hi = this.high, - lo = this.low; - return [ - lo & 0xff, - (lo >>> 8) & 0xff, - (lo >>> 16) & 0xff, - (lo >>> 24) & 0xff, - hi & 0xff, - (hi >>> 8) & 0xff, - (hi >>> 16) & 0xff, - (hi >>> 24) & 0xff - ]; - } - - /** - * Converts this Long to its big endian byte representation. - * @returns {!Array.} Big endian byte representation - */ - LongPrototype.toBytesBE = function() { - var hi = this.high, - lo = this.low; - return [ - (hi >>> 24) & 0xff, - (hi >>> 16) & 0xff, - (hi >>> 8) & 0xff, - hi & 0xff, - (lo >>> 24) & 0xff, - (lo >>> 16) & 0xff, - (lo >>> 8) & 0xff, - lo & 0xff - ]; - } - - return Long; -}); - -},{}],24:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -"use strict"; - -(function() { - var PNGHEADER_BASE64, - bufferpack, - crc, - ignoreChunkTypes, - revertCgBIBuffer, - streamToBuffer, - streamifier, - zlib, - indexOf = - [].indexOf || - function(item) { - for (var i = 0, l = this.length; i < l; i++) { - if (i in this && this[i] === item) return i; - } - return -1; - }; - - streamToBuffer = _dereq_("stream-to-buffer"); - - bufferpack = _dereq_("bufferpack"); - - streamifier = _dereq_("streamifier"); - - zlib = _dereq_("zlib"); - - crc = _dereq_("crc"); - - PNGHEADER_BASE64 = "iVBORw0KGgo="; - - ignoreChunkTypes = ["CgBI", "iDOT"]; - - module.exports = function(stream, callback) { - return streamToBuffer(stream, function(err, buffer) { - var output; - if (err) { - return callback(err); - } - try { - output = revertCgBIBuffer(buffer); - return callback(null, streamifier.createReadStream(output)); - } catch (e) { - return callback(e); - } - }); - }; - - module.exports.revert = revertCgBIBuffer = function(buffer) { - let isIphoneCompressed = false; - let offset = 0; - let chunks = []; - let idatCgbiData = new Buffer(0); - let headerData = buffer.slice(0, 8); - let ref, - width, - height, - chunk, - uncompressed, - newData, - j, - y, - ref1, - ref2, - k, - x, - idatData, - chunkCRC, - idat_chunk; - offset += 8; - if (headerData.toString("base64") !== PNGHEADER_BASE64) { - throw new Error("not a png file"); - } - while (offset < buffer.length) { - chunk = {}; - let data = buffer.slice(offset, offset + 4); - offset += 4; - chunk.length = bufferpack.unpack("L>", data, 0)[0]; - data = buffer.slice(offset, offset + 4); - offset += 4; - chunk.type = data.toString(); - chunk.data = data = buffer.slice(offset, offset + chunk.length); - offset += chunk.length; - let dataCrc = buffer.slice(offset, offset + 4); - offset += 4; - chunk.crc = bufferpack.unpack("L>", dataCrc, 0)[0]; - if (chunk.type === "CgBI") { - isIphoneCompressed = true; - } - if (((ref = chunk.type), indexOf.call(ignoreChunkTypes, ref) >= 0)) { - continue; - } - if (chunk.type === "IHDR") { - width = bufferpack.unpack("L>", data)[0]; - height = bufferpack.unpack("L>", data, 4)[0]; - } - if (chunk.type === "IDAT" && isIphoneCompressed) { - idatCgbiData = Buffer.concat([idatCgbiData, data]); - continue; - } - if (chunk.type === "IEND" && isIphoneCompressed) { - uncompressed = zlib.inflateRawSync(idatCgbiData); - newData = new Buffer(uncompressed.length); - let i = 0; - for ( - y = j = 0, ref1 = height - 1; - 0 <= ref1 ? j <= ref1 : j >= ref1; - y = 0 <= ref1 ? ++j : --j - ) { - newData[i] = uncompressed[i]; - i++; - for ( - x = k = 0, ref2 = width - 1; - 0 <= ref2 ? k <= ref2 : k >= ref2; - x = 0 <= ref2 ? ++k : --k - ) { - newData[i + 0] = uncompressed[i + 2]; - newData[i + 1] = uncompressed[i + 1]; - newData[i + 2] = uncompressed[i + 0]; - newData[i + 3] = uncompressed[i + 3]; - i += 4; - } - } - idatData = zlib.deflateSync(newData); - chunkCRC = crc.crc32("IDAT"); - chunkCRC = crc.crc32(idatData, chunkCRC); - chunkCRC = (chunkCRC + 0x100000000) % 0x100000000; - idat_chunk = { - type: "IDAT", - length: idatData.length, - data: idatData, - crc: chunkCRC - }; - chunks.push(idat_chunk); - } - chunks.push(chunk); - } - let output = headerData; - for (let l = 0, len = chunks.length; l < len; l++) { - chunk = chunks[l]; - output = Buffer.concat([output, bufferpack.pack("L>", [chunk.length])]); - output = Buffer.concat([output, new Buffer(chunk.type)]); - if (chunk.length > 0) { - output = Buffer.concat([output, new Buffer(chunk.data)]); - } - output = Buffer.concat([output, bufferpack.pack("L>", [chunk.crc])]); - } - return output; - }; -}.call(this)); - -}).call(this)}).call(this,_dereq_("buffer").Buffer) - -},{"buffer":20,"bufferpack":21,"crc":50,"stream-to-buffer":95,"streamifier":97,"zlib":18}],25:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. - -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); - } - return objectToString(arg) === '[object Array]'; -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = Buffer.isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - -}).call(this)}).call(this,{"isBuffer":_dereq_("../../is-buffer/index.js")}) - -},{"../../is-buffer/index.js":54}],26:[function(_dereq_,module,exports){ -'use strict'; - -module.exports = _dereq_('./es6/crc1').default; - -},{"./es6/crc1":37}],27:[function(_dereq_,module,exports){ -'use strict'; - -module.exports = _dereq_('./es6/crc16').default; - -},{"./es6/crc16":38}],28:[function(_dereq_,module,exports){ -'use strict'; - -module.exports = _dereq_('./es6/crc16ccitt').default; - -},{"./es6/crc16ccitt":39}],29:[function(_dereq_,module,exports){ -'use strict'; - -module.exports = _dereq_('./es6/crc16kermit').default; - -},{"./es6/crc16kermit":40}],30:[function(_dereq_,module,exports){ -'use strict'; - -module.exports = _dereq_('./es6/crc16modbus').default; - -},{"./es6/crc16modbus":41}],31:[function(_dereq_,module,exports){ -'use strict'; - -module.exports = _dereq_('./es6/crc16xmodem').default; - -},{"./es6/crc16xmodem":42}],32:[function(_dereq_,module,exports){ -'use strict'; - -module.exports = _dereq_('./es6/crc24').default; - -},{"./es6/crc24":43}],33:[function(_dereq_,module,exports){ -'use strict'; - -module.exports = _dereq_('./es6/crc32').default; - -},{"./es6/crc32":44}],34:[function(_dereq_,module,exports){ -'use strict'; - -module.exports = _dereq_('./es6/crc8').default; - -},{"./es6/crc8":45}],35:[function(_dereq_,module,exports){ -'use strict'; - -module.exports = _dereq_('./es6/crc81wire').default; - -},{"./es6/crc81wire":46}],36:[function(_dereq_,module,exports){ -'use strict'; - -module.exports = _dereq_('./es6/crcjam').default; - -},{"./es6/crcjam":47}],37:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _buffer = _dereq_('buffer'); - -var _create_buffer = _dereq_('./create_buffer'); - -var _create_buffer2 = _interopRequireDefault(_create_buffer); - -var _define_crc = _dereq_('./define_crc'); - -var _define_crc2 = _interopRequireDefault(_define_crc); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var crc1 = (0, _define_crc2.default)('crc1', function (buf, previous) { - if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf); - - var crc = ~~previous; - var accum = 0; - - for (var index = 0; index < buf.length; index++) { - var byte = buf[index]; - accum += byte; - } - - crc += accum % 256; - return crc % 256; -}); - -exports.default = crc1; - -},{"./create_buffer":48,"./define_crc":49,"buffer":20}],38:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _buffer = _dereq_('buffer'); - -var _create_buffer = _dereq_('./create_buffer'); - -var _create_buffer2 = _interopRequireDefault(_create_buffer); - -var _define_crc = _dereq_('./define_crc'); - -var _define_crc2 = _interopRequireDefault(_define_crc); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Generated by `./pycrc.py --algorithm=table-driven --model=crc-16 --generate=c` -// prettier-ignore -var TABLE = [0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040]; - -if (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE); - -var crc16 = (0, _define_crc2.default)('crc-16', function (buf, previous) { - if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf); - - var crc = ~~previous; - - for (var index = 0; index < buf.length; index++) { - var byte = buf[index]; - crc = (TABLE[(crc ^ byte) & 0xff] ^ crc >> 8) & 0xffff; - } - - return crc; -}); - -exports.default = crc16; - -},{"./create_buffer":48,"./define_crc":49,"buffer":20}],39:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _buffer = _dereq_('buffer'); - -var _create_buffer = _dereq_('./create_buffer'); - -var _create_buffer2 = _interopRequireDefault(_create_buffer); - -var _define_crc = _dereq_('./define_crc'); - -var _define_crc2 = _interopRequireDefault(_define_crc); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Generated by `./pycrc.py --algorithm=table-driven --model=ccitt --generate=c` -// prettier-ignore -var TABLE = [0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0]; - -if (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE); - -var crc16ccitt = (0, _define_crc2.default)('ccitt', function (buf, previous) { - if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf); - - var crc = typeof previous !== 'undefined' ? ~~previous : 0xffff; - - for (var index = 0; index < buf.length; index++) { - var byte = buf[index]; - crc = (TABLE[(crc >> 8 ^ byte) & 0xff] ^ crc << 8) & 0xffff; - } - - return crc; -}); - -exports.default = crc16ccitt; - -},{"./create_buffer":48,"./define_crc":49,"buffer":20}],40:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _buffer = _dereq_('buffer'); - -var _create_buffer = _dereq_('./create_buffer'); - -var _create_buffer2 = _interopRequireDefault(_create_buffer); - -var _define_crc = _dereq_('./define_crc'); - -var _define_crc2 = _interopRequireDefault(_define_crc); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Generated by `./pycrc.py --algorithm=table-driven --model=kermit --generate=c` -// prettier-ignore -var TABLE = [0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78]; - -if (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE); - -var crc16kermit = (0, _define_crc2.default)('kermit', function (buf, previous) { - if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf); - - var crc = typeof previous !== 'undefined' ? ~~previous : 0x0000; - - for (var index = 0; index < buf.length; index++) { - var byte = buf[index]; - crc = (TABLE[(crc ^ byte) & 0xff] ^ crc >> 8) & 0xffff; - } - - return crc; -}); - -exports.default = crc16kermit; - -},{"./create_buffer":48,"./define_crc":49,"buffer":20}],41:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _buffer = _dereq_('buffer'); - -var _create_buffer = _dereq_('./create_buffer'); - -var _create_buffer2 = _interopRequireDefault(_create_buffer); - -var _define_crc = _dereq_('./define_crc'); - -var _define_crc2 = _interopRequireDefault(_define_crc); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// Generated by `./pycrc.py --algorithm=table-driven --model=crc-16-modbus --generate=c` -// prettier-ignore -var TABLE = [0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040]; - -if (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE); - -var crc16modbus = (0, _define_crc2.default)('crc-16-modbus', function (buf, previous) { - if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf); - - var crc = typeof previous !== 'undefined' ? ~~previous : 0xffff; - - for (var index = 0; index < buf.length; index++) { - var byte = buf[index]; - crc = (TABLE[(crc ^ byte) & 0xff] ^ crc >> 8) & 0xffff; - } - - return crc; -}); +function XMLReader(){ -exports.default = crc16modbus; +} -},{"./create_buffer":48,"./define_crc":49,"buffer":20}],42:[function(_dereq_,module,exports){ -'use strict'; +XMLReader.prototype = { + parse:function(source,defaultNSMap,entityMap){ + var domBuilder = this.domBuilder; + domBuilder.startDocument(); + _copy(defaultNSMap ,defaultNSMap = {}) + parse(source,defaultNSMap,entityMap, + domBuilder,this.errorHandler); + domBuilder.endDocument(); + } +} +function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ + function fixedFromCharCode(code) { + // String.prototype.fromCharCode does not supports + // > 2 bytes unicode chars directly + if (code > 0xffff) { + code -= 0x10000; + var surrogate1 = 0xd800 + (code >> 10) + , surrogate2 = 0xdc00 + (code & 0x3ff); -Object.defineProperty(exports, "__esModule", { - value: true -}); + return String.fromCharCode(surrogate1, surrogate2); + } else { + return String.fromCharCode(code); + } + } + function entityReplacer(a){ + var k = a.slice(1,-1); + if (Object.hasOwnProperty.call(entityMap, k)) { + return entityMap[k]; + }else if(k.charAt(0) === '#'){ + return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x'))) + }else{ + errorHandler.error('entity not found:'+a); + return a; + } + } + function appendText(end){//has some bugs + if(end>start){ + var xt = source.substring(start,end).replace(/&#?\w+;/g,entityReplacer); + locator&&position(start); + domBuilder.characters(xt,0,end-start); + start = end + } + } + function position(p,m){ + while(p>=lineEnd && (m = linePattern.exec(source))){ + lineStart = m.index; + lineEnd = lineStart + m[0].length; + locator.lineNumber++; + //console.log('line++:',locator,startPos,endPos) + } + locator.columnNumber = p-lineStart+1; + } + var lineStart = 0; + var lineEnd = 0; + var linePattern = /.*(?:\r\n?|\n)|.*$/g + var locator = domBuilder.locator; -var _buffer = _dereq_('buffer'); + var parseStack = [{currentNSMap:defaultNSMapCopy}] + var closeMap = {}; + var start = 0; + while(true){ + try{ + var tagStart = source.indexOf('<',start); + if(tagStart<0){ + if(!source.substr(start).match(/^\s*$/)){ + var doc = domBuilder.doc; + var text = doc.createTextNode(source.substr(start)); + doc.appendChild(text); + domBuilder.currentElement = text; + } + return; + } + if(tagStart>start){ + appendText(tagStart); + } + switch(source.charAt(tagStart+1)){ + case '/': + var end = source.indexOf('>',tagStart+3); + var tagName = source.substring(tagStart + 2, end).replace(/[ \t\n\r]+$/g, ''); + var config = parseStack.pop(); + if(end<0){ -var _create_buffer = _dereq_('./create_buffer'); + tagName = source.substring(tagStart+2).replace(/[\s<].*/,''); + errorHandler.error("end tag name: "+tagName+' is not complete:'+config.tagName); + end = tagStart+1+tagName.length; + }else if(tagName.match(/\s + locator&&position(tagStart); + end = parseInstruction(source,tagStart,domBuilder); + break; + case '!':// start){ + start = end; + }else{ + //TODO: 这里有可能sax回退,有位置错误风险 + appendText(Math.max(tagStart,start)+1); + } + } +} +function copyLocator(f,t){ + t.lineNumber = f.lineNumber; + t.columnNumber = f.columnNumber; + return t; +} -var crc16xmodem = (0, _define_crc2.default)('xmodem', function (buf, previous) { - if (!_buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf); +/** + * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack); + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){ - var crc = typeof previous !== 'undefined' ? ~~previous : 0x0; + /** + * @param {string} qname + * @param {string} value + * @param {number} startIndex + */ + function addAttribute(qname, value, startIndex) { + if (el.attributeNames.hasOwnProperty(qname)) { + errorHandler.fatalError('Attribute ' + qname + ' redefined') + } + el.addValue( + qname, + // @see https://www.w3.org/TR/xml/#AVNormalize + // since the xmldom sax parser does not "interpret" DTD the following is not implemented: + // - recursive replacement of (DTD) entity references + // - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA + value.replace(/[\t\n\r]/g, ' ').replace(/&#?\w+;/g, entityReplacer), + startIndex + ) + } + var attrName; + var value; + var p = ++start; + var s = S_TAG;//status + while(true){ + var c = source.charAt(p); + switch(c){ + case '=': + if(s === S_ATTR){//attrName + attrName = source.slice(start,p); + s = S_EQ; + }else if(s === S_ATTR_SPACE){ + s = S_EQ; + }else{ + //fatalError: equal must after attrName or space after attrName + throw new Error('attribute equal must after attrName'); // No known test case + } + break; + case '\'': + case '"': + if(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE + ){//equal + if(s === S_ATTR){ + errorHandler.warning('attribute value must after "="') + attrName = source.slice(start,p) + } + start = p+1; + p = source.indexOf(c,start) + if(p>0){ + value = source.slice(start, p); + addAttribute(attrName, value, start-1); + s = S_ATTR_END; + }else{ + //fatalError: no end quot match + throw new Error('attribute value no end \''+c+'\' match'); + } + }else if(s == S_ATTR_NOQUOT_VALUE){ + value = source.slice(start, p); + addAttribute(attrName, value, start); + errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!'); + start = p+1; + s = S_ATTR_END + }else{ + //fatalError: no equal before + throw new Error('attribute value must after "="'); // No known test case + } + break; + case '/': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_ATTR_END: + case S_TAG_SPACE: + case S_TAG_CLOSE: + s =S_TAG_CLOSE; + el.closed = true; + case S_ATTR_NOQUOT_VALUE: + case S_ATTR: + break; + case S_ATTR_SPACE: + el.closed = true; + break; + //case S_EQ: + default: + throw new Error("attribute invalid close char('/')") // No known test case + } + break; + case ''://end document + errorHandler.error('unexpected end of input'); + if(s == S_TAG){ + el.setTagName(source.slice(start,p)); + } + return p; + case '>': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_ATTR_END: + case S_TAG_SPACE: + case S_TAG_CLOSE: + break;//normal + case S_ATTR_NOQUOT_VALUE://Compatible state + case S_ATTR: + value = source.slice(start,p); + if(value.slice(-1) === '/'){ + el.closed = true; + value = value.slice(0,-1) + } + case S_ATTR_SPACE: + if(s === S_ATTR_SPACE){ + value = attrName; + } + if(s == S_ATTR_NOQUOT_VALUE){ + errorHandler.warning('attribute "'+value+'" missed quot(")!'); + addAttribute(attrName, value, start) + }else{ + if(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){ + errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!') + } + addAttribute(value, value, start) + } + break; + case S_EQ: + throw new Error('attribute value missed!!'); + } +// console.log(tagName,tagNamePattern,tagNamePattern.test(tagName)) + return p; + /*xml space '\x20' | #x9 | #xD | #xA; */ + case '\u0080': + c = ' '; + default: + if(c<= ' '){//space + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p));//tagName + s = S_TAG_SPACE; + break; + case S_ATTR: + attrName = source.slice(start,p) + s = S_ATTR_SPACE; + break; + case S_ATTR_NOQUOT_VALUE: + var value = source.slice(start, p); + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + addAttribute(attrName, value, start) + case S_ATTR_END: + s = S_TAG_SPACE; + break; + //case S_TAG_SPACE: + //case S_EQ: + //case S_ATTR_SPACE: + // void();break; + //case S_TAG_CLOSE: + //ignore warning + } + }else{//not space +//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE +//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE + switch(s){ + //case S_TAG:void();break; + //case S_ATTR:void();break; + //case S_ATTR_NOQUOT_VALUE:void();break; + case S_ATTR_SPACE: + var tagName = el.tagName; + if (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) { + errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead2!!') + } + addAttribute(attrName, attrName, start); + start = p; + s = S_ATTR; + break; + case S_ATTR_END: + errorHandler.warning('attribute space is required"'+attrName+'"!!') + case S_TAG_SPACE: + s = S_ATTR; + start = p; + break; + case S_EQ: + s = S_ATTR_NOQUOT_VALUE; + start = p; + break; + case S_TAG_CLOSE: + throw new Error("elements closed character '/' and '>' must be connected to"); + } + } + }//end outer switch + //console.log('p++',p) + p++; + } +} +/** + * @return true if has new namespace define + */ +function appendElement(el,domBuilder,currentNSMap){ + var tagName = el.tagName; + var localNSMap = null; + //var currentNSMap = parseStack[parseStack.length-1].currentNSMap; + var i = el.length; + while(i--){ + var a = el[i]; + var qName = a.qName; + var value = a.value; + var nsp = qName.indexOf(':'); + if(nsp>0){ + var prefix = a.prefix = qName.slice(0,nsp); + var localName = qName.slice(nsp+1); + var nsPrefix = prefix === 'xmlns' && localName + }else{ + localName = qName; + prefix = null + nsPrefix = qName === 'xmlns' && '' + } + //can not set prefix,because prefix !== '' + a.localName = localName ; + //prefix == null for no ns prefix attribute + if(nsPrefix !== false){//hack!! + if(localNSMap == null){ + localNSMap = {} + //console.log(currentNSMap,0) + _copy(currentNSMap,currentNSMap={}) + //console.log(currentNSMap,1) + } + currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value; + a.uri = NAMESPACE.XMLNS + domBuilder.startPrefixMapping(nsPrefix, value) + } + } + var i = el.length; + while(i--){ + a = el[i]; + var prefix = a.prefix; + if(prefix){//no prefix attribute has no namespace + if(prefix === 'xml'){ + a.uri = NAMESPACE.XML; + }if(prefix !== 'xmlns'){ + a.uri = currentNSMap[prefix || ''] - for (var index = 0; index < buf.length; index++) { - var byte = buf[index]; - var code = crc >>> 8 & 0xff; + //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)} + } + } + } + var nsp = tagName.indexOf(':'); + if(nsp>0){ + prefix = el.prefix = tagName.slice(0,nsp); + localName = el.localName = tagName.slice(nsp+1); + }else{ + prefix = null;//important!! + localName = el.localName = tagName; + } + //no prefix element has default namespace + var ns = el.uri = currentNSMap[prefix || '']; + domBuilder.startElement(ns,localName,tagName,el); + //endPrefixMapping and startPrefixMapping have not any help for dom builder + //localNSMap = null + if(el.closed){ + domBuilder.endElement(ns,localName,tagName); + if(localNSMap){ + for (prefix in localNSMap) { + if (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) { + domBuilder.endPrefixMapping(prefix); + } + } + } + }else{ + el.currentNSMap = currentNSMap; + el.localNSMap = localNSMap; + //parseStack.push(el); + return true; + } +} +function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){ + if(/^(?:script|textarea)$/i.test(tagName)){ + var elEndStart = source.indexOf('',elStartEnd); + var text = source.substring(elStartEnd+1,elEndStart); + if(/[&<]/.test(text)){ + if(/^script$/i.test(tagName)){ + //if(!/\]\]>/.test(text)){ + //lexHandler.startCDATA(); + domBuilder.characters(text,0,text.length); + //lexHandler.endCDATA(); + return elEndStart; + //} + }//}else{//text area + text = text.replace(/&#?\w+;/g,entityReplacer); + domBuilder.characters(text,0,text.length); + return elEndStart; + //} - code ^= byte & 0xff; - code ^= code >>> 4; - crc = crc << 8 & 0xffff; - crc ^= code; - code = code << 5 & 0xffff; - crc ^= code; - code = code << 7 & 0xffff; - crc ^= code; - } + } + } + return elStartEnd+1; +} +function fixSelfClosed(source,elStartEnd,tagName,closeMap){ + //if(tagName in closeMap){ + var pos = closeMap[tagName]; + if(pos == null){ + //console.log(tagName) + pos = source.lastIndexOf('') + if(pos',start+4); + //append comment source.substring(4,end)//, - * and raw CDATA nodes. - * - * @param {Element} node - * @returns {Boolean} - * @api private - */ -function shouldIgnoreNode (node) { - return node.nodeType === TEXT_NODE - || node.nodeType === COMMENT_NODE - || node.nodeType === CDATA_NODE; -} + } + /* Flush if we may have to slide, otherwise block_start may become + * negative and the data will be gone: + */ + if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } -/** - * Check if the node is empty. Some plist file has such node: - * - * this node shoud be ignored. - * - * @see https://github.com/TooTallNate/plist.js/issues/66 - * @param {Element} node - * @returns {Boolean} - * @api private - */ -function isEmptyNode(node){ - if(!node.childNodes || node.childNodes.length === 0) { - return true; - } else { - return false; + s.insert = 0; + + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; } -} -function invariant(test, message) { - if (!test) { - throw new Error(message); + if (s.strstart > s.block_start) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ } + + return BS_NEED_MORE; } -/** - * Parses a Plist XML string. Returns an Object. - * - * @param {String} xml - the XML String to decode - * @returns {Mixed} the decoded value from the Plist XML - * @api public +/* =========================================================================== + * Compress as much as possible from the input stream, return the current + * block state. + * This function does not perform lazy evaluation of matches and inserts + * new strings in the dictionary only for unmatched strings or for short + * matches. It is used only for the fast compression options. */ +function deflate_fast(s, flush) { + var hash_head; /* head of the hash chain */ + var bflush; /* set if current block must be flushed */ -function parse (xml) { - var doc = new DOMParser().parseFromString(xml); - invariant( - doc.documentElement.nodeName === 'plist', - 'malformed document. First element should be ' - ); - var plist = parsePlistXML(doc.documentElement); + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { + break; /* flush the current block */ + } + } - // the root node gets interpreted as an Array, - // so pull out the inner data first - if (plist.length == 1) plist = plist[0]; + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } - return plist; -} + /* Find the longest match, discarding those <= prev_length. + * At this point we have always match_length < MIN_MATCH + */ + if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ + } + if (s.match_length >= MIN_MATCH) { + // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only -/** - * Convert an XML based plist document into a JSON representation. - * - * @param {Object} xml_node - current XML node in the plist - * @returns {Mixed} built up JSON object - * @api private - */ + /*** _tr_tally_dist(s, s.strstart - s.match_start, + s.match_length - MIN_MATCH, bflush); ***/ + bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); -function parsePlistXML (node) { - var i, new_obj, key, val, new_arr, res, counter, type; + s.lookahead -= s.match_length; - if (!node) - return null; + /* Insert new strings in the hash table only if the match length + * is not too large. This saves time but degrades compression. + */ + if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) { + s.match_length--; /* string at strstart already in table */ + do { + s.strstart++; + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + /* strstart never exceeds WSIZE-MAX_MATCH, so there are + * always MIN_MATCH bytes ahead. + */ + } while (--s.match_length !== 0); + s.strstart++; + } else + { + s.strstart += s.match_length; + s.match_length = 0; + s.ins_h = s.window[s.strstart]; + /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask; - if (node.nodeName === 'plist') { - new_arr = []; - if (isEmptyNode(node)) { - return new_arr; - } - for (i=0; i < node.childNodes.length; i++) { - if (!shouldIgnoreNode(node.childNodes[i])) { - new_arr.push( parsePlistXML(node.childNodes[i])); - } - } - return new_arr; - } else if (node.nodeName === 'dict') { - new_obj = {}; - key = null; - counter = 0; - if (isEmptyNode(node)) { - return new_obj; - } - for (i=0; i < node.childNodes.length; i++) { - if (shouldIgnoreNode(node.childNodes[i])) continue; - if (counter % 2 === 0) { - invariant( - node.childNodes[i].nodeName === 'key', - 'Missing key while parsing .' - ); - key = parsePlistXML(node.childNodes[i]); - } else { - invariant( - node.childNodes[i].nodeName !== 'key', - 'Unexpected key "' - + parsePlistXML(node.childNodes[i]) - + '" while parsing .' - ); - new_obj[key] = parsePlistXML(node.childNodes[i]); +//#if MIN_MATCH != 3 +// Call UPDATE_HASH() MIN_MATCH-3 more times +//#endif + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ } - counter += 1; - } - if (counter % 2 === 1) { - throw new Error('Missing value for "' + key + '" while parsing '); - } - return new_obj; + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s.window[s.strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - } else if (node.nodeName === 'array') { - new_arr = []; - if (isEmptyNode(node)) { - return new_arr; + s.lookahead--; + s.strstart++; } - for (i=0; i < node.childNodes.length; i++) { - if (!shouldIgnoreNode(node.childNodes[i])) { - res = parsePlistXML(node.childNodes[i]); - if (null != res) new_arr.push(res); + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; } + /***/ } - return new_arr; - - } else if (node.nodeName === '#text') { - // TODO: what should we do with text types? (CDATA sections) - - } else if (node.nodeName === 'key') { - if (isEmptyNode(node)) { - return ''; - } - return node.childNodes[0].nodeValue; - } else if (node.nodeName === 'string') { - res = ''; - if (isEmptyNode(node)) { - return res; + } + s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1); + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; } - for (i=0; i < node.childNodes.length; i++) { - var type = node.childNodes[i].nodeType; - if (type === TEXT_NODE || type === CDATA_NODE) { - res += node.childNodes[i].nodeValue; - } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; } - return res; + /***/ + } + return BS_BLOCK_DONE; +} - } else if (node.nodeName === 'integer') { - invariant( - !isEmptyNode(node), - 'Cannot parse "" as integer.' - ); - return parseInt(node.childNodes[0].nodeValue, 10); +/* =========================================================================== + * Same as above, but achieves better compression. We use a lazy + * evaluation for matches: a match is finally adopted only if there is + * no better match at the next window position. + */ +function deflate_slow(s, flush) { + var hash_head; /* head of hash chain */ + var bflush; /* set if current block must be flushed */ - } else if (node.nodeName === 'real') { - invariant( - !isEmptyNode(node), - 'Cannot parse "" as real.' - ); - res = ''; - for (i=0; i < node.childNodes.length; i++) { - if (node.childNodes[i].nodeType === TEXT_NODE) { - res += node.childNodes[i].nodeValue; + var max_insert; + + /* Process the input block. */ + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; } + if (s.lookahead === 0) { break; } /* flush the current block */ } - return parseFloat(res); - } else if (node.nodeName === 'data') { - res = ''; - if (isEmptyNode(node)) { - return Buffer.from(res, 'base64'); - } - for (i=0; i < node.childNodes.length; i++) { - if (node.childNodes[i].nodeType === TEXT_NODE) { - res += node.childNodes[i].nodeValue.replace(/\s+/g, ''); - } + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ } - return Buffer.from(res, 'base64'); - } else if (node.nodeName === 'date') { - invariant( - !isEmptyNode(node), - 'Cannot parse "" as Date.' - ) - return new Date(node.childNodes[0].nodeValue); + /* Find the longest match, discarding those <= prev_length. + */ + s.prev_length = s.match_length; + s.prev_match = s.match_start; + s.match_length = MIN_MATCH - 1; - } else if (node.nodeName === 'true') { - return true; + if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match && + s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ - } else if (node.nodeName === 'false') { - return false; - } -} + if (s.match_length <= 5 && + (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) { -}).call(this)}).call(this,_dereq_("buffer").Buffer) + /* If prev_match is also MIN_MATCH, match_start is garbage + * but we will ignore the current match anyway. + */ + s.match_length = MIN_MATCH - 1; + } + } + /* If there was a match at the previous step and the current + * match is not better, output the previous match: + */ + if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { + max_insert = s.strstart + s.lookahead - MIN_MATCH; + /* Do not insert strings in hash table beyond this. */ -},{"buffer":20,"xmldom":125}],77:[function(_dereq_,module,exports){ -(function (process){(function (){ -'use strict'; + //check_match(s, s.strstart-1, s.prev_match, s.prev_length); -if (typeof process === 'undefined' || - !process.version || - process.version.indexOf('v0.') === 0 || - process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { - module.exports = { nextTick: nextTick }; -} else { - module.exports = process -} + /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match, + s.prev_length - MIN_MATCH, bflush);***/ + bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); + /* Insert in hash table all strings up to the end of the match. + * strstart-1 and strstart are already inserted. If there is not + * enough lookahead, the last two strings are not inserted in + * the hash table. + */ + s.lookahead -= s.prev_length - 1; + s.prev_length -= 2; + do { + if (++s.strstart <= max_insert) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + } while (--s.prev_length !== 0); + s.match_available = 0; + s.match_length = MIN_MATCH - 1; + s.strstart++; -function nextTick(fn, arg1, arg2, arg3) { - if (typeof fn !== 'function') { - throw new TypeError('"callback" argument must be a function'); - } - var len = arguments.length; - var args, i; - switch (len) { - case 0: - case 1: - return process.nextTick(fn); - case 2: - return process.nextTick(function afterTickOne() { - fn.call(null, arg1); - }); - case 3: - return process.nextTick(function afterTickTwo() { - fn.call(null, arg1, arg2); - }); - case 4: - return process.nextTick(function afterTickThree() { - fn.call(null, arg1, arg2, arg3); - }); - default: - args = new Array(len - 1); - i = 0; - while (i < args.length) { - args[i++] = arguments[i]; + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + } else if (s.match_available) { + /* If there was no match at the previous position, output a + * single literal. If there was a match but the current match + * is longer, truncate the previous match to a single literal. + */ + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); + + if (bflush) { + /*** FLUSH_BLOCK_ONLY(s, 0) ***/ + flush_block_only(s, false); + /***/ + } + s.strstart++; + s.lookahead--; + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } else { + /* There is no previous match to compare with, wait for + * the next step to decide. + */ + s.match_available = 1; + s.strstart++; + s.lookahead--; } - return process.nextTick(function afterTick() { - fn.apply(null, args); - }); } -} + //Assert (flush != Z_NO_FLUSH, "no flush?"); + if (s.match_available) { + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); + s.match_available = 0; + } + s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + 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(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } -}).call(this)}).call(this,_dereq_('_process')) + return BS_BLOCK_DONE; +} -},{"_process":78}],78:[function(_dereq_,module,exports){ -// shim for using process in browser -var process = module.exports = {}; -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. +/* =========================================================================== + * For Z_RLE, simply look for runs of bytes, generate matches only of distance + * one. Do not maintain a hash table. (It will be regenerated if this run of + * deflate switches away from Z_RLE.) + */ +function deflate_rle(s, flush) { + var bflush; /* set if current block must be flushed */ + var prev; /* byte at distance one to match */ + var scan, strend; /* scan goes up to strend for length of run */ -var cachedSetTimeout; -var cachedClearTimeout; + var _win = s.window; -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the longest run, plus one for the unrolled loop. + */ + if (s.lookahead <= MAX_MATCH) { + fill_window(s); + if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { break; } /* flush the current block */ } - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); + /* See how many times the previous byte repeats */ + s.match_length = 0; + if (s.lookahead >= MIN_MATCH && s.strstart > 0) { + scan = s.strstart - 1; + prev = _win[scan]; + if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { + strend = s.strstart + MAX_MATCH; + do { + /*jshint noempty:false*/ + } while (prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + scan < strend); + s.match_length = MAX_MATCH - (strend - scan); + if (s.match_length > s.lookahead) { + s.match_length = s.lookahead; } + } + //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); } + /* Emit match if have run of MIN_MATCH or longer, else emit literal */ + if (s.match_length >= MIN_MATCH) { + //check_match(s, s.strstart, s.strstart - 1, s.match_length); + /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/ + bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH); -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; + s.lookahead -= s.match_length; + s.strstart += s.match_length; + s.match_length = 0; + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; + s.lookahead--; + s.strstart++; } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ } - if (queue.length) { - drainQueue(); + } + s.insert = 0; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + 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(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; } + /***/ + } + return BS_BLOCK_DONE; } -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; +/* =========================================================================== + * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. + * (It will be regenerated if this run of deflate switches away from Huffman.) + */ +function deflate_huff(s, flush) { + var bflush; /* set if current block must be flushed */ - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } + for (;;) { + /* Make sure that we have a literal to write. */ + if (s.lookahead === 0) { + fill_window(s); + if (s.lookahead === 0) { + if (flush === Z_NO_FLUSH) { + return BS_NEED_MORE; } - queueIndex = -1; - len = queue.length; + break; /* flush the current block */ + } } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } + /* Output a literal byte */ + s.match_length = 0; + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + s.lookahead--; + s.strstart++; + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); + } + s.insert = 0; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; } -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; +/* Values for max_lazy_match, good_match and max_chain_length, depending on + * the desired pack level (0..9). The values given below have been tuned to + * exclude worst case performance for pathological files. Better values may be + * found for specific files. + */ +function Config(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; +} -process.listeners = function (name) { return [] } +var configuration_table; -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; +configuration_table = [ + /* good lazy nice chain */ + new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */ + new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */ + new Config(4, 5, 16, 8, deflate_fast), /* 2 */ + new Config(4, 6, 32, 32, deflate_fast), /* 3 */ -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; + new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */ + new Config(8, 16, 32, 32, deflate_slow), /* 5 */ + new Config(8, 16, 128, 128, deflate_slow), /* 6 */ + new Config(8, 32, 128, 256, deflate_slow), /* 7 */ + new Config(32, 128, 258, 1024, deflate_slow), /* 8 */ + new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */ +]; -},{}],79:[function(_dereq_,module,exports){ -module.exports = _dereq_('./lib/_stream_duplex.js'); -},{"./lib/_stream_duplex.js":80}],80:[function(_dereq_,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. +/* =========================================================================== + * Initialize the "longest match" routines for a new zlib stream + */ +function lm_init(s) { + s.window_size = 2 * s.w_size; -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. + /*** CLEAR_HASH(s); ***/ + zero(s.head); // Fill with NIL (= 0); -'use strict'; + /* Set the default configuration parameters: + */ + 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; +} -var pna = _dereq_('process-nextick-args'); -/**/ -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; -}; -/**/ +function DeflateState() { + this.strm = null; /* pointer back to this zlib stream */ + this.status = 0; /* as the name implies */ + this.pending_buf = null; /* output still pending */ + this.pending_buf_size = 0; /* size of pending_buf */ + this.pending_out = 0; /* next pending byte to output to the stream */ + this.pending = 0; /* nb of bytes in the pending buffer */ + this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ + this.gzhead = null; /* gzip header information to write */ + this.gzindex = 0; /* where in extra, name, or comment */ + this.method = Z_DEFLATED; /* can only be DEFLATED */ + this.last_flush = -1; /* value of flush param for previous deflate call */ -module.exports = Duplex; + this.w_size = 0; /* LZ77 window size (32K by default) */ + this.w_bits = 0; /* log2(w_size) (8..16) */ + this.w_mask = 0; /* w_size - 1 */ -/**/ -var util = Object.create(_dereq_('core-util-is')); -util.inherits = _dereq_('inherits'); -/**/ + this.window = null; + /* Sliding window. Input bytes are read into the second half of the window, + * and move to the first half later to keep a dictionary of at least wSize + * bytes. With this organization, matches are limited to a distance of + * wSize-MAX_MATCH bytes, but this ensures that IO is always + * performed with a length multiple of the block size. + */ -var Readable = _dereq_('./_stream_readable'); -var Writable = _dereq_('./_stream_writable'); + this.window_size = 0; + /* Actual size of window: 2*wSize, except when the user input buffer + * is directly used as sliding window. + */ -util.inherits(Duplex, Readable); + this.prev = null; + /* Link to older string with same hash index. To limit the size of this + * array to 64K, this link is maintained only for the last 32K strings. + * An index in this array is thus a window index modulo 32K. + */ -{ - // avoid scope creep, the keys array can then be collected - var keys = objectKeys(Writable.prototype); - for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } -} + this.head = null; /* Heads of the hash chains or NIL. */ -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); + this.ins_h = 0; /* hash index of string to be inserted */ + this.hash_size = 0; /* number of elements in hash table */ + this.hash_bits = 0; /* log2(hash_size) */ + this.hash_mask = 0; /* hash_size-1 */ - Readable.call(this, options); - Writable.call(this, options); + this.hash_shift = 0; + /* Number of bits by which ins_h must be shifted at each input + * step. It must be such that after MIN_MATCH steps, the oldest + * byte no longer takes part in the hash key, that is: + * hash_shift * MIN_MATCH >= hash_bits + */ - if (options && options.readable === false) this.readable = false; + this.block_start = 0; + /* Window position at the beginning of the current output block. Gets + * negative when the window is moved backwards. + */ - if (options && options.writable === false) this.writable = false; + this.match_length = 0; /* length of best match */ + this.prev_match = 0; /* previous match */ + this.match_available = 0; /* set if previous match exists */ + this.strstart = 0; /* start of string to insert */ + this.match_start = 0; /* start of matching string */ + this.lookahead = 0; /* number of valid bytes ahead in window */ - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + this.prev_length = 0; + /* Length of the best match at previous step. Matches not greater than this + * are discarded. This is used in the lazy match evaluation. + */ - this.once('end', onend); -} + this.max_chain_length = 0; + /* To speed up deflation, hash chains are never searched beyond this + * length. A higher limit improves compression ratio but degrades the + * speed. + */ -Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._writableState.highWaterMark; - } -}); + this.max_lazy_match = 0; + /* Attempt to find a better match only when the current match is strictly + * smaller than this value. This mechanism is used only for compression + * levels >= 4. + */ + // That's alias to max_lazy_match, don't use directly + //this.max_insert_length = 0; + /* Insert new strings in the hash table only if the match length is not + * greater than this length. This saves time but degrades compression. + * max_insert_length is used only for compression levels <= 3. + */ -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; + this.level = 0; /* compression level (1..9) */ + this.strategy = 0; /* favor or force Huffman coding*/ - // no more data can be written. - // But allow more writes to happen in this tick. - pna.nextTick(onEndNT, this); -} + this.good_match = 0; + /* Use a faster search when the previous match is longer than this */ -function onEndNT(self) { - self.end(); -} + this.nice_match = 0; /* Stop searching when current match exceeds this */ -Object.defineProperty(Duplex.prototype, 'destroyed', { - get: function () { - if (this._readableState === undefined || this._writableState === undefined) { - return false; - } - return this._readableState.destroyed && this._writableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (this._readableState === undefined || this._writableState === undefined) { - return; - } + /* used by trees.c: */ - // backward compatibility, the user is explicitly - // managing destroyed - this._readableState.destroyed = value; - this._writableState.destroyed = value; - } -}); + /* Didn't use ct_data typedef below to suppress compiler warning */ -Duplex.prototype._destroy = function (err, cb) { - this.push(null); - this.end(); + // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ + // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ + // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ - pna.nextTick(cb, err); -}; -},{"./_stream_readable":82,"./_stream_writable":84,"core-util-is":25,"inherits":53,"process-nextick-args":77}],81:[function(_dereq_,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + // Use flat array of DOUBLE size, with interleaved fata, + // because JS does not support effective + 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); -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. + this.l_desc = null; /* desc. for literal tree */ + this.d_desc = null; /* desc. for distance tree */ + this.bl_desc = null; /* desc. for bit length tree */ -'use strict'; + //ush bl_count[MAX_BITS+1]; + this.bl_count = new utils.Buf16(MAX_BITS + 1); + /* number of codes at each bit length for an optimal tree */ -module.exports = PassThrough; + //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ + this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */ + zero(this.heap); -var Transform = _dereq_('./_stream_transform'); + this.heap_len = 0; /* number of elements in the heap */ + this.heap_max = 0; /* element of largest frequency */ + /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. + * The same heap array is used to build all trees. + */ -/**/ -var util = Object.create(_dereq_('core-util-is')); -util.inherits = _dereq_('inherits'); -/**/ + this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1]; + zero(this.depth); + /* Depth of each subtree used as tie breaker for trees of equal frequency + */ -util.inherits(PassThrough, Transform); + this.l_buf = 0; /* buffer index for literals or lengths */ -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); + this.lit_bufsize = 0; + /* Size of match buffer for literals/lengths. There are 4 reasons for + * limiting lit_bufsize to 64K: + * - frequencies can be kept in 16 bit counters + * - if compression is not successful for the first block, all input + * data is still in the window so we can still emit a stored block even + * when input comes from standard input. (This can also be done for + * all blocks if lit_bufsize is not greater than 32K.) + * - if compression is not successful for a file smaller than 64K, we can + * even emit a stored file instead of a stored block (saving 5 bytes). + * This is applicable only for zip (not gzip or zlib). + * - creating new Huffman trees less frequently may not provide fast + * adaptation to changes in the input data statistics. (Take for + * example a binary file with poorly compressible code followed by + * a highly compressible string table.) Smaller buffer sizes give + * fast adaptation but have of course the overhead of transmitting + * trees more frequently. + * - I can't count above 4 + */ - Transform.call(this, options); -} + this.last_lit = 0; /* running index in l_buf */ -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; -},{"./_stream_transform":83,"core-util-is":25,"inherits":53}],82:[function(_dereq_,module,exports){ -(function (process,global){(function (){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. + this.d_buf = 0; + /* Buffer index for distances. To simplify the code, d_buf and l_buf have + * the same number of elements. To use different lengths, an extra flag + * array would be necessary. + */ -'use strict'; + this.opt_len = 0; /* bit length of current block with optimal trees */ + this.static_len = 0; /* bit length of current block with static trees */ + this.matches = 0; /* number of string matches in current block */ + this.insert = 0; /* bytes at end of window left to insert */ -/**/ -var pna = _dereq_('process-nextick-args'); -/**/ + this.bi_buf = 0; + /* Output buffer. bits are inserted starting at the bottom (least + * significant bits). + */ + this.bi_valid = 0; + /* Number of valid bits in bi_buf. All bits above the last valid bit + * are always zero. + */ -module.exports = Readable; + // Used for window memory init. We safely ignore it for JS. That makes + // sense only for pointers and memory check tools. + //this.high_water = 0; + /* High water mark offset in window for initialized bytes -- bytes above + * this are set to zero in order to avoid memory check warnings when + * longest match routines access bytes past the input. This is then + * updated to the new high water mark. + */ +} -/**/ -var isArray = _dereq_('isarray'); -/**/ -/**/ -var Duplex; -/**/ +function deflateResetKeep(strm) { + var s; -Readable.ReadableState = ReadableState; + if (!strm || !strm.state) { + return err(strm, Z_STREAM_ERROR); + } -/**/ -var EE = _dereq_('events').EventEmitter; + strm.total_in = strm.total_out = 0; + strm.data_type = Z_UNKNOWN; -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; -}; -/**/ + s = strm.state; + s.pending = 0; + s.pending_out = 0; -/**/ -var Stream = _dereq_('./internal/streams/stream'); -/**/ + if (s.wrap < 0) { + s.wrap = -s.wrap; + /* was made negative by deflate(..., Z_FINISH); */ + } + s.status = (s.wrap ? INIT_STATE : BUSY_STATE); + strm.adler = (s.wrap === 2) ? + 0 // crc32(0, Z_NULL, 0) + : + 1; // adler32(0, Z_NULL, 0) + s.last_flush = Z_NO_FLUSH; + trees._tr_init(s); + return Z_OK; +} -/**/ -var Buffer = _dereq_('safe-buffer').Buffer; -var OurUint8Array = global.Uint8Array || function () {}; -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); +function deflateReset(strm) { + var ret = deflateResetKeep(strm); + if (ret === Z_OK) { + lm_init(strm.state); + } + return ret; } -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; + + +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; } -/**/ -/**/ -var util = Object.create(_dereq_('core-util-is')); -util.inherits = _dereq_('inherits'); -/**/ +function deflateInit2(strm, level, method, windowBits, memLevel, strategy) { + if (!strm) { // === Z_NULL + return Z_STREAM_ERROR; + } + var wrap = 1; + + if (level === Z_DEFAULT_COMPRESSION) { + level = 6; + } + + if (windowBits < 0) { /* suppress zlib wrapper */ + wrap = 0; + windowBits = -windowBits; + } + + else if (windowBits > 15) { + wrap = 2; /* write gzip wrapper instead */ + windowBits -= 16; + } + -/**/ -var debugUtil = _dereq_('util'); -var debug = void 0; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ + 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); + } -var BufferList = _dereq_('./internal/streams/BufferList'); -var destroyImpl = _dereq_('./internal/streams/destroy'); -var StringDecoder; -util.inherits(Readable, Stream); + if (windowBits === 8) { + windowBits = 9; + } + /* until 256-byte window bug fixed */ -var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + var s = new DeflateState(); -function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + strm.state = s; + s.strm = strm; - // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; -} + s.wrap = wrap; + s.gzhead = null; + s.w_bits = windowBits; + s.w_size = 1 << s.w_bits; + s.w_mask = s.w_size - 1; -function ReadableState(options, stream) { - Duplex = Duplex || _dereq_('./_stream_duplex'); + s.hash_bits = memLevel + 7; + s.hash_size = 1 << s.hash_bits; + s.hash_mask = s.hash_size - 1; + s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); - options = options || {}; + s.window = new utils.Buf8(s.w_size * 2); + s.head = new utils.Buf16(s.hash_size); + s.prev = new utils.Buf16(s.w_size); - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - var isDuplex = stream instanceof Duplex; + // Don't need mem init magic for JS. + //s.high_water = 0; /* nothing written to s->window yet */ - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; + s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + s.pending_buf_size = s.lit_bufsize * 4; - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var readableHwm = options.readableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; + //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); + //s->pending_buf = (uchf *) overlay; + s.pending_buf = new utils.Buf8(s.pending_buf_size); - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; + // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`) + //s->d_buf = overlay + s->lit_bufsize/sizeof(ush); + s.d_buf = 1 * s.lit_bufsize; - // cast to ints. - this.highWaterMark = Math.floor(this.highWaterMark); + //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; + s.l_buf = (1 + 2) * s.lit_bufsize; - // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; + s.level = level; + s.strategy = strategy; + s.method = method; - // a flag to be able to tell if the event 'readable'/'data' is emitted - // immediately, or on a later tick. We set this to true at first, because - // any actions that shouldn't happen until "later" should generally also - // not happen before the first read call. - this.sync = true; + return deflateReset(strm); +} - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; +function deflateInit(strm, level) { + return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); +} - // has it been destroyed - this.destroyed = false; - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; +function deflate(strm, flush) { + var old_flush, s; + var beg, val; // for gzip header write only - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; + if (!strm || !strm.state || + flush > Z_BLOCK || flush < 0) { + return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR; + } - // if true, a maybeReadMore has been scheduled - this.readingMore = false; + s = strm.state; - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) StringDecoder = _dereq_('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; + if (!strm.output || + (!strm.input && strm.avail_in !== 0) || + (s.status === FINISH_STATE && flush !== Z_FINISH)) { + return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR); } -} -function Readable(options) { - Duplex = Duplex || _dereq_('./_stream_duplex'); + s.strm = strm; /* just in case */ + old_flush = s.last_flush; + s.last_flush = flush; - if (!(this instanceof Readable)) return new Readable(options); + /* Write the header */ + if (s.status === INIT_STATE) { - this._readableState = new ReadableState(options, this); + if (s.wrap === 2) { // GZIP header + strm.adler = 0; //crc32(0L, Z_NULL, 0); + put_byte(s, 31); + put_byte(s, 139); + put_byte(s, 8); + if (!s.gzhead) { // s->gzhead == Z_NULL + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, OS_CODE); + s.status = BUSY_STATE; + } + else { + put_byte(s, (s.gzhead.text ? 1 : 0) + + (s.gzhead.hcrc ? 2 : 0) + + (!s.gzhead.extra ? 0 : 4) + + (!s.gzhead.name ? 0 : 8) + + (!s.gzhead.comment ? 0 : 16) + ); + put_byte(s, s.gzhead.time & 0xff); + put_byte(s, (s.gzhead.time >> 8) & 0xff); + put_byte(s, (s.gzhead.time >> 16) & 0xff); + put_byte(s, (s.gzhead.time >> 24) & 0xff); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, s.gzhead.os & 0xff); + if (s.gzhead.extra && s.gzhead.extra.length) { + put_byte(s, s.gzhead.extra.length & 0xff); + put_byte(s, (s.gzhead.extra.length >> 8) & 0xff); + } + if (s.gzhead.hcrc) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0); + } + s.gzindex = 0; + s.status = EXTRA_STATE; + } + } + else // DEFLATE header + { + var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8; + var level_flags = -1; - // legacy - this.readable = true; + if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { + level_flags = 0; + } else if (s.level < 6) { + level_flags = 1; + } else if (s.level === 6) { + level_flags = 2; + } else { + level_flags = 3; + } + header |= (level_flags << 6); + if (s.strstart !== 0) { header |= PRESET_DICT; } + header += 31 - (header % 31); - if (options) { - if (typeof options.read === 'function') this._read = options.read; + s.status = BUSY_STATE; + putShortMSB(s, header); - if (typeof options.destroy === 'function') this._destroy = options.destroy; + /* Save the adler32 of the preset dictionary: */ + if (s.strstart !== 0) { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } + strm.adler = 1; // adler32(0L, Z_NULL, 0); + } + } + +//#ifdef GZIP + if (s.status === EXTRA_STATE) { + if (s.gzhead.extra/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + + while (s.gzindex < (s.gzhead.extra.length & 0xffff)) { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + break; + } + } + put_byte(s, s.gzhead.extra[s.gzindex] & 0xff); + s.gzindex++; + } + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (s.gzindex === s.gzhead.extra.length) { + s.gzindex = 0; + s.status = NAME_STATE; + } + } + else { + s.status = NAME_STATE; + } } + if (s.status === NAME_STATE) { + if (s.gzhead.name/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; - Stream.call(this); -} + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; + break; + } + } + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.name.length) { + val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); -Object.defineProperty(Readable.prototype, 'destroyed', { - get: function () { - if (this._readableState === undefined) { - return false; + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.gzindex = 0; + s.status = COMMENT_STATE; + } } - return this._readableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._readableState) { - return; + else { + s.status = COMMENT_STATE; } - - // backward compatibility, the user is explicitly - // managing destroyed - this._readableState.destroyed = value; } -}); - -Readable.prototype.destroy = destroyImpl.destroy; -Readable.prototype._undestroy = destroyImpl.undestroy; -Readable.prototype._destroy = function (err, cb) { - this.push(null); - cb(err); -}; + if (s.status === COMMENT_STATE) { + if (s.gzhead.comment/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - var skipChunkCheck; + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; + break; + } + } + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.comment.length) { + val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); - if (!state.objectMode) { - if (typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = Buffer.from(chunk, encoding); - encoding = ''; + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.status = HCRC_STATE; } - skipChunkCheck = true; } - } else { - skipChunkCheck = true; + else { + s.status = HCRC_STATE; + } + } + if (s.status === HCRC_STATE) { + if (s.gzhead.hcrc) { + if (s.pending + 2 > s.pending_buf_size) { + flush_pending(strm); + } + if (s.pending + 2 <= s.pending_buf_size) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + strm.adler = 0; //crc32(0L, Z_NULL, 0); + s.status = BUSY_STATE; + } + } + else { + s.status = BUSY_STATE; + } } +//#endif - return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; + /* Flush as much pending output as possible */ + if (s.pending !== 0) { + flush_pending(strm); + if (strm.avail_out === 0) { + /* Since avail_out is 0, deflate will be called again with + * more output space, but possibly with both pending and + * avail_in equal to zero. There won't be anything to do, + * but this is not an error situation so make sure we + * return OK instead of BUF_ERROR at next call of deflate: + */ + s.last_flush = -1; + return Z_OK; + } -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function (chunk) { - return readableAddChunk(this, chunk, null, true, false); -}; + /* Make sure there is something to do and avoid duplicate consecutive + * flushes. For repeated and useless calls with Z_FINISH, we keep + * returning Z_STREAM_END instead of Z_BUF_ERROR. + */ + } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && + flush !== Z_FINISH) { + return err(strm, Z_BUF_ERROR); + } -function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { - var state = stream._readableState; - if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else { - var er; - if (!skipChunkCheck) er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { - chunk = _uint8ArrayToBuffer(chunk); + /* User must not provide more input after the first FINISH: */ + if (s.status === FINISH_STATE && strm.avail_in !== 0) { + return err(strm, Z_BUF_ERROR); + } + + /* Start a new block or continue the current one. + */ + if (strm.avail_in !== 0 || s.lookahead !== 0 || + (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) { + var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) : + (s.strategy === Z_RLE ? deflate_rle(s, flush) : + configuration_table[s.level].func(s, flush)); + + if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { + s.status = FINISH_STATE; + } + if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { + if (strm.avail_out === 0) { + s.last_flush = -1; + /* avoid BUF_ERROR next call, see above */ } + return Z_OK; + /* If flush != Z_NO_FLUSH && avail_out == 0, the next call + * of deflate should use the same flush parameter to make sure + * that the flush is complete. So we don't have to output an + * empty block here, this will be done at next call. This also + * ensures that for a very small output buffer, we emit at most + * one empty block. + */ + } + if (bstate === BS_BLOCK_DONE) { + if (flush === Z_PARTIAL_FLUSH) { + trees._tr_align(s); + } + else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ - if (addToFront) { - if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); - } else if (state.ended) { - stream.emit('error', new Error('stream.push() after EOF')); - } else { - state.reading = false; - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk); - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); - } else { - addChunk(stream, state, chunk, false); + trees._tr_stored_block(s, 0, 0, false); + /* For a full flush, this empty block will be recognized + * as a special marker by inflate_sync(). + */ + if (flush === Z_FULL_FLUSH) { + /*** CLEAR_HASH(s); ***/ /* forget history */ + zero(s.head); // Fill with NIL (= 0); + + if (s.lookahead === 0) { + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } } } - } else if (!addToFront) { - state.reading = false; + flush_pending(strm); + if (strm.avail_out === 0) { + s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */ + return Z_OK; + } } } + //Assert(strm->avail_out > 0, "bug2"); + //if (strm.avail_out <= 0) { throw new Error("bug2");} + + if (flush !== Z_FINISH) { return Z_OK; } + if (s.wrap <= 0) { return Z_STREAM_END; } + + /* Write the trailer */ + if (s.wrap === 2) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + put_byte(s, (strm.adler >> 16) & 0xff); + put_byte(s, (strm.adler >> 24) & 0xff); + put_byte(s, strm.total_in & 0xff); + put_byte(s, (strm.total_in >> 8) & 0xff); + put_byte(s, (strm.total_in >> 16) & 0xff); + put_byte(s, (strm.total_in >> 24) & 0xff); + } + else + { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } - return needMoreData(state); + flush_pending(strm); + /* If avail_out is zero, the application will call deflate again + * to flush the rest. + */ + if (s.wrap > 0) { s.wrap = -s.wrap; } + /* write the trailer only once! */ + return s.pending !== 0 ? Z_OK : Z_STREAM_END; } -function addChunk(stream, state, chunk, addToFront) { - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); +function deflateEnd(strm) { + var status; - if (state.needReadable) emitReadable(stream); + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR; } - maybeReadMore(stream, state); -} -function chunkInvalid(state, chunk) { - var er; - if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); + status = strm.state.status; + if (status !== INIT_STATE && + status !== EXTRA_STATE && + status !== NAME_STATE && + status !== COMMENT_STATE && + status !== HCRC_STATE && + status !== BUSY_STATE && + status !== FINISH_STATE + ) { + return err(strm, Z_STREAM_ERROR); } - return er; -} -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); + strm.state = null; + + return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK; } -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; -// backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = _dereq_('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; +/* ========================================================================= + * Initializes the compression dictionary from the given byte + * sequence without producing any compressed output. + */ +function deflateSetDictionary(strm, dictionary) { + var dictLength = dictionary.length; -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; -} + var s; + var str, n; + var wrap; + var avail; + var next; + var input; + var tmpDict; -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; - // Don't have enough - if (!state.ended) { - state.needReadable = true; - return 0; + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR; } - return state.length; -} -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; + s = strm.state; + wrap = s.wrap; - if (n !== 0) state.emittedReadable = false; + if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) { + return Z_STREAM_ERROR; + } - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; + /* when using zlib wrappers, compute Adler-32 for provided dictionary */ + if (wrap === 1) { + /* adler32(strm->adler, dictionary, dictLength); */ + strm.adler = adler32(strm.adler, dictionary, dictLength, 0); } - n = howMuchToRead(n, state); + s.wrap = 0; /* avoid computing Adler-32 in read_buf */ - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; + /* if dictionary would fill window, just replace the history */ + if (dictLength >= s.w_size) { + if (wrap === 0) { /* already empty otherwise */ + /*** CLEAR_HASH(s); ***/ + zero(s.head); // Fill with NIL (= 0); + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + /* use the tail */ + // dictionary = dictionary.slice(dictLength - s.w_size); + tmpDict = new utils.Buf8(s.w_size); + utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0); + dictionary = tmpDict; + dictLength = s.w_size; } + /* insert dictionary into window and hash */ + avail = strm.avail_in; + next = strm.next_in; + input = strm.input; + strm.avail_in = dictLength; + strm.next_in = 0; + strm.input = dictionary; + fill_window(s); + while (s.lookahead >= MIN_MATCH) { + str = s.strstart; + n = s.lookahead - (MIN_MATCH - 1); + do { + /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); + s.prev[str & s.w_mask] = s.head[s.ins_h]; - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); + s.head[s.ins_h] = str; + str++; + } while (--n); + s.strstart = str; + s.lookahead = MIN_MATCH - 1; + fill_window(s); } + s.strstart += s.lookahead; + s.block_start = s.strstart; + s.insert = s.lookahead; + s.lookahead = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + strm.next_in = next; + strm.input = input; + strm.avail_in = avail; + s.wrap = wrap; + return Z_OK; +} - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); - } - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; +exports.deflateInit = deflateInit; +exports.deflateInit2 = deflateInit2; +exports.deflateReset = deflateReset; +exports.deflateResetKeep = deflateResetKeep; +exports.deflateSetHeader = deflateSetHeader; +exports.deflate = deflate; +exports.deflateEnd = deflateEnd; +exports.deflateSetDictionary = deflateSetDictionary; +exports.deflateInfo = 'pako deflate (from Nodeca project)'; + +/* Not implemented +exports.deflateBound = deflateBound; +exports.deflateCopy = deflateCopy; +exports.deflateParams = deflateParams; +exports.deflatePending = deflatePending; +exports.deflatePrime = deflatePrime; +exports.deflateTune = deflateTune; +*/ - if (ret === null) { - state.needReadable = true; - n = 0; - } else { - state.length -= n; - } +},{"../utils/common":81,"./adler32":82,"./crc32":84,"./messages":89,"./trees":90}],86:[function(_dereq_,module,exports){ +'use strict'; - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable(this); - } +// See state defs from inflate.js +var BAD = 30; /* got a data error -- remain here until reset */ +var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ - if (ret !== null) this.emit('data', ret); +/* + Decode literal, length, and distance codes and write out the resulting + literal and match bytes until either not enough input or output is + available, an end-of-block is encountered, or a data error is encountered. + When large enough input and output buffers are supplied to inflate(), for + example, a 16K input buffer and a 64K output buffer, more than 95% of the + inflate execution time is spent in this routine. - return ret; -}; + Entry assumptions: -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; + state.mode === LEN + strm.avail_in >= 6 + strm.avail_out >= 258 + start >= strm.avail_out + state.bits < 8 - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} + On return, state.mode is one of: -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); - } -} + LEN -- ran out of enough output space or enough available input + TYPE -- reached end of block code, inflate() to interpret next block + BAD -- error in block data -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} + Notes: -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - pna.nextTick(maybeReadMore_, stream, state); - } -} + - The maximum input bits used by a length/distance pair is 15 bits for the + length code, 5 bits for the length extra, 15 bits for the distance code, + and 13 bits for the distance extra. This totals 48 bits, or six bytes. + Therefore if strm.avail_in >= 6, then there is enough input to avoid + checking for available input while decoding. -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; -} + - The maximum bytes that a single length/distance pair can output is 258 + bytes, which is the maximum length that can be coded. inflate_fast() + requires strm.avail_out >= 258 for each loop to avoid checking for + output space. + */ +module.exports = function inflate_fast(strm, start) { + var state; + var _in; /* local strm.input */ + var last; /* have enough input while in < last */ + var _out; /* local strm.output */ + var beg; /* inflate()'s initial strm.output */ + var end; /* while out < end, enough space available */ +//#ifdef INFLATE_STRICT + var dmax; /* maximum distance from zlib header */ +//#endif + var wsize; /* window size or zero if not using window */ + var whave; /* valid bytes in the window */ + var wnext; /* window write index */ + // Use `s_window` instead `window`, avoid conflict with instrumentation tools + var s_window; /* allocated sliding window, if wsize != 0 */ + var hold; /* local strm.hold */ + var bits; /* local strm.bits */ + var lcode; /* local strm.lencode */ + var dcode; /* local strm.distcode */ + var lmask; /* mask for first level of length codes */ + var dmask; /* mask for first level of distance codes */ + var here; /* retrieved table entry */ + var op; /* code bits, operation, extra bits, or */ + /* window position, window bytes to copy */ + var len; /* match length, unused bytes */ + var dist; /* match distance */ + var from; /* where to copy match from */ + var from_source; -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - this.emit('error', new Error('_read() is not implemented')); -}; -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; + var input, output; // JS specific, because we have no pointers - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + /* copy state to local variables */ + state = strm.state; + //here = state.here; + _in = strm.next_in; + input = strm.input; + last = _in + (strm.avail_in - 5); + _out = strm.next_out; + output = strm.output; + beg = _out - (start - strm.avail_out); + end = _out + (strm.avail_out - 257); +//#ifdef INFLATE_STRICT + dmax = state.dmax; +//#endif + wsize = state.wsize; + whave = state.whave; + wnext = state.wnext; + s_window = state.window; + hold = state.hold; + bits = state.bits; + lcode = state.lencode; + dcode = state.distcode; + lmask = (1 << state.lenbits) - 1; + dmask = (1 << state.distbits) - 1; - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - var endFn = doEnd ? onend : unpipe; - if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); + /* decode literals and length/distances until end-of-block or not enough + input data or output space */ - dest.on('unpipe', onunpipe); - function onunpipe(readable, unpipeInfo) { - debug('onunpipe'); - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true; - cleanup(); - } + top: + do { + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; } - } - function onend() { - debug('onend'); - dest.end(); - } + here = lcode[hold & lmask]; - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); + dolen: + for (;;) { // Goto emulation + op = here >>> 24/*here.bits*/; + hold >>>= op; + bits -= op; + op = (here >>> 16) & 0xff/*here.op*/; + if (op === 0) { /* literal */ + //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + // "inflate: literal '%c'\n" : + // "inflate: literal 0x%02x\n", here.val)); + output[_out++] = here & 0xffff/*here.val*/; + } + else if (op & 16) { /* length base */ + len = here & 0xffff/*here.val*/; + op &= 15; /* number of extra bits */ + if (op) { + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + len += hold & ((1 << op) - 1); + hold >>>= op; + bits -= op; + } + //Tracevv((stderr, "inflate: length %u\n", len)); + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; + } + here = dcode[hold & dmask]; - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', unpipe); - src.removeListener('data', ondata); + dodist: + for (;;) { // goto emulation + op = here >>> 24/*here.bits*/; + hold >>>= op; + bits -= op; + op = (here >>> 16) & 0xff/*here.op*/; - cleanedUp = true; + if (op & 16) { /* distance base */ + dist = here & 0xffff/*here.val*/; + op &= 15; /* number of extra bits */ + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + } + dist += hold & ((1 << op) - 1); +//#ifdef INFLATE_STRICT + if (dist > dmax) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break top; + } +//#endif + hold >>>= op; + bits -= op; + //Tracevv((stderr, "inflate: distance %u\n", dist)); + op = _out - beg; /* max distance in output */ + if (dist > op) { /* see if copy from window */ + op = dist - op; /* distance back in window */ + if (op > whave) { + if (state.sane) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break top; + } - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility +//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR +// if (len <= op - whave) { +// do { +// output[_out++] = 0; +// } while (--len); +// continue top; +// } +// len -= op - whave; +// do { +// output[_out++] = 0; +// } while (--op > whave); +// if (op === 0) { +// from = _out - dist; +// do { +// output[_out++] = output[from++]; +// } while (--len); +// continue top; +// } +//#endif + } + from = 0; // window index + from_source = s_window; + if (wnext === 0) { /* very common case */ + from += wsize - op; + if (op < len) { /* some from window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + else if (wnext < op) { /* wrap around window */ + from += wsize + wnext - op; + op -= wnext; + if (op < len) { /* some from end of window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = 0; + if (wnext < len) { /* some from start of window */ + op = wnext; + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + } + else { /* contiguous in window */ + from += wnext - op; + if (op < len) { /* some from window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + while (len > 2) { + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + len -= 3; + } + if (len) { + output[_out++] = from_source[from++]; + if (len > 1) { + output[_out++] = from_source[from++]; + } + } + } + else { + from = _out - dist; /* copy direct from output */ + do { /* minimum length is three */ + output[_out++] = output[from++]; + output[_out++] = output[from++]; + output[_out++] = output[from++]; + len -= 3; + } while (len > 2); + if (len) { + output[_out++] = output[from++]; + if (len > 1) { + output[_out++] = output[from++]; + } + } + } + } + else if ((op & 64) === 0) { /* 2nd level distance code */ + here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; + continue dodist; + } + else { + strm.msg = 'invalid distance code'; + state.mode = BAD; + break top; + } - // If the user pushes more data while we're writing to dest then we'll end up - // in ondata again. However, we only want to increase awaitDrain once because - // dest will only emit one 'drain' event for the multiple writes. - // => Introduce a guard on increasing awaitDrain. - var increasedAwaitDrain = false; - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - increasedAwaitDrain = false; - var ret = dest.write(chunk); - if (false === ret && !increasedAwaitDrain) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - increasedAwaitDrain = true; + break; // need to emulate goto via "continue" + } } - src.pause(); + else if ((op & 64) === 0) { /* 2nd level length code */ + here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; + continue dolen; + } + else if (op & 32) { /* end-of-block */ + //Tracevv((stderr, "inflate: end of block\n")); + state.mode = TYPE; + break top; + } + else { + strm.msg = 'invalid literal/length code'; + state.mode = BAD; + break top; + } + + break; // need to emulate goto via "continue" } - } + } while (_in < last && _out < end); - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } + /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ + len = bits >> 3; + _in -= len; + bits -= len << 3; + hold &= (1 << bits) - 1; - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); + /* update state and return */ + strm.next_in = _in; + strm.next_out = _out; + strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last)); + strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end)); + state.hold = hold; + state.bits = bits; + return; +}; - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); +},{}],87:[function(_dereq_,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } +var utils = _dereq_('../utils/common'); +var adler32 = _dereq_('./adler32'); +var crc32 = _dereq_('./crc32'); +var inflate_fast = _dereq_('./inffast'); +var inflate_table = _dereq_('./inftrees'); - // tell the dest that it's being piped to - dest.emit('pipe', src); +var CODES = 0; +var LENS = 1; +var DISTS = 2; - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } +/* Public constants ==========================================================*/ +/* ===========================================================================*/ - return dest; -}; -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} +/* Allowed flush values; see deflate() and inflate() below for details */ +//var Z_NO_FLUSH = 0; +//var Z_PARTIAL_FLUSH = 1; +//var Z_SYNC_FLUSH = 2; +//var Z_FULL_FLUSH = 3; +var Z_FINISH = 4; +var Z_BLOCK = 5; +var Z_TREES = 6; -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - var unpipeInfo = { hasUnpiped: false }; - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ +var Z_OK = 0; +var Z_STREAM_END = 1; +var Z_NEED_DICT = 2; +//var Z_ERRNO = -1; +var Z_STREAM_ERROR = -2; +var Z_DATA_ERROR = -3; +var Z_MEM_ERROR = -4; +var Z_BUF_ERROR = -5; +//var Z_VERSION_ERROR = -6; - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; +/* The deflate compression method */ +var Z_DEFLATED = 8; - if (!dest) dest = state.pipes; - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this, unpipeInfo); - return this; - } +/* STATES ====================================================================*/ +/* ===========================================================================*/ - // slow case. multiple pipe destinations. - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; +var HEAD = 1; /* i: waiting for magic header */ +var FLAGS = 2; /* i: waiting for method and flags (gzip) */ +var TIME = 3; /* i: waiting for modification time (gzip) */ +var OS = 4; /* i: waiting for extra flags and operating system (gzip) */ +var EXLEN = 5; /* i: waiting for extra length (gzip) */ +var EXTRA = 6; /* i: waiting for extra bytes (gzip) */ +var NAME = 7; /* i: waiting for end of file name (gzip) */ +var COMMENT = 8; /* i: waiting for end of comment (gzip) */ +var HCRC = 9; /* i: waiting for header crc (gzip) */ +var DICTID = 10; /* i: waiting for dictionary check value */ +var DICT = 11; /* waiting for inflateSetDictionary() call */ +var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ +var TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */ +var STORED = 14; /* i: waiting for stored size (length and complement) */ +var COPY_ = 15; /* i/o: same as COPY below, but only first time in */ +var COPY = 16; /* i/o: waiting for input or output to copy stored block */ +var TABLE = 17; /* i: waiting for dynamic block table lengths */ +var LENLENS = 18; /* i: waiting for code length code lengths */ +var CODELENS = 19; /* i: waiting for length/lit and distance code lengths */ +var LEN_ = 20; /* i: same as LEN below, but only first time in */ +var LEN = 21; /* i: waiting for length/lit/eob code */ +var LENEXT = 22; /* i: waiting for length extra bits */ +var DIST = 23; /* i: waiting for distance code */ +var DISTEXT = 24; /* i: waiting for distance extra bits */ +var MATCH = 25; /* o: waiting for output space to copy string */ +var LIT = 26; /* o: waiting for output space to write literal */ +var CHECK = 27; /* i: waiting for 32-bit check value */ +var LENGTH = 28; /* i: waiting for 32-bit length (gzip) */ +var DONE = 29; /* finished check, done -- remain here until reset */ +var BAD = 30; /* got a data error -- remain here until reset */ +var MEM = 31; /* got an inflate() memory error -- remain here until reset */ +var SYNC = 32; /* looking for synchronization bytes to restart inflate() */ - for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, unpipeInfo); - }return this; - } +/* ===========================================================================*/ - // try to find the right one. - var index = indexOf(state.pipes, dest); - if (index === -1) return this; - state.pipes.splice(index, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - dest.emit('unpipe', this, unpipeInfo); +var ENOUGH_LENS = 852; +var ENOUGH_DISTS = 592; +//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); - return this; -}; +var MAX_WBITS = 15; +/* 32K LZ77 window */ +var DEF_WBITS = MAX_WBITS; -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - if (ev === 'data') { - // Start flowing on next tick if stream isn't explicitly paused - if (this._readableState.flowing !== false) this.resume(); - } else if (ev === 'readable') { - var state = this._readableState; - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.emittedReadable = false; - if (!state.reading) { - pna.nextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this); - } - } - } +function zswap32(q) { + return (((q >>> 24) & 0xff) + + ((q >>> 8) & 0xff00) + + ((q & 0xff00) << 8) + + ((q & 0xff) << 24)); +} - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} +function InflateState() { + this.mode = 0; /* current inflate mode */ + this.last = false; /* true if processing last block */ + this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ + this.havedict = false; /* true if dictionary provided */ + this.flags = 0; /* gzip header method and flags (0 if zlib) */ + this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */ + this.check = 0; /* protected copy of check value */ + this.total = 0; /* protected copy of output count */ + // TODO: may be {} + this.head = null; /* where to save gzip header information */ -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; -}; + /* sliding window */ + this.wbits = 0; /* log base 2 of requested window size */ + this.wsize = 0; /* window size or zero if not using window */ + this.whave = 0; /* valid bytes in the window */ + this.wnext = 0; /* window write index */ + this.window = null; /* allocated sliding window, if needed */ -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - pna.nextTick(resume_, stream, state); - } -} + /* bit accumulator */ + this.hold = 0; /* input bit accumulator */ + this.bits = 0; /* number of bits in "in" */ -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } + /* for string and stored block copying */ + this.length = 0; /* literal or length of data to copy */ + this.offset = 0; /* distance back to copy string from */ - state.resumeScheduled = false; - state.awaitDrain = 0; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} + /* for table and code decoding */ + this.extra = 0; /* extra bits needed */ -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; + /* fixed and dynamic code tables */ + this.lencode = null; /* starting table for length/literal codes */ + this.distcode = null; /* starting table for distance codes */ + this.lenbits = 0; /* index bits for lencode */ + this.distbits = 0; /* index bits for distcode */ -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - while (state.flowing && stream.read() !== null) {} + /* dynamic table building */ + this.ncode = 0; /* number of code length code lengths */ + this.nlen = 0; /* number of length code lengths */ + this.ndist = 0; /* number of distance code lengths */ + this.have = 0; /* number of code lengths in lens[] */ + this.next = null; /* next available space in codes[] */ + + this.lens = new utils.Buf16(320); /* temporary storage for code lengths */ + this.work = new utils.Buf16(288); /* work area for code table building */ + + /* + because we don't have pointers in js, we use lencode and distcode directly + as buffers so we don't need codes + */ + //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */ + this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */ + this.distdyn = null; /* dynamic table for distance codes (JS specific) */ + this.sane = 0; /* if false, allow invalid distance too far */ + this.back = 0; /* bits back of last unprocessed length/lit */ + this.was = 0; /* initial length of match */ } -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - var _this = this; +function inflateResetKeep(strm) { + var state; - var state = this._readableState; - var paused = false; + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + strm.total_in = strm.total_out = state.total = 0; + strm.msg = ''; /*Z_NULL*/ + if (state.wrap) { /* to support ill-conceived Java test suite */ + strm.adler = state.wrap & 1; + } + state.mode = HEAD; + state.last = 0; + state.havedict = 0; + state.dmax = 32768; + state.head = null/*Z_NULL*/; + state.hold = 0; + state.bits = 0; + //state.lencode = state.distcode = state.next = state.codes; + state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS); + state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS); - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) _this.push(chunk); - } + state.sane = 1; + state.back = -1; + //Tracev((stderr, "inflate: reset\n")); + return Z_OK; +} - _this.push(null); - }); +function inflateReset(strm) { + var state; - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + state.wsize = 0; + state.whave = 0; + state.wnext = 0; + return inflateResetKeep(strm); - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; +} - var ret = _this.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); +function inflateReset2(strm, windowBits) { + var wrap; + var state; - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } + /* get the state */ + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; - // proxy certain important events. - for (var n = 0; n < kProxyEvents.length; n++) { - stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + /* extract wrap request from windowBits parameter */ + if (windowBits < 0) { + wrap = 0; + windowBits = -windowBits; } - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - this._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); + else { + wrap = (windowBits >> 4) + 1; + if (windowBits < 48) { + windowBits &= 15; } - }; - - return this; -}; - -Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._readableState.highWaterMark; } -}); - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = fromListPartial(n, state.buffer, state.decoder); + /* set number of window bits, free window if different */ + if (windowBits && (windowBits < 8 || windowBits > 15)) { + return Z_STREAM_ERROR; + } + if (state.window !== null && state.wbits !== windowBits) { + state.window = null; } - return ret; + /* update state and reset the rest of it */ + state.wrap = wrap; + state.wbits = windowBits; + return inflateReset(strm); } -// Extracts only enough buffered data to satisfy the amount requested. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromListPartial(n, list, hasStrings) { +function inflateInit2(strm, windowBits) { var ret; - if (n < list.head.data.length) { - // slice is the same for buffers and strings - ret = list.head.data.slice(0, n); - list.head.data = list.head.data.slice(n); - } else if (n === list.head.data.length) { - // first chunk is a perfect match - ret = list.shift(); - } else { - // result spans more than one buffer - ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); - } - return ret; -} + var state; -// Copies a specified amount of characters from the list of buffered data -// chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBufferString(n, list) { - var p = list.head; - var c = 1; - var ret = p.data; - n -= ret.length; - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = str.slice(nb); - } - break; - } - ++c; + if (!strm) { return Z_STREAM_ERROR; } + //strm.msg = Z_NULL; /* in case we return an error */ + + state = new InflateState(); + + //if (state === Z_NULL) return Z_MEM_ERROR; + //Tracev((stderr, "inflate: allocated\n")); + strm.state = state; + state.window = null/*Z_NULL*/; + ret = inflateReset2(strm, windowBits); + if (ret !== Z_OK) { + strm.state = null/*Z_NULL*/; } - list.length -= c; return ret; } -// Copies a specified amount of bytes from the list of buffered data chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBuffer(n, list) { - var ret = Buffer.allocUnsafe(n); - var p = list.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = buf.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; +function inflateInit(strm) { + return inflateInit2(strm, DEF_WBITS); } -function endReadable(stream) { - var state = stream._readableState; - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +var virgin = true; + +var lenfix, distfix; // We have no pointers in JS, so keep tables separate + +function fixedtables(state) { + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + var sym; + + lenfix = new utils.Buf32(512); + distfix = new utils.Buf32(32); + + /* literal/length table */ + sym = 0; + while (sym < 144) { state.lens[sym++] = 8; } + while (sym < 256) { state.lens[sym++] = 9; } + while (sym < 280) { state.lens[sym++] = 7; } + while (sym < 288) { state.lens[sym++] = 8; } + + inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 }); + + /* distance table */ + sym = 0; + while (sym < 32) { state.lens[sym++] = 5; } - if (!state.endEmitted) { - state.ended = true; - pna.nextTick(endReadableNT, state, stream); - } -} + inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 }); -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); + /* do this just once */ + virgin = false; } -} -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; + state.lencode = lenfix; + state.lenbits = 9; + state.distcode = distfix; + state.distbits = 5; } -}).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./_stream_duplex":80,"./internal/streams/BufferList":85,"./internal/streams/destroy":86,"./internal/streams/stream":87,"_process":78,"core-util-is":25,"events":51,"inherits":53,"isarray":55,"process-nextick-args":77,"safe-buffer":88,"string_decoder/":89,"util":16}],83:[function(_dereq_,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. +/* + Update the window with the last wsize (normally 32K) bytes written before + returning. If window does not exist yet, create it. This is only called + when a window is already in use, or when output has been written during this + inflate call, but the end of the deflate stream has not been reached yet. + It is also called to create a window for dictionary data when a dictionary + is loaded. -'use strict'; + Providing output buffers larger than 32K to inflate() should provide a speed + advantage, since only the last 32K of output is copied to the sliding window + upon return from inflate(), and since all distances after the first 32K of + output will fall in the output data, making match copies simpler and faster. + The advantage may be dependent on the size of the processor's data caches. + */ +function updatewindow(strm, src, end, copy) { + var dist; + var state = strm.state; -module.exports = Transform; + /* if it hasn't been done already, allocate space for the window */ + if (state.window === null) { + state.wsize = 1 << state.wbits; + state.wnext = 0; + state.whave = 0; -var Duplex = _dereq_('./_stream_duplex'); + state.window = new utils.Buf8(state.wsize); + } -/**/ -var util = Object.create(_dereq_('core-util-is')); -util.inherits = _dereq_('inherits'); -/**/ + /* copy state->wsize or less output bytes into the circular window */ + if (copy >= state.wsize) { + utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0); + state.wnext = 0; + state.whave = state.wsize; + } + else { + dist = state.wsize - state.wnext; + if (dist > copy) { + dist = copy; + } + //zmemcpy(state->window + state->wnext, end - copy, dist); + utils.arraySet(state.window, src, end - copy, dist, state.wnext); + copy -= dist; + if (copy) { + //zmemcpy(state->window, end - copy, copy); + utils.arraySet(state.window, src, end - copy, copy, 0); + state.wnext = copy; + state.whave = state.wsize; + } + else { + state.wnext += dist; + if (state.wnext === state.wsize) { state.wnext = 0; } + if (state.whave < state.wsize) { state.whave += dist; } + } + } + return 0; +} -util.inherits(Transform, Duplex); +function inflate(strm, flush) { + var state; + var input, output; // input/output buffers + var next; /* next input INDEX */ + var put; /* next output INDEX */ + var have, left; /* available input and output */ + var hold; /* bit buffer */ + var bits; /* bits in bit buffer */ + var _in, _out; /* save starting available input and output */ + var copy; /* number of stored or match bytes to copy */ + var from; /* where to copy match bytes from */ + var from_source; + var here = 0; /* current decoding table entry */ + var here_bits, here_op, here_val; // paked "here" denormalized (JS specific) + //var last; /* parent table entry */ + var last_bits, last_op, last_val; // paked "last" denormalized (JS specific) + var len; /* length to copy for repeats, bits to drop */ + var ret; /* return code */ + var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */ + var opts; -function afterTransform(er, data) { - var ts = this._transformState; - ts.transforming = false; + var n; // temporary var for NEED_BITS - var cb = ts.writecb; + var order = /* permutation of code lengths */ + [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; - if (!cb) { - return this.emit('error', new Error('write callback called multiple times')); + + if (!strm || !strm.state || !strm.output || + (!strm.input && strm.avail_in !== 0)) { + return Z_STREAM_ERROR; } - ts.writechunk = null; - ts.writecb = null; + state = strm.state; + if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */ - if (data != null) // single equals check for both `null` and `undefined` - this.push(data); - cb(er); + //--- LOAD() --- + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + //--- - var rs = this._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - this._read(rs.highWaterMark); - } -} + _in = have; + _out = left; + ret = Z_OK; + + inf_leave: // goto emulation + for (;;) { + switch (state.mode) { + case HEAD: + if (state.wrap === 0) { + state.mode = TYPEDO; + break; + } + //=== NEEDBITS(16); + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */ + state.check = 0/*crc32(0L, Z_NULL, 0)*/; + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = FLAGS; + break; + } + state.flags = 0; /* expect zlib header */ + if (state.head) { + state.head.done = false; + } + if (!(state.wrap & 1) || /* check if zlib header allowed */ + (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) { + strm.msg = 'incorrect header check'; + state.mode = BAD; + break; + } + if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) { + strm.msg = 'unknown compression method'; + state.mode = BAD; + break; + } + //--- DROPBITS(4) ---// + hold >>>= 4; + bits -= 4; + //---// + len = (hold & 0x0f)/*BITS(4)*/ + 8; + if (state.wbits === 0) { + state.wbits = len; + } + else if (len > state.wbits) { + strm.msg = 'invalid window size'; + state.mode = BAD; + break; + } + state.dmax = 1 << len; + //Tracev((stderr, "inflate: zlib header ok\n")); + strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; + state.mode = hold & 0x200 ? DICTID : TYPE; + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + break; + case FLAGS: + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.flags = hold; + if ((state.flags & 0xff) !== Z_DEFLATED) { + strm.msg = 'unknown compression method'; + state.mode = BAD; + break; + } + if (state.flags & 0xe000) { + strm.msg = 'unknown header flags set'; + state.mode = BAD; + break; + } + if (state.head) { + state.head.text = ((hold >> 8) & 1); + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = TIME; + /* falls through */ + case TIME: + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (state.head) { + state.head.time = hold; + } + if (state.flags & 0x0200) { + //=== CRC4(state.check, hold) + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + hbuf[2] = (hold >>> 16) & 0xff; + hbuf[3] = (hold >>> 24) & 0xff; + state.check = crc32(state.check, hbuf, 4, 0); + //=== + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = OS; + /* falls through */ + case OS: + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (state.head) { + state.head.xflags = (hold & 0xff); + state.head.os = (hold >> 8); + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = EXLEN; + /* falls through */ + case EXLEN: + if (state.flags & 0x0400) { + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.length = hold; + if (state.head) { + state.head.extra_len = hold; + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + } + else if (state.head) { + state.head.extra = null/*Z_NULL*/; + } + state.mode = EXTRA; + /* falls through */ + case EXTRA: + if (state.flags & 0x0400) { + copy = state.length; + if (copy > have) { copy = have; } + if (copy) { + if (state.head) { + len = state.head.extra_len - state.length; + if (!state.head.extra) { + // Use untyped array for more convenient processing later + state.head.extra = new Array(state.head.extra_len); + } + utils.arraySet( + state.head.extra, + input, + next, + // extra field is limited to 65536 bytes + // - no need for additional size check + copy, + /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ + len + ); + //zmemcpy(state.head.extra + len, next, + // len + copy > state.head.extra_max ? + // state.head.extra_max - len : copy); + } + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + state.length -= copy; + } + if (state.length) { break inf_leave; } + } + state.length = 0; + state.mode = NAME; + /* falls through */ + case NAME: + if (state.flags & 0x0800) { + if (have === 0) { break inf_leave; } + copy = 0; + do { + // TODO: 2 or 1 bytes? + len = input[next + copy++]; + /* use constant limit because in js we should not preallocate memory */ + if (state.head && len && + (state.length < 65536 /*state.head.name_max*/)) { + state.head.name += String.fromCharCode(len); + } + } while (len && copy < have); -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { break inf_leave; } + } + else if (state.head) { + state.head.name = null; + } + state.length = 0; + state.mode = COMMENT; + /* falls through */ + case COMMENT: + if (state.flags & 0x1000) { + if (have === 0) { break inf_leave; } + copy = 0; + do { + len = input[next + copy++]; + /* use constant limit because in js we should not preallocate memory */ + if (state.head && len && + (state.length < 65536 /*state.head.comm_max*/)) { + state.head.comment += String.fromCharCode(len); + } + } while (len && copy < have); + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { break inf_leave; } + } + else if (state.head) { + state.head.comment = null; + } + state.mode = HCRC; + /* falls through */ + case HCRC: + if (state.flags & 0x0200) { + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (hold !== (state.check & 0xffff)) { + strm.msg = 'header crc mismatch'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + } + if (state.head) { + state.head.hcrc = ((state.flags >> 9) & 1); + state.head.done = true; + } + strm.adler = state.check = 0; + state.mode = TYPE; + break; + case DICTID: + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + strm.adler = state.check = zswap32(hold); + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = DICT; + /* falls through */ + case DICT: + if (state.havedict === 0) { + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + return Z_NEED_DICT; + } + strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; + state.mode = TYPE; + /* falls through */ + case TYPE: + if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; } + /* falls through */ + case TYPEDO: + if (state.last) { + //--- BYTEBITS() ---// + hold >>>= bits & 7; + bits -= bits & 7; + //---// + state.mode = CHECK; + break; + } + //=== NEEDBITS(3); */ + while (bits < 3) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.last = (hold & 0x01)/*BITS(1)*/; + //--- DROPBITS(1) ---// + hold >>>= 1; + bits -= 1; + //---// - Duplex.call(this, options); + switch ((hold & 0x03)/*BITS(2)*/) { + case 0: /* stored block */ + //Tracev((stderr, "inflate: stored block%s\n", + // state.last ? " (last)" : "")); + state.mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + //Tracev((stderr, "inflate: fixed codes block%s\n", + // state.last ? " (last)" : "")); + state.mode = LEN_; /* decode codes */ + if (flush === Z_TREES) { + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + break inf_leave; + } + break; + case 2: /* dynamic block */ + //Tracev((stderr, "inflate: dynamic codes block%s\n", + // state.last ? " (last)" : "")); + state.mode = TABLE; + break; + case 3: + strm.msg = 'invalid block type'; + state.mode = BAD; + } + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + break; + case STORED: + //--- BYTEBITS() ---// /* go to byte boundary */ + hold >>>= bits & 7; + bits -= bits & 7; + //---// + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) { + strm.msg = 'invalid stored block lengths'; + state.mode = BAD; + break; + } + state.length = hold & 0xffff; + //Tracev((stderr, "inflate: stored length %u\n", + // state.length)); + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = COPY_; + if (flush === Z_TREES) { break inf_leave; } + /* falls through */ + case COPY_: + state.mode = COPY; + /* falls through */ + case COPY: + copy = state.length; + if (copy) { + if (copy > have) { copy = have; } + if (copy > left) { copy = left; } + if (copy === 0) { break inf_leave; } + //--- zmemcpy(put, next, copy); --- + utils.arraySet(output, input, next, copy, put); + //---// + have -= copy; + next += copy; + left -= copy; + put += copy; + state.length -= copy; + break; + } + //Tracev((stderr, "inflate: stored end\n")); + state.mode = TYPE; + break; + case TABLE: + //=== NEEDBITS(14); */ + while (bits < 14) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257; + //--- DROPBITS(5) ---// + hold >>>= 5; + bits -= 5; + //---// + state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1; + //--- DROPBITS(5) ---// + hold >>>= 5; + bits -= 5; + //---// + state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4; + //--- DROPBITS(4) ---// + hold >>>= 4; + bits -= 4; + //---// +//#ifndef PKZIP_BUG_WORKAROUND + if (state.nlen > 286 || state.ndist > 30) { + strm.msg = 'too many length or distance symbols'; + state.mode = BAD; + break; + } +//#endif + //Tracev((stderr, "inflate: table sizes ok\n")); + state.have = 0; + state.mode = LENLENS; + /* falls through */ + case LENLENS: + while (state.have < state.ncode) { + //=== NEEDBITS(3); + while (bits < 3) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.lens[order[state.have++]] = (hold & 0x07);//BITS(3); + //--- DROPBITS(3) ---// + hold >>>= 3; + bits -= 3; + //---// + } + while (state.have < 19) { + state.lens[order[state.have++]] = 0; + } + // We have separate tables & no pointers. 2 commented lines below not needed. + //state.next = state.codes; + //state.lencode = state.next; + // Switch to use dynamic table + state.lencode = state.lendyn; + state.lenbits = 7; - this._transformState = { - afterTransform: afterTransform.bind(this), - needTransform: false, - transforming: false, - writecb: null, - writechunk: null, - writeencoding: null - }; + opts = { bits: state.lenbits }; + ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); + state.lenbits = opts.bits; - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; + if (ret) { + strm.msg = 'invalid code lengths set'; + state.mode = BAD; + break; + } + //Tracev((stderr, "inflate: code lengths ok\n")); + state.have = 0; + state.mode = CODELENS; + /* falls through */ + case CODELENS: + while (state.have < state.nlen + state.ndist) { + for (;;) { + here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; + if ((here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if (here_val < 16) { + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.lens[state.have++] = here_val; + } + else { + if (here_val === 16) { + //=== NEEDBITS(here.bits + 2); + n = here_bits + 2; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + if (state.have === 0) { + strm.msg = 'invalid bit length repeat'; + state.mode = BAD; + break; + } + len = state.lens[state.have - 1]; + copy = 3 + (hold & 0x03);//BITS(2); + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + } + else if (here_val === 17) { + //=== NEEDBITS(here.bits + 3); + n = here_bits + 3; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + len = 0; + copy = 3 + (hold & 0x07);//BITS(3); + //--- DROPBITS(3) ---// + hold >>>= 3; + bits -= 3; + //---// + } + else { + //=== NEEDBITS(here.bits + 7); + n = here_bits + 7; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + len = 0; + copy = 11 + (hold & 0x7f);//BITS(7); + //--- DROPBITS(7) ---// + hold >>>= 7; + bits -= 7; + //---// + } + if (state.have + copy > state.nlen + state.ndist) { + strm.msg = 'invalid bit length repeat'; + state.mode = BAD; + break; + } + while (copy--) { + state.lens[state.have++] = len; + } + } + } - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; + /* handle error breaks in while */ + if (state.mode === BAD) { break; } - if (typeof options.flush === 'function') this._flush = options.flush; - } + /* check for end-of-block code (better have one) */ + if (state.lens[256] === 0) { + strm.msg = 'invalid code -- missing end-of-block'; + state.mode = BAD; + break; + } - // When the writable side finishes, then flush out anything remaining. - this.on('prefinish', prefinish); -} + /* build code tables -- note: do not change the lenbits or distbits + values here (9 and 6) without reading the comments in inftrees.h + concerning the ENOUGH constants, which depend on those values */ + state.lenbits = 9; -function prefinish() { - var _this = this; + opts = { bits: state.lenbits }; + ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); + // We have separate tables & no pointers. 2 commented lines below not needed. + // state.next_index = opts.table_index; + state.lenbits = opts.bits; + // state.lencode = state.next; - if (typeof this._flush === 'function') { - this._flush(function (er, data) { - done(_this, er, data); - }); - } else { - done(this, null, null); - } -} + if (ret) { + strm.msg = 'invalid literal/lengths set'; + state.mode = BAD; + break; + } -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; + state.distbits = 6; + //state.distcode.copy(state.codes); + // Switch to use dynamic table + state.distcode = state.distdyn; + opts = { bits: state.distbits }; + ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); + // We have separate tables & no pointers. 2 commented lines below not needed. + // state.next_index = opts.table_index; + state.distbits = opts.bits; + // state.distcode = state.next; -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('_transform() is not implemented'); -}; + if (ret) { + strm.msg = 'invalid distances set'; + state.mode = BAD; + break; + } + //Tracev((stderr, 'inflate: codes ok\n')); + state.mode = LEN_; + if (flush === Z_TREES) { break inf_leave; } + /* falls through */ + case LEN_: + state.mode = LEN; + /* falls through */ + case LEN: + if (have >= 6 && left >= 258) { + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + inflate_fast(strm, _out); + //--- LOAD() --- + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + //--- -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; + if (state.mode === TYPE) { + state.back = -1; + } + break; + } + state.back = 0; + for (;;) { + here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function (n) { - var ts = this._transformState; + if (here_bits <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if (here_op && (here_op & 0xf0) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (;;) { + here = state.lencode[last_val + + ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; + if ((last_bits + here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + //--- DROPBITS(last.bits) ---// + hold >>>= last_bits; + bits -= last_bits; + //---// + state.back += last_bits; + } + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.back += here_bits; + state.length = here_val; + if (here_op === 0) { + //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + // "inflate: literal '%c'\n" : + // "inflate: literal 0x%02x\n", here.val)); + state.mode = LIT; + break; + } + if (here_op & 32) { + //Tracevv((stderr, "inflate: end of block\n")); + state.back = -1; + state.mode = TYPE; + break; + } + if (here_op & 64) { + strm.msg = 'invalid literal/length code'; + state.mode = BAD; + break; + } + state.extra = here_op & 15; + state.mode = LENEXT; + /* falls through */ + case LENEXT: + if (state.extra) { + //=== NEEDBITS(state.extra); + n = state.extra; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; + //--- DROPBITS(state.extra) ---// + hold >>>= state.extra; + bits -= state.extra; + //---// + state.back += state.extra; + } + //Tracevv((stderr, "inflate: length %u\n", state.length)); + state.was = state.length; + state.mode = DIST; + /* falls through */ + case DIST: + for (;;) { + here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; -Transform.prototype._destroy = function (err, cb) { - var _this2 = this; + if ((here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if ((here_op & 0xf0) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (;;) { + here = state.distcode[last_val + + ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; - Duplex.prototype._destroy.call(this, err, function (err2) { - cb(err2); - _this2.emit('close'); - }); -}; + if ((last_bits + here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + //--- DROPBITS(last.bits) ---// + hold >>>= last_bits; + bits -= last_bits; + //---// + state.back += last_bits; + } + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.back += here_bits; + if (here_op & 64) { + strm.msg = 'invalid distance code'; + state.mode = BAD; + break; + } + state.offset = here_val; + state.extra = (here_op) & 15; + state.mode = DISTEXT; + /* falls through */ + case DISTEXT: + if (state.extra) { + //=== NEEDBITS(state.extra); + n = state.extra; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; + //--- DROPBITS(state.extra) ---// + hold >>>= state.extra; + bits -= state.extra; + //---// + state.back += state.extra; + } +//#ifdef INFLATE_STRICT + if (state.offset > state.dmax) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break; + } +//#endif + //Tracevv((stderr, "inflate: distance %u\n", state.offset)); + state.mode = MATCH; + /* falls through */ + case MATCH: + if (left === 0) { break inf_leave; } + copy = _out - left; + if (state.offset > copy) { /* copy from window */ + copy = state.offset - copy; + if (copy > state.whave) { + if (state.sane) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break; + } +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility +//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR +// Trace((stderr, "inflate.c too far\n")); +// copy -= state.whave; +// if (copy > state.length) { copy = state.length; } +// if (copy > left) { copy = left; } +// left -= copy; +// state.length -= copy; +// do { +// output[put++] = 0; +// } while (--copy); +// if (state.length === 0) { state.mode = LEN; } +// break; +//#endif + } + if (copy > state.wnext) { + copy -= state.wnext; + from = state.wsize - copy; + } + else { + from = state.wnext - copy; + } + if (copy > state.length) { copy = state.length; } + from_source = state.window; + } + else { /* copy from output */ + from_source = output; + from = put - state.offset; + copy = state.length; + } + if (copy > left) { copy = left; } + left -= copy; + state.length -= copy; + do { + output[put++] = from_source[from++]; + } while (--copy); + if (state.length === 0) { state.mode = LEN; } + break; + case LIT: + if (left === 0) { break inf_leave; } + output[put++] = state.length; + left--; + state.mode = LEN; + break; + case CHECK: + if (state.wrap) { + //=== NEEDBITS(32); + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + // Use '|' instead of '+' to make sure that result is signed + hold |= input[next++] << bits; + bits += 8; + } + //===// + _out -= left; + strm.total_out += _out; + state.total += _out; + if (_out) { + strm.adler = state.check = + /*UPDATE(state.check, put - _out, _out);*/ + (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out)); -function done(stream, er, data) { - if (er) return stream.emit('error', er); + } + _out = left; + // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too + if ((state.flags ? hold : zswap32(hold)) !== state.check) { + strm.msg = 'incorrect data check'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + //Tracev((stderr, "inflate: check matches trailer\n")); + } + state.mode = LENGTH; + /* falls through */ + case LENGTH: + if (state.wrap && state.flags) { + //=== NEEDBITS(32); + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (hold !== (state.total & 0xffffffff)) { + strm.msg = 'incorrect length check'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + //Tracev((stderr, "inflate: length matches trailer\n")); + } + state.mode = DONE; + /* falls through */ + case DONE: + ret = Z_STREAM_END; + break inf_leave; + case BAD: + ret = Z_DATA_ERROR; + break inf_leave; + case MEM: + return Z_MEM_ERROR; + case SYNC: + /* falls through */ + default: + return Z_STREAM_ERROR; + } + } - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); + // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave" - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); + /* + Return from inflate(), updating the total counts and the check value. + If there was no progress during the inflate() call, return a buffer + error. Call updatewindow() to create and/or update the window state. + Note: a memory error from inflate() is non-recoverable. + */ - if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- - return stream.push(null); + if (state.wsize || (_out !== strm.avail_out && state.mode < BAD && + (state.mode < CHECK || flush !== Z_FINISH))) { + if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) { + state.mode = MEM; + return Z_MEM_ERROR; + } + } + _in -= strm.avail_in; + _out -= strm.avail_out; + strm.total_in += _in; + strm.total_out += _out; + state.total += _out; + if (state.wrap && _out) { + strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ + (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out)); + } + strm.data_type = state.bits + (state.last ? 64 : 0) + + (state.mode === TYPE ? 128 : 0) + + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); + if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) { + ret = Z_BUF_ERROR; + } + return ret; } -},{"./_stream_duplex":80,"core-util-is":25,"inherits":53}],84:[function(_dereq_,module,exports){ -(function (process,global,setImmediate){(function (){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - -'use strict'; - -/**/ - -var pna = _dereq_('process-nextick-args'); -/**/ - -module.exports = Writable; -/* */ -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} +function inflateEnd(strm) { -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - var _this = this; + if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) { + return Z_STREAM_ERROR; + } - this.next = null; - this.entry = null; - this.finish = function () { - onCorkedFinish(_this, state); - }; + var state = strm.state; + if (state.window) { + state.window = null; + } + strm.state = null; + return Z_OK; } -/* */ - -/**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; -/**/ - -/**/ -var Duplex; -/**/ - -Writable.WritableState = WritableState; - -/**/ -var util = Object.create(_dereq_('core-util-is')); -util.inherits = _dereq_('inherits'); -/**/ - -/**/ -var internalUtil = { - deprecate: _dereq_('util-deprecate') -}; -/**/ -/**/ -var Stream = _dereq_('./internal/streams/stream'); -/**/ +function inflateGetHeader(strm, head) { + var state; -/**/ + /* check state */ + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; } -var Buffer = _dereq_('safe-buffer').Buffer; -var OurUint8Array = global.Uint8Array || function () {}; -function _uint8ArrayToBuffer(chunk) { - return Buffer.from(chunk); -} -function _isUint8Array(obj) { - return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; + /* save header structure */ + state.head = head; + head.done = false; + return Z_OK; } -/**/ - -var destroyImpl = _dereq_('./internal/streams/destroy'); - -util.inherits(Writable, Stream); - -function nop() {} - -function WritableState(options, stream) { - Duplex = Duplex || _dereq_('./_stream_duplex'); - - options = options || {}; - - // Duplex streams are both readable and writable, but share - // the same options object. - // However, some cases require setting options to different - // values for the readable and the writable sides of the duplex stream. - // These options can be provided separately as readableXXX and writableXXX. - var isDuplex = stream instanceof Duplex; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var writableHwm = options.writableHighWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - - if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; - - // cast to ints. - this.highWaterMark = Math.floor(this.highWaterMark); - - // if _final has been called - this.finalCalled = false; - - // drain event flag. - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // has it been destroyed - this.destroyed = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.bufferedRequest = null; - this.lastBufferedRequest = null; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; +function inflateSetDictionary(strm, dictionary) { + var dictLength = dictionary.length; - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; + var state; + var dictid; + var ret; - // count buffered requests - this.bufferedRequestCount = 0; + /* check state */ + if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; } + state = strm.state; - // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); -} + if (state.wrap !== 0 && state.mode !== DICT) { + return Z_STREAM_ERROR; + } -WritableState.prototype.getBuffer = function getBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; + /* check for correct dictionary identifier */ + if (state.mode === DICT) { + dictid = 1; /* adler32(0, null, 0)*/ + /* dictid = adler32(dictid, dictionary, dictLength); */ + dictid = adler32(dictid, dictionary, dictLength, 0); + if (dictid !== state.check) { + return Z_DATA_ERROR; + } } - return out; -}; + /* copy dictionary to window using updatewindow(), which will amend the + existing dictionary if appropriate */ + ret = updatewindow(strm, dictionary, dictLength, dictLength); + if (ret) { + state.mode = MEM; + return Z_MEM_ERROR; + } + state.havedict = 1; + // Tracev((stderr, "inflate: dictionary set\n")); + return Z_OK; +} -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') - }); - } catch (_) {} -})(); +exports.inflateReset = inflateReset; +exports.inflateReset2 = inflateReset2; +exports.inflateResetKeep = inflateResetKeep; +exports.inflateInit = inflateInit; +exports.inflateInit2 = inflateInit2; +exports.inflate = inflate; +exports.inflateEnd = inflateEnd; +exports.inflateGetHeader = inflateGetHeader; +exports.inflateSetDictionary = inflateSetDictionary; +exports.inflateInfo = 'pako inflate (from Nodeca project)'; -// Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. -var realHasInstance; -if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { - realHasInstance = Function.prototype[Symbol.hasInstance]; - Object.defineProperty(Writable, Symbol.hasInstance, { - value: function (object) { - if (realHasInstance.call(this, object)) return true; - if (this !== Writable) return false; +/* Not implemented +exports.inflateCopy = inflateCopy; +exports.inflateGetDictionary = inflateGetDictionary; +exports.inflateMark = inflateMark; +exports.inflatePrime = inflatePrime; +exports.inflateSync = inflateSync; +exports.inflateSyncPoint = inflateSyncPoint; +exports.inflateUndermine = inflateUndermine; +*/ - return object && object._writableState instanceof WritableState; - } - }); -} else { - realHasInstance = function (object) { - return object instanceof this; - }; -} +},{"../utils/common":81,"./adler32":82,"./crc32":84,"./inffast":86,"./inftrees":88}],88:[function(_dereq_,module,exports){ +'use strict'; -function Writable(options) { - Duplex = Duplex || _dereq_('./_stream_duplex'); +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. - // Writable ctor is applied to Duplexes, too. - // `realHasInstance` is necessary because using plain `instanceof` - // would return false, as no `_writableState` property is attached. +var utils = _dereq_('../utils/common'); - // Trying to use the custom `instanceof` for Writable here will also break the - // Node.js LazyTransform implementation, which has a non-trivial getter for - // `_writableState` that would lead to infinite recursion. - if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { - return new Writable(options); - } +var MAXBITS = 15; +var ENOUGH_LENS = 852; +var ENOUGH_DISTS = 592; +//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); - this._writableState = new WritableState(options, this); +var CODES = 0; +var LENS = 1; +var DISTS = 2; - // legacy. - this.writable = true; +var lbase = [ /* Length codes 257..285 base */ + 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 +]; - if (options) { - if (typeof options.write === 'function') this._write = options.write; +var lext = [ /* Length codes 257..285 extra */ + 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 +]; - if (typeof options.writev === 'function') this._writev = options.writev; +var dbase = [ /* Distance codes 0..29 base */ + 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 +]; - if (typeof options.destroy === 'function') this._destroy = options.destroy; +var dext = [ /* Distance codes 0..29 extra */ + 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 +]; - if (typeof options.final === 'function') this._final = options.final; - } +module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) +{ + var bits = opts.bits; + //here = opts.here; /* table entry for duplication */ - Stream.call(this); -} + var len = 0; /* a code's length in bits */ + var sym = 0; /* index of code symbols */ + var min = 0, max = 0; /* minimum and maximum code lengths */ + var root = 0; /* number of index bits for root table */ + var curr = 0; /* number of index bits for current table */ + var drop = 0; /* code bits to drop for sub-table */ + var left = 0; /* number of prefix codes available */ + var used = 0; /* code entries in table used */ + var huff = 0; /* Huffman code */ + var incr; /* for incrementing code, index */ + var fill; /* index for replicating entries */ + var low; /* low bits for current root entry */ + var mask; /* mask for low root bits */ + var next; /* next available space in table */ + var base = null; /* base value table to use */ + var base_index = 0; +// var shoextra; /* extra bits table to use */ + var end; /* use base and extra for symbol > end */ + var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */ + var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */ + var extra = null; + var extra_index = 0; -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); -}; + var here_bits, here_op, here_val; -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - pna.nextTick(cb, er); -} + /* + Process a set of code lengths to create a canonical Huffman code. The + code lengths are lens[0..codes-1]. Each length corresponds to the + symbols 0..codes-1. The Huffman code is generated by first sorting the + symbols by length from short to long, and retaining the symbol order + for codes with equal lengths. Then the code starts with all zero bits + for the first code of the shortest length, and the codes are integer + increments for the same length, and zeros are appended as the length + increases. For the deflate format, these bits are stored backwards + from their more natural integer increment ordering, and so when the + decoding tables are built in the large loop below, the integer codes + are incremented backwards. -// Checks that a user-supplied chunk is valid, especially for the particular -// mode the stream is in. Currently this means that `null` is never accepted -// and undefined/non-string values are only allowed in object mode. -function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; + This routine assumes, but does not check, that all of the entries in + lens[] are in the range 0..MAXBITS. The caller must assure this. + 1..MAXBITS is interpreted as that code length. zero means that that + symbol does not occur in this code. - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); + The codes are sorted by computing a count of codes for each length, + creating from that a table of starting indices for each length in the + sorted table, and then entering the symbols in order in the sorted + table. The sorted table is work[], with that space being provided by + the caller. + + The length counts are used for other purposes as well, i.e. finding + the minimum and maximum length codes, determining if there are any + codes at all, checking for a valid set of lengths, and looking ahead + at length counts to determine sub-table sizes when building the + decoding tables. + */ + + /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ + for (len = 0; len <= MAXBITS; len++) { + count[len] = 0; } - if (er) { - stream.emit('error', er); - pna.nextTick(cb, er); - valid = false; + for (sym = 0; sym < codes; sym++) { + count[lens[lens_index + sym]]++; } - return valid; -} -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - var isBuf = !state.objectMode && _isUint8Array(chunk); + /* bound code lengths, force root to be within code lengths */ + root = bits; + for (max = MAXBITS; max >= 1; max--) { + if (count[max] !== 0) { break; } + } + if (root > max) { + root = max; + } + if (max === 0) { /* no symbols to code at all */ + //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */ + //table.bits[opts.table_index] = 1; //here.bits = (var char)1; + //table.val[opts.table_index++] = 0; //here.val = (var short)0; + table[table_index++] = (1 << 24) | (64 << 16) | 0; + - if (isBuf && !Buffer.isBuffer(chunk)) { - chunk = _uint8ArrayToBuffer(chunk); - } + //table.op[opts.table_index] = 64; + //table.bits[opts.table_index] = 1; + //table.val[opts.table_index++] = 0; + table[table_index++] = (1 << 24) | (64 << 16) | 0; - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; + opts.bits = 1; + return 0; /* no symbols, but wait for decoding to report error */ + } + for (min = 1; min < max; min++) { + if (count[min] !== 0) { break; } + } + if (root < min) { + root = min; } - if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + /* check for an over-subscribed or incomplete set of lengths */ + left = 1; + for (len = 1; len <= MAXBITS; len++) { + left <<= 1; + left -= count[len]; + if (left < 0) { + return -1; + } /* over-subscribed */ + } + if (left > 0 && (type === CODES || max !== 1)) { + return -1; /* incomplete set */ + } - if (typeof cb !== 'function') cb = nop; + /* generate offsets into symbol table for each length for sorting */ + offs[1] = 0; + for (len = 1; len < MAXBITS; len++) { + offs[len + 1] = offs[len] + count[len]; + } - if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + /* sort symbols by length, by symbol order within each length */ + for (sym = 0; sym < codes; sym++) { + if (lens[lens_index + sym] !== 0) { + work[offs[lens[lens_index + sym]]++] = sym; + } } - return ret; -}; + /* + Create and fill in decoding tables. In this loop, the table being + filled is at next and has curr index bits. The code being used is huff + with length len. That code is converted to an index by dropping drop + bits off of the bottom. For codes where len is less than drop + curr, + those top drop + curr - len bits are incremented through all values to + fill the table with replicated entries. -Writable.prototype.cork = function () { - var state = this._writableState; + root is the number of index bits for the root table. When len exceeds + root, sub-tables are created pointed to by the root entry with an index + of the low root bits of huff. This is saved in low to check for when a + new sub-table should be started. drop is zero when the root table is + being filled, and drop is root when sub-tables are being filled. - state.corked++; -}; + When a new sub-table is needed, it is necessary to look ahead in the + code lengths to determine what size sub-table is needed. The length + counts are used for this, and so count[] is decremented as codes are + entered in the tables. -Writable.prototype.uncork = function () { - var state = this._writableState; + used keeps track of how many table entries have been allocated from the + provided *table space. It is checked for LENS and DIST tables against + the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in + the initial root table size constants. See the comments in inftrees.h + for more information. - if (state.corked) { - state.corked--; + sym increments through all symbols, and the loop terminates when + all codes of length max, i.e. all codes, have been processed. This + routine permits incomplete codes, so another loop after this one fills + in the rest of the decoding tables with invalid code markers. + */ - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; + /* set up for code type */ + // poor man optimization - use if-else instead of switch, + // to avoid deopts in old v8 + if (type === CODES) { + base = extra = work; /* dummy value--not used */ + end = 19; -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; - return this; -}; + } else if (type === LENS) { + base = lbase; + base_index -= 257; + extra = lext; + extra_index -= 257; + end = 256; -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = Buffer.from(chunk, encoding); + } else { /* DISTS */ + base = dbase; + extra = dext; + end = -1; } - return chunk; -} -Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { - // making it explicit this property is not enumerable - // because otherwise some prototype manipulation in - // userland will fail - enumerable: false, - get: function () { - return this._writableState.highWaterMark; - } -}); + /* initialize opts for loop */ + huff = 0; /* starting code */ + sym = 0; /* starting code symbol */ + len = min; /* starting code length */ + next = table_index; /* current table to fill in */ + curr = root; /* current table index bits */ + drop = 0; /* current bits to drop from code for index */ + low = -1; /* trigger new sub-table when len > root */ + used = 1 << root; /* use root table entries */ + mask = used - 1; /* mask for comparing low */ -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { - if (!isBuf) { - var newChunk = decodeChunk(state, chunk, encoding); - if (chunk !== newChunk) { - isBuf = true; - encoding = 'buffer'; - chunk = newChunk; - } + /* check available table space */ + if ((type === LENS && used > ENOUGH_LENS) || + (type === DISTS && used > ENOUGH_DISTS)) { + return 1; } - var len = state.objectMode ? 1 : chunk.length; - state.length += len; + /* process all codes and make table entries */ + for (;;) { + /* create table entry */ + 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; /* end of block */ + here_val = 0; + } - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; + /* replicate for those indices with low len bits equal to huff */ + incr = 1 << (len - drop); + fill = 1 << curr; + min = fill; /* save offset to next table */ + do { + fill -= incr; + table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0; + } while (fill !== 0); - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = { - chunk: chunk, - encoding: encoding, - isBuf: isBuf, - callback: cb, - next: null - }; - if (last) { - last.next = state.lastBufferedRequest; + /* backwards increment the len-bit code huff */ + incr = 1 << (len - 1); + while (huff & incr) { + incr >>= 1; + } + if (incr !== 0) { + huff &= incr - 1; + huff += incr; } else { - state.bufferedRequest = state.lastBufferedRequest; + huff = 0; } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - - if (sync) { - // defer the callback if we are being called synchronously - // to avoid piling up things on the stack - pna.nextTick(cb, er); - // this can emit finish, and it will always happen - // after error - pna.nextTick(finishMaybe, stream, state); - stream._writableState.errorEmitted = true; - stream.emit('error', er); - } else { - // the caller expect this to happen before if - // it is async - cb(er); - stream._writableState.errorEmitted = true; - stream.emit('error', er); - // this can emit finish, but finish must - // always follow error - finishMaybe(stream, state); - } -} + /* go to next symbol, update count, len */ + sym++; + if (--count[len] === 0) { + if (len === max) { break; } + len = lens[lens_index + work[sym]]; + } -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} + /* create new sub-table if needed */ + if (len > root && (huff & mask) !== low) { + /* if first time, transition to sub-tables */ + if (drop === 0) { + drop = root; + } -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; + /* increment past last table */ + next += min; /* here min is 1 << curr */ - onwriteStateUpdate(state); + /* determine length of next table */ + curr = len - drop; + left = 1 << curr; + while (curr + drop < max) { + left -= count[curr + drop]; + if (left <= 0) { break; } + curr++; + left <<= 1; + } - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); + /* check for enough space */ + used += 1 << curr; + if ((type === LENS && used > ENOUGH_LENS) || + (type === DISTS && used > ENOUGH_DISTS)) { + return 1; + } - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); + /* point entry in root table to sub-table */ + low = huff & mask; + /*table.op[low] = curr; + table.bits[low] = root; + table.val[low] = next - opts.table_index;*/ + table[low] = (root << 24) | (curr << 16) | (next - table_index) |0; } + } - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } + /* fill in remaining table entry if code is incomplete (guaranteed to have + at most one remaining entry, since if the code is incomplete, the + maximum code length that was allowed to get this far is one bit) */ + if (huff !== 0) { + //table.op[next + huff] = 64; /* invalid code marker */ + //table.bits[next + huff] = len - drop; + //table.val[next + huff] = 0; + table[next + huff] = ((len - drop) << 24) | (64 << 16) |0; } -} -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} + /* set return parameters */ + //opts.table_index += used; + opts.bits = root; + return 0; +}; -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} +},{"../utils/common":81}],89:[function(_dereq_,module,exports){ +'use strict'; -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; +module.exports = { + 2: 'need dictionary', /* Z_NEED_DICT 2 */ + 1: 'stream end', /* Z_STREAM_END 1 */ + 0: '', /* Z_OK 0 */ + '-1': 'file error', /* Z_ERRNO (-1) */ + '-2': 'stream error', /* Z_STREAM_ERROR (-2) */ + '-3': 'data error', /* Z_DATA_ERROR (-3) */ + '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */ + '-5': 'buffer error', /* Z_BUF_ERROR (-5) */ + '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */ +}; - var count = 0; - var allBuffers = true; - while (entry) { - buffer[count] = entry; - if (!entry.isBuf) allBuffers = false; - entry = entry.next; - count += 1; - } - buffer.allBuffers = allBuffers; +},{}],90:[function(_dereq_,module,exports){ +'use strict'; - doWrite(stream, state, true, state.length, buffer, '', holder.finish); +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. - // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - state.bufferedRequestCount = 0; - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; +/* eslint-disable space-unary-ops */ - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - state.bufferedRequestCount--; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } +var utils = _dereq_('../utils/common'); - if (entry === null) state.lastBufferedRequest = null; - } +/* Public constants ==========================================================*/ +/* ===========================================================================*/ - state.bufferedRequest = entry; - state.bufferProcessing = false; -} -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('_write() is not implemented')); -}; +//var Z_FILTERED = 1; +//var Z_HUFFMAN_ONLY = 2; +//var Z_RLE = 3; +var Z_FIXED = 4; +//var Z_DEFAULT_STRATEGY = 0; -Writable.prototype._writev = null; +/* Possible values of the data_type field (though see inflate()) */ +var Z_BINARY = 0; +var Z_TEXT = 1; +//var Z_ASCII = 1; // = Z_TEXT +var Z_UNKNOWN = 2; -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; +/*============================================================================*/ - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); +function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } } - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } +// From zutil.h - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); -}; +var STORED_BLOCK = 0; +var STATIC_TREES = 1; +var DYN_TREES = 2; +/* The three kinds of block type */ -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} -function callFinal(stream, state) { - stream._final(function (err) { - state.pendingcb--; - if (err) { - stream.emit('error', err); - } - state.prefinished = true; - stream.emit('prefinish'); - finishMaybe(stream, state); - }); -} -function prefinish(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === 'function') { - state.pendingcb++; - state.finalCalled = true; - pna.nextTick(callFinal, stream, state); - } else { - state.prefinished = true; - stream.emit('prefinish'); - } - } -} +var MIN_MATCH = 3; +var MAX_MATCH = 258; +/* The minimum and maximum match lengths */ + +// From deflate.h +/* =========================================================================== + * Internal compression state. + */ + +var LENGTH_CODES = 29; +/* number of length codes, not counting the special END_BLOCK code */ + +var LITERALS = 256; +/* number of literal bytes 0..255 */ -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - prefinish(stream, state); - if (state.pendingcb === 0) { - state.finished = true; - stream.emit('finish'); - } - } - return need; -} +var L_CODES = LITERALS + 1 + LENGTH_CODES; +/* number of Literal or Length codes, including the END_BLOCK code */ -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); - } - state.ended = true; - stream.writable = false; -} +var D_CODES = 30; +/* number of distance codes */ -function onCorkedFinish(corkReq, state, err) { - var entry = corkReq.entry; - corkReq.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = corkReq; - } else { - state.corkedRequestsFree = corkReq; - } -} +var BL_CODES = 19; +/* number of codes used to transfer the bit lengths */ -Object.defineProperty(Writable.prototype, 'destroyed', { - get: function () { - if (this._writableState === undefined) { - return false; - } - return this._writableState.destroyed; - }, - set: function (value) { - // we ignore the value if the stream - // has not been initialized yet - if (!this._writableState) { - return; - } +var HEAP_SIZE = 2 * L_CODES + 1; +/* maximum heap size */ - // backward compatibility, the user is explicitly - // managing destroyed - this._writableState.destroyed = value; - } -}); +var MAX_BITS = 15; +/* All codes must not exceed MAX_BITS bits */ -Writable.prototype.destroy = destroyImpl.destroy; -Writable.prototype._undestroy = destroyImpl.undestroy; -Writable.prototype._destroy = function (err, cb) { - this.end(); - cb(err); -}; -}).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},_dereq_("timers").setImmediate) +var Buf_size = 16; +/* size of bit buffer in bi_buf */ -},{"./_stream_duplex":80,"./internal/streams/destroy":86,"./internal/streams/stream":87,"_process":78,"core-util-is":25,"inherits":53,"process-nextick-args":77,"safe-buffer":88,"timers":98,"util-deprecate":99}],85:[function(_dereq_,module,exports){ -'use strict'; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +/* =========================================================================== + * Constants + */ -var Buffer = _dereq_('safe-buffer').Buffer; -var util = _dereq_('util'); +var MAX_BL_BITS = 7; +/* Bit length codes must not exceed MAX_BL_BITS bits */ -function copyBuffer(src, target, offset) { - src.copy(target, offset); -} +var END_BLOCK = 256; +/* end of block literal code */ -module.exports = function () { - function BufferList() { - _classCallCheck(this, BufferList); +var REP_3_6 = 16; +/* repeat previous bit length 3-6 times (2 bits of repeat count) */ - this.head = null; - this.tail = null; - this.length = 0; - } +var REPZ_3_10 = 17; +/* repeat a zero length 3-10 times (3 bits of repeat count) */ - BufferList.prototype.push = function push(v) { - var entry = { data: v, next: null }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - }; +var REPZ_11_138 = 18; +/* repeat a zero length 11-138 times (7 bits of repeat count) */ - BufferList.prototype.unshift = function unshift(v) { - var entry = { data: v, next: this.head }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - }; +/* eslint-disable comma-spacing,array-bracket-spacing */ +var extra_lbits = /* extra bits for each length code */ + [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]; - BufferList.prototype.shift = function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - }; +var extra_dbits = /* extra bits for each distance code */ + [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]; - BufferList.prototype.clear = function clear() { - this.head = this.tail = null; - this.length = 0; - }; +var extra_blbits = /* extra bits for each bit length code */ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]; - BufferList.prototype.join = function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - while (p = p.next) { - ret += s + p.data; - }return ret; - }; +var bl_order = + [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]; +/* eslint-enable comma-spacing,array-bracket-spacing */ - BufferList.prototype.concat = function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - if (this.length === 1) return this.head.data; - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - return ret; - }; +/* The lengths of the bit length codes are sent in order of decreasing + * probability, to avoid transmitting the lengths for unused bit length codes. + */ - return BufferList; -}(); +/* =========================================================================== + * Local data. These are initialized only once. + */ -if (util && util.inspect && util.inspect.custom) { - module.exports.prototype[util.inspect.custom] = function () { - var obj = util.inspect({ length: this.length }); - return this.constructor.name + ' ' + obj; - }; -} -},{"safe-buffer":88,"util":16}],86:[function(_dereq_,module,exports){ -'use strict'; +// We pre-fill arrays with 0 to avoid uninitialized gaps -/**/ +var DIST_CODE_LEN = 512; /* see definition of array dist_code below */ -var pna = _dereq_('process-nextick-args'); -/**/ +// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1 +var static_ltree = new Array((L_CODES + 2) * 2); +zero(static_ltree); +/* The static literal tree. Since the bit lengths are imposed, there is no + * need for the L_CODES extra codes used during heap construction. However + * The codes 286 and 287 are needed to build a canonical tree (see _tr_init + * below). + */ -// undocumented cb() API, needed for core, not for public API -function destroy(err, cb) { - var _this = this; +var static_dtree = new Array(D_CODES * 2); +zero(static_dtree); +/* The static distance tree. (Actually a trivial tree since all codes use + * 5 bits.) + */ - var readableDestroyed = this._readableState && this._readableState.destroyed; - var writableDestroyed = this._writableState && this._writableState.destroyed; +var _dist_code = new Array(DIST_CODE_LEN); +zero(_dist_code); +/* Distance codes. The first 256 values correspond to the distances + * 3 .. 258, the last 256 values correspond to the top 8 bits of + * the 15 bit distances. + */ - if (readableDestroyed || writableDestroyed) { - if (cb) { - cb(err); - } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { - pna.nextTick(emitErrorNT, this, err); - } - return this; - } +var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1); +zero(_length_code); +/* length code for each normalized match length (0 == MIN_MATCH) */ - // we set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks +var base_length = new Array(LENGTH_CODES); +zero(base_length); +/* First normalized length for each code (0 = MIN_MATCH) */ - if (this._readableState) { - this._readableState.destroyed = true; - } +var base_dist = new Array(D_CODES); +zero(base_dist); +/* First normalized distance for each code (0 = distance of 1) */ - // if this is a duplex stream mark the writable part as destroyed as well - if (this._writableState) { - this._writableState.destroyed = true; - } - this._destroy(err || null, function (err) { - if (!cb && err) { - pna.nextTick(emitErrorNT, _this, err); - if (_this._writableState) { - _this._writableState.errorEmitted = true; - } - } else if (cb) { - cb(err); - } - }); +function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { - return this; + this.static_tree = static_tree; /* static tree or NULL */ + this.extra_bits = extra_bits; /* extra bits for each code or NULL */ + this.extra_base = extra_base; /* base index for extra_bits */ + this.elems = elems; /* max number of elements in the tree */ + this.max_length = max_length; /* max bit length for the codes */ + + // show if `static_tree` has data or dummy - needed for monomorphic objects + this.has_stree = static_tree && static_tree.length; } -function undestroy() { - if (this._readableState) { - this._readableState.destroyed = false; - this._readableState.reading = false; - this._readableState.ended = false; - this._readableState.endEmitted = false; - } - if (this._writableState) { - this._writableState.destroyed = false; - this._writableState.ended = false; - this._writableState.ending = false; - this._writableState.finished = false; - this._writableState.errorEmitted = false; - } -} +var static_l_desc; +var static_d_desc; +var static_bl_desc; + -function emitErrorNT(self, err) { - self.emit('error', err); +function TreeDesc(dyn_tree, stat_desc) { + this.dyn_tree = dyn_tree; /* the dynamic tree */ + this.max_code = 0; /* largest code with non zero frequency */ + this.stat_desc = stat_desc; /* the corresponding static tree */ } -module.exports = { - destroy: destroy, - undestroy: undestroy -}; -},{"process-nextick-args":77}],87:[function(_dereq_,module,exports){ -module.exports = _dereq_('events').EventEmitter; - -},{"events":51}],88:[function(_dereq_,module,exports){ -/* eslint-disable node/no-deprecated-api */ -var buffer = _dereq_('buffer') -var Buffer = buffer.Buffer -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) +function d_code(dist) { + return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; } -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) +/* =========================================================================== + * Output a short LSB first on the stream. + * IN assertion: there is enough room in pendingBuf. + */ +function put_short(s, w) { +// put_byte(s, (uch)((w) & 0xff)); +// put_byte(s, (uch)((ush)(w) >> 8)); + s.pending_buf[s.pending++] = (w) & 0xff; + s.pending_buf[s.pending++] = (w >>> 8) & 0xff; } -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } + +/* =========================================================================== + * Send a value on a given number of bits. + * IN assertion: length <= 16 and value fits in length bits. + */ +function send_bits(s, value, length) { + if (s.bi_valid > (Buf_size - length)) { + s.bi_buf |= (value << s.bi_valid) & 0xffff; + put_short(s, s.bi_buf); + s.bi_buf = value >> (Buf_size - s.bi_valid); + s.bi_valid += length - Buf_size; } else { - buf.fill(0) + s.bi_buf |= (value << s.bi_valid) & 0xffff; + s.bi_valid += length; } - return buf } -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) +function send_code(s, c, tree) { + send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/); } -},{"buffer":20}],89:[function(_dereq_,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -/**/ - -var Buffer = _dereq_('safe-buffer').Buffer; -/**/ -var isEncoding = Buffer.isEncoding || function (encoding) { - encoding = '' + encoding; - switch (encoding && encoding.toLowerCase()) { - case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': - return true; - default: - return false; - } -}; +/* =========================================================================== + * Reverse the first len bits of a code, using straightforward code (a faster + * method would use a table) + * IN assertion: 1 <= len <= 15 + */ +function bi_reverse(code, len) { + var res = 0; + do { + res |= code & 1; + code >>>= 1; + res <<= 1; + } while (--len > 0); + return res >>> 1; +} -function _normalizeEncoding(enc) { - if (!enc) return 'utf8'; - var retried; - while (true) { - switch (enc) { - case 'utf8': - case 'utf-8': - return 'utf8'; - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return 'utf16le'; - case 'latin1': - case 'binary': - return 'latin1'; - case 'base64': - case 'ascii': - case 'hex': - return enc; - default: - if (retried) return; // undefined - enc = ('' + enc).toLowerCase(); - retried = true; - } - } -}; -// Do not cache `Buffer.isEncoding` when checking encoding names as some -// modules monkey-patch it to support additional encodings -function normalizeEncoding(enc) { - var nenc = _normalizeEncoding(enc); - if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); - return nenc || enc; -} +/* =========================================================================== + * Flush the bit buffer, keeping at most 7 bits in it. + */ +function bi_flush(s) { + if (s.bi_valid === 16) { + put_short(s, s.bi_buf); + s.bi_buf = 0; + s.bi_valid = 0; -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. -exports.StringDecoder = StringDecoder; -function StringDecoder(encoding) { - this.encoding = normalizeEncoding(encoding); - var nb; - switch (this.encoding) { - case 'utf16le': - this.text = utf16Text; - this.end = utf16End; - nb = 4; - break; - case 'utf8': - this.fillLast = utf8FillLast; - nb = 4; - break; - case 'base64': - this.text = base64Text; - this.end = base64End; - nb = 3; - break; - default: - this.write = simpleWrite; - this.end = simpleEnd; - return; + } else if (s.bi_valid >= 8) { + s.pending_buf[s.pending++] = s.bi_buf & 0xff; + s.bi_buf >>= 8; + s.bi_valid -= 8; } - this.lastNeed = 0; - this.lastTotal = 0; - this.lastChar = Buffer.allocUnsafe(nb); } -StringDecoder.prototype.write = function (buf) { - if (buf.length === 0) return ''; - var r; - var i; - if (this.lastNeed) { - r = this.fillLast(buf); - if (r === undefined) return ''; - i = this.lastNeed; - this.lastNeed = 0; - } else { - i = 0; - } - if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); - return r || ''; -}; - -StringDecoder.prototype.end = utf8End; -// Returns only complete characters in a Buffer -StringDecoder.prototype.text = utf8Text; +/* =========================================================================== + * Compute the optimal bit lengths for a tree and update the total bit length + * for the current block. + * IN assertion: the fields freq and dad are set, heap[heap_max] and + * above are the tree nodes sorted by increasing frequency. + * OUT assertions: the field len is set to the optimal bit length, the + * array bl_count contains the frequencies for each bit length. + * The length opt_len is updated; static_len is also updated if stree is + * not null. + */ +function gen_bitlen(s, desc) +// deflate_state *s; +// tree_desc *desc; /* the tree descriptor */ +{ + var tree = desc.dyn_tree; + var max_code = desc.max_code; + var stree = desc.stat_desc.static_tree; + var has_stree = desc.stat_desc.has_stree; + var extra = desc.stat_desc.extra_bits; + var base = desc.stat_desc.extra_base; + var max_length = desc.stat_desc.max_length; + var h; /* heap index */ + var n, m; /* iterate over the tree elements */ + var bits; /* bit length */ + var xbits; /* extra bits */ + var f; /* frequency */ + var overflow = 0; /* number of elements with bit length too large */ -// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer -StringDecoder.prototype.fillLast = function (buf) { - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); + for (bits = 0; bits <= MAX_BITS; bits++) { + s.bl_count[bits] = 0; } - buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); - this.lastNeed -= buf.length; -}; -// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a -// continuation byte. If an invalid byte is detected, -2 is returned. -function utf8CheckByte(byte) { - if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; - return byte >> 6 === 0x02 ? -1 : -2; -} + /* In a first pass, compute the optimal bit lengths (which may + * overflow in the case of the bit length tree). + */ + tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */ -// Checks at most 3 bytes at the end of a Buffer in order to detect an -// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) -// needed to complete the UTF-8 character (if applicable) are returned. -function utf8CheckIncomplete(self, buf, i) { - var j = buf.length - 1; - if (j < i) return 0; - var nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 1; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) self.lastNeed = nb - 2; - return nb; - } - if (--j < i || nb === -2) return 0; - nb = utf8CheckByte(buf[j]); - if (nb >= 0) { - if (nb > 0) { - if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + for (h = s.heap_max + 1; h < HEAP_SIZE; h++) { + n = s.heap[h]; + bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1; + if (bits > max_length) { + bits = max_length; + overflow++; } - return nb; - } - return 0; -} + tree[n * 2 + 1]/*.Len*/ = bits; + /* We overwrite tree[n].Dad which is no longer needed */ -// Validates as many continuation bytes for a multi-byte UTF-8 character as -// needed or are available. If we see a non-continuation byte where we expect -// one, we "replace" the validated continuation bytes we've seen so far with -// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding -// behavior. The continuation byte check is included three times in the case -// where all of the continuation bytes for a character exist in the same buffer. -// It is also done this way as a slight performance increase instead of using a -// loop. -function utf8CheckExtraBytes(self, buf, p) { - if ((buf[0] & 0xC0) !== 0x80) { - self.lastNeed = 0; - return '\ufffd'; - } - if (self.lastNeed > 1 && buf.length > 1) { - if ((buf[1] & 0xC0) !== 0x80) { - self.lastNeed = 1; - return '\ufffd'; + if (n > max_code) { continue; } /* not a leaf node */ + + s.bl_count[bits]++; + xbits = 0; + if (n >= base) { + xbits = extra[n - base]; } - if (self.lastNeed > 2 && buf.length > 2) { - if ((buf[2] & 0xC0) !== 0x80) { - self.lastNeed = 2; - return '\ufffd'; + f = tree[n * 2]/*.Freq*/; + s.opt_len += f * (bits + xbits); + if (has_stree) { + s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits); + } + } + if (overflow === 0) { return; } + + // Trace((stderr,"\nbit length overflow\n")); + /* This happens for example on obj2 and pic of the Calgary corpus */ + + /* Find the first bit length which could increase: */ + do { + bits = max_length - 1; + while (s.bl_count[bits] === 0) { bits--; } + s.bl_count[bits]--; /* move one leaf down the tree */ + s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */ + s.bl_count[max_length]--; + /* The brother of the overflow item also moves one step up, + * but this does not affect bl_count[max_length] + */ + overflow -= 2; + } while (overflow > 0); + + /* Now recompute all bit lengths, scanning in increasing frequency. + * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all + * lengths instead of fixing only the wrong ones. This idea is taken + * from 'ar' written by Haruhiko Okumura.) + */ + for (bits = max_length; bits !== 0; bits--) { + n = s.bl_count[bits]; + while (n !== 0) { + m = s.heap[--h]; + if (m > max_code) { continue; } + if (tree[m * 2 + 1]/*.Len*/ !== bits) { + // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); + s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/; + tree[m * 2 + 1]/*.Len*/ = bits; } + n--; } } } -// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. -function utf8FillLast(buf) { - var p = this.lastTotal - this.lastNeed; - var r = utf8CheckExtraBytes(this, buf, p); - if (r !== undefined) return r; - if (this.lastNeed <= buf.length) { - buf.copy(this.lastChar, p, 0, this.lastNeed); - return this.lastChar.toString(this.encoding, 0, this.lastTotal); + +/* =========================================================================== + * Generate the codes for a given tree and bit counts (which need not be + * optimal). + * IN assertion: the array bl_count contains the bit length statistics for + * the given tree and the field len is set for all tree elements. + * OUT assertion: the field code is set for all tree elements of non + * zero code length. + */ +function gen_codes(tree, max_code, bl_count) +// ct_data *tree; /* the tree to decorate */ +// int max_code; /* largest code with non zero frequency */ +// ushf *bl_count; /* number of codes at each bit length */ +{ + var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */ + var code = 0; /* running code value */ + var bits; /* bit index */ + var n; /* code index */ + + /* The distribution counts are first used to generate the code values + * without bit reversal. + */ + for (bits = 1; bits <= MAX_BITS; bits++) { + next_code[bits] = code = (code + bl_count[bits - 1]) << 1; } - buf.copy(this.lastChar, p, 0, buf.length); - this.lastNeed -= buf.length; -} + /* Check that the bit counts in bl_count are consistent. The last code + * must be all ones. + */ + //Assert (code + bl_count[MAX_BITS]-1 == (1<= 0xD800 && c <= 0xDBFF) { - this.lastNeed = 2; - this.lastTotal = 4; - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; - return r.slice(0, -1); - } + +/* =========================================================================== + * Initialize the various 'constant' tables. + */ +function tr_static_init() { + var n; /* iterates over tree elements */ + var bits; /* bit counter */ + var length; /* length value */ + var code; /* code value */ + var dist; /* distance index */ + var bl_count = new Array(MAX_BITS + 1); + /* number of codes at each bit length for an optimal tree */ + + // do check in _tr_init() + //if (static_init_done) return; + + /* For some embedded targets, global variables are not initialized: */ +/*#ifdef NO_INIT_GLOBAL_POINTERS + static_l_desc.static_tree = static_ltree; + static_l_desc.extra_bits = extra_lbits; + static_d_desc.static_tree = static_dtree; + static_d_desc.extra_bits = extra_dbits; + static_bl_desc.extra_bits = extra_blbits; +#endif*/ + + /* Initialize the mapping length (0..255) -> length code (0..28) */ + length = 0; + for (code = 0; code < LENGTH_CODES - 1; code++) { + base_length[code] = length; + for (n = 0; n < (1 << extra_lbits[code]); n++) { + _length_code[length++] = code; + } + } + //Assert (length == 256, "tr_static_init: length != 256"); + /* Note that the length 255 (match length 258) can be represented + * in two different ways: code 284 + 5 bits or code 285, so we + * overwrite length_code[255] to use the best encoding: + */ + _length_code[length - 1] = code; + + /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ + dist = 0; + for (code = 0; code < 16; code++) { + base_dist[code] = dist; + for (n = 0; n < (1 << extra_dbits[code]); n++) { + _dist_code[dist++] = code; + } + } + //Assert (dist == 256, "tr_static_init: dist != 256"); + dist >>= 7; /* from now on, all distances are divided by 128 */ + for (; code < D_CODES; code++) { + base_dist[code] = dist << 7; + for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { + _dist_code[256 + dist++] = code; } - return r; } - this.lastNeed = 1; - this.lastTotal = 2; - this.lastChar[0] = buf[buf.length - 1]; - return buf.toString('utf16le', i, buf.length - 1); -} + //Assert (dist == 256, "tr_static_init: 256+dist != 512"); -// For UTF-16LE we do not explicitly append special replacement characters if we -// end on a partial character, we simply let v8 handle that. -function utf16End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) { - var end = this.lastTotal - this.lastNeed; - return r + this.lastChar.toString('utf16le', 0, end); + /* Construct the codes of the static literal tree */ + for (bits = 0; bits <= MAX_BITS; bits++) { + bl_count[bits] = 0; } - return r; -} -function base64Text(buf, i) { - var n = (buf.length - i) % 3; - if (n === 0) return buf.toString('base64', i); - this.lastNeed = 3 - n; - this.lastTotal = 3; - if (n === 1) { - this.lastChar[0] = buf[buf.length - 1]; - } else { - this.lastChar[0] = buf[buf.length - 2]; - this.lastChar[1] = buf[buf.length - 1]; + n = 0; + while (n <= 143) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; } - return buf.toString('base64', i, buf.length - n); -} + while (n <= 255) { + static_ltree[n * 2 + 1]/*.Len*/ = 9; + n++; + bl_count[9]++; + } + while (n <= 279) { + static_ltree[n * 2 + 1]/*.Len*/ = 7; + n++; + bl_count[7]++; + } + while (n <= 287) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; + } + /* Codes 286 and 287 do not exist, but we must include them in the + * tree construction to get a canonical Huffman tree (longest code + * all ones) + */ + gen_codes(static_ltree, L_CODES + 1, bl_count); -function base64End(buf) { - var r = buf && buf.length ? this.write(buf) : ''; - if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); - return r; + /* The static distance tree is trivial: */ + for (n = 0; n < D_CODES; n++) { + static_dtree[n * 2 + 1]/*.Len*/ = 5; + static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5); + } + + // Now data ready and we can init static trees + static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); + static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS); + static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS); + + //static_init_done = true; } -// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) -function simpleWrite(buf) { - return buf.toString(this.encoding); + +/* =========================================================================== + * Initialize a new block. + */ +function init_block(s) { + var n; /* iterates over tree elements */ + + /* Initialize the trees. */ + for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; } + + s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1; + s.opt_len = s.static_len = 0; + s.last_lit = s.matches = 0; } -function simpleEnd(buf) { - return buf && buf.length ? this.write(buf) : ''; + +/* =========================================================================== + * Flush the bit buffer and align the output on a byte boundary + */ +function bi_windup(s) +{ + if (s.bi_valid > 8) { + put_short(s, s.bi_buf); + } else if (s.bi_valid > 0) { + //put_byte(s, (Byte)s->bi_buf); + s.pending_buf[s.pending++] = s.bi_buf; + } + s.bi_buf = 0; + s.bi_valid = 0; } -},{"safe-buffer":88}],90:[function(_dereq_,module,exports){ -module.exports = _dereq_('./readable').PassThrough -},{"./readable":91}],91:[function(_dereq_,module,exports){ -exports = module.exports = _dereq_('./lib/_stream_readable.js'); -exports.Stream = exports; -exports.Readable = exports; -exports.Writable = _dereq_('./lib/_stream_writable.js'); -exports.Duplex = _dereq_('./lib/_stream_duplex.js'); -exports.Transform = _dereq_('./lib/_stream_transform.js'); -exports.PassThrough = _dereq_('./lib/_stream_passthrough.js'); +/* =========================================================================== + * Copy a stored block, storing first the length and its + * one's complement if requested. + */ +function copy_block(s, buf, len, header) +//DeflateState *s; +//charf *buf; /* the input data */ +//unsigned len; /* its length */ +//int header; /* true if block header must be written */ +{ + bi_windup(s); /* align on byte boundary */ -},{"./lib/_stream_duplex.js":80,"./lib/_stream_passthrough.js":81,"./lib/_stream_readable.js":82,"./lib/_stream_transform.js":83,"./lib/_stream_writable.js":84}],92:[function(_dereq_,module,exports){ -module.exports = _dereq_('./readable').Transform + if (header) { + put_short(s, len); + put_short(s, ~len); + } +// while (len--) { +// put_byte(s, *buf++); +// } + utils.arraySet(s.pending_buf, s.window, buf, len, s.pending); + s.pending += len; +} -},{"./readable":91}],93:[function(_dereq_,module,exports){ -module.exports = _dereq_('./lib/_stream_writable.js'); +/* =========================================================================== + * Compares to subtrees, using the tree depth as tie breaker when + * the subtrees have equal frequency. This minimizes the worst case length. + */ +function smaller(tree, n, m, depth) { + var _n2 = n * 2; + var _m2 = m * 2; + return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ || + (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m])); +} -},{"./lib/_stream_writable.js":84}],94:[function(_dereq_,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. +/* =========================================================================== + * Restore the heap property by moving down the tree starting at node k, + * exchanging a node with the smallest of its two sons if necessary, stopping + * when the heap property is re-established (each father smaller than its + * two sons). + */ +function pqdownheap(s, tree, k) +// deflate_state *s; +// ct_data *tree; /* the tree to restore */ +// int k; /* node to move down */ +{ + var v = s.heap[k]; + var j = k << 1; /* left son of k */ + while (j <= s.heap_len) { + /* Set j to the smallest of the two sons: */ + if (j < s.heap_len && + smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { + j++; + } + /* Exit if v is smaller than both sons */ + if (smaller(tree, v, s.heap[j], s.depth)) { break; } -module.exports = Stream; + /* Exchange v with the smallest son */ + s.heap[k] = s.heap[j]; + k = j; -var EE = _dereq_('events').EventEmitter; -var inherits = _dereq_('inherits'); + /* And continue down the tree, setting j to the left son of k */ + j <<= 1; + } + s.heap[k] = v; +} -inherits(Stream, EE); -Stream.Readable = _dereq_('readable-stream/readable.js'); -Stream.Writable = _dereq_('readable-stream/writable.js'); -Stream.Duplex = _dereq_('readable-stream/duplex.js'); -Stream.Transform = _dereq_('readable-stream/transform.js'); -Stream.PassThrough = _dereq_('readable-stream/passthrough.js'); -// Backwards-compat with node 0.4.x -Stream.Stream = Stream; +// inlined manually +// var SMALLEST = 1; +/* =========================================================================== + * Send the block data compressed using the given Huffman trees + */ +function compress_block(s, ltree, dtree) +// deflate_state *s; +// const ct_data *ltree; /* literal tree */ +// const ct_data *dtree; /* distance tree */ +{ + var dist; /* distance of matched string */ + var lc; /* match length or unmatched char (if dist == 0) */ + var lx = 0; /* running index in l_buf */ + var code; /* the code to send */ + var extra; /* number of extra bits to send */ + if (s.last_lit !== 0) { + do { + dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]); + lc = s.pending_buf[s.l_buf + lx]; + lx++; -// old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. + if (dist === 0) { + send_code(s, lc, ltree); /* send a literal byte */ + //Tracecv(isgraph(lc), (stderr," '%c' ", lc)); + } else { + /* Here, lc is the match length - MIN_MATCH */ + code = _length_code[lc]; + send_code(s, code + LITERALS + 1, ltree); /* send the length code */ + extra = extra_lbits[code]; + if (extra !== 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); /* send the extra length bits */ + } + dist--; /* dist is now the match distance - 1 */ + code = d_code(dist); + //Assert (code < D_CODES, "bad d_code"); -function Stream() { - EE.call(this); -} + send_code(s, code, dtree); /* send the distance code */ + extra = extra_dbits[code]; + if (extra !== 0) { + dist -= base_dist[code]; + send_bits(s, dist, extra); /* send the extra distance bits */ + } + } /* literal or match pair ? */ -Stream.prototype.pipe = function(dest, options) { - var source = this; + /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ + //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, + // "pendingBuf overflow"); - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } + } while (lx < s.last_lit); } - source.on('data', ondata); + send_code(s, END_BLOCK, ltree); +} - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } - dest.on('drain', ondrain); +/* =========================================================================== + * Construct one Huffman tree and assigns the code bit strings and lengths. + * Update the total bit length for the current block. + * IN assertion: the field freq is set for all tree elements. + * OUT assertions: the fields len and code are set to the optimal bit length + * and corresponding code. The length opt_len is updated; static_len is + * also updated if stree is not null. The field max_code is set. + */ +function build_tree(s, desc) +// deflate_state *s; +// tree_desc *desc; /* the tree descriptor */ +{ + var tree = desc.dyn_tree; + var stree = desc.stat_desc.static_tree; + var has_stree = desc.stat_desc.has_stree; + var elems = desc.stat_desc.elems; + var n, m; /* iterate over heap elements */ + var max_code = -1; /* largest code with non zero frequency */ + var node; /* new node being created */ - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); - } + /* Construct the initial heap, with least frequent element in + * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. + * heap[0] is not used. + */ + s.heap_len = 0; + s.heap_max = HEAP_SIZE; - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; + for (n = 0; n < elems; n++) { + if (tree[n * 2]/*.Freq*/ !== 0) { + s.heap[++s.heap_len] = max_code = n; + s.depth[n] = 0; - dest.end(); + } else { + tree[n * 2 + 1]/*.Len*/ = 0; + } } + /* The pkzip format requires that at least one distance code exists, + * and that at least one bit should be sent even if there is only one + * possible code. So to avoid special checks later on we force at least + * two codes of non zero frequency. + */ + while (s.heap_len < 2) { + node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0); + tree[node * 2]/*.Freq*/ = 1; + s.depth[node] = 0; + s.opt_len--; - function onclose() { - if (didOnEnd) return; - didOnEnd = true; - - if (typeof dest.destroy === 'function') dest.destroy(); - } - - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EE.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. + if (has_stree) { + s.static_len -= stree[node * 2 + 1]/*.Len*/; } + /* node is 0 or 1 so it does not have extra bits */ } + desc.max_code = max_code; - source.on('error', onerror); - dest.on('error', onerror); - - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); + /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + * establish sub-heaps of increasing lengths: + */ + for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); } - source.removeListener('end', onend); - source.removeListener('close', onclose); + /* Construct the Huffman tree by repeatedly combining the least two + * frequent nodes. + */ + node = elems; /* next internal node of the tree */ + do { + //pqremove(s, tree, n); /* n = node of least frequency */ + /*** pqremove ***/ + n = s.heap[1/*SMALLEST*/]; + s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--]; + pqdownheap(s, tree, 1/*SMALLEST*/); + /***/ - source.removeListener('error', onerror); - dest.removeListener('error', onerror); + m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */ - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); + s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */ + s.heap[--s.heap_max] = m; - dest.removeListener('close', cleanup); - } + /* Create a new node father of n and m */ + tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/; + s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; + tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node; - source.on('end', cleanup); - source.on('close', cleanup); + /* and insert the new node in the heap */ + s.heap[1/*SMALLEST*/] = node++; + pqdownheap(s, tree, 1/*SMALLEST*/); - dest.on('close', cleanup); + } while (s.heap_len >= 2); - dest.emit('pipe', source); + s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/]; - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; -}; + /* At this point, the fields freq and dad are set. We can now + * generate the bit lengths. + */ + gen_bitlen(s, desc); -},{"events":51,"inherits":53,"readable-stream/duplex.js":79,"readable-stream/passthrough.js":90,"readable-stream/readable.js":91,"readable-stream/transform.js":92,"readable-stream/writable.js":93}],95:[function(_dereq_,module,exports){ -module.exports = _dereq_('stream-to').buffer -},{"stream-to":96}],96:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -exports.array = toArray -exports.buffer = toBuffer + /* The field len is now set, we can generate the bit codes */ + gen_codes(tree, max_code, s.bl_count); +} -function toArray(stream, callback) { - var arr = [] - stream.on('data', onData) - stream.once('end', onEnd) - stream.once('error', callback) - stream.once('error', cleanup) - stream.once('close', cleanup) +/* =========================================================================== + * Scan a literal or distance tree to determine the frequencies of the codes + * in the bit length tree. + */ +function scan_tree(s, tree, max_code) +// deflate_state *s; +// ct_data *tree; /* the tree to be scanned */ +// int max_code; /* and its largest code of non zero frequency */ +{ + var n; /* iterates over all tree elements */ + var prevlen = -1; /* last emitted length */ + var curlen; /* length of current code */ - function onData(doc) { - arr.push(doc) - } + var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ - function onEnd() { - callback(null, arr) - cleanup() - } + var count = 0; /* repeat count of the current code */ + var max_count = 7; /* max repeat count */ + var min_count = 4; /* min repeat count */ - function cleanup() { - arr = null - stream.removeListener('data', onData) - stream.removeListener('end', onEnd) - stream.removeListener('error', callback) - stream.removeListener('error', cleanup) - stream.removeListener('close', cleanup) + if (nextlen === 0) { + max_count = 138; + min_count = 3; } + tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */ - return stream -} - -function toBuffer(stream, callback) { - toArray(stream, function (err, arr) { - if (err || !arr) - callback(err) - else - callback(null, Buffer.concat(arr)) - }) - - return stream -} -}).call(this)}).call(this,_dereq_("buffer").Buffer) + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; -},{"buffer":20}],97:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -'use strict'; + if (++count < max_count && curlen === nextlen) { + continue; -var util = _dereq_('util'); -var stream = _dereq_('stream'); + } else if (count < min_count) { + s.bl_tree[curlen * 2]/*.Freq*/ += count; -module.exports.createReadStream = function (object, options) { - return new MultiStream (object, options); -}; + } else if (curlen !== 0) { -var MultiStream = function (object, options) { - if (object instanceof Buffer || typeof object === 'string') { - options = options || {}; - stream.Readable.call(this, { - highWaterMark: options.highWaterMark, - encoding: options.encoding - }); - } else { - stream.Readable.call(this, { objectMode: true }); - } - this._object = object; -}; + if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; } + s.bl_tree[REP_3_6 * 2]/*.Freq*/++; -util.inherits(MultiStream, stream.Readable); + } else if (count <= 10) { + s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++; -MultiStream.prototype._read = function () { - this.push(this._object); - this._object = null; -}; -}).call(this)}).call(this,_dereq_("buffer").Buffer) + } else { + s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++; + } -},{"buffer":20,"stream":94,"util":102}],98:[function(_dereq_,module,exports){ -(function (setImmediate,clearImmediate){(function (){ -var nextTick = _dereq_('process/browser.js').nextTick; -var apply = Function.prototype.apply; -var slice = Array.prototype.slice; -var immediateIds = {}; -var nextImmediateId = 0; + count = 0; + prevlen = curlen; -// DOM APIs, for completeness + if (nextlen === 0) { + max_count = 138; + min_count = 3; -exports.setTimeout = function() { - return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); -}; -exports.setInterval = function() { - return new Timeout(apply.call(setInterval, window, arguments), clearInterval); -}; -exports.clearTimeout = -exports.clearInterval = function(timeout) { timeout.close(); }; + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; -function Timeout(id, clearFn) { - this._id = id; - this._clearFn = clearFn; + } else { + max_count = 7; + min_count = 4; + } + } } -Timeout.prototype.unref = Timeout.prototype.ref = function() {}; -Timeout.prototype.close = function() { - this._clearFn.call(window, this._id); -}; -// Does not start the time, just sets up the members needed. -exports.enroll = function(item, msecs) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = msecs; -}; -exports.unenroll = function(item) { - clearTimeout(item._idleTimeoutId); - item._idleTimeout = -1; -}; +/* =========================================================================== + * Send a literal or distance tree in compressed form, using the codes in + * bl_tree. + */ +function send_tree(s, tree, max_code) +// deflate_state *s; +// ct_data *tree; /* the tree to be scanned */ +// int max_code; /* and its largest code of non zero frequency */ +{ + var n; /* iterates over all tree elements */ + var prevlen = -1; /* last emitted length */ + var curlen; /* length of current code */ -exports._unrefActive = exports.active = function(item) { - clearTimeout(item._idleTimeoutId); + var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ - var msecs = item._idleTimeout; - if (msecs >= 0) { - item._idleTimeoutId = setTimeout(function onTimeout() { - if (item._onTimeout) - item._onTimeout(); - }, msecs); + var count = 0; /* repeat count of the current code */ + var max_count = 7; /* max repeat count */ + var min_count = 4; /* min repeat count */ + + /* tree[max_code+1].Len = -1; */ /* guard already set */ + if (nextlen === 0) { + max_count = 138; + min_count = 3; } -}; -// That's not how node.js implements it but the exposed api is the same. -exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { - var id = nextImmediateId++; - var args = arguments.length < 2 ? false : slice.call(arguments, 1); + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; - immediateIds[id] = true; + if (++count < max_count && curlen === nextlen) { + continue; - nextTick(function onNextTick() { - if (immediateIds[id]) { - // fn.call() is faster so we optimize for the common use-case - // @see http://jsperf.com/call-apply-segu - if (args) { - fn.apply(null, args); - } else { - fn.call(null); + } else if (count < min_count) { + do { send_code(s, curlen, s.bl_tree); } while (--count !== 0); + + } else if (curlen !== 0) { + if (curlen !== prevlen) { + send_code(s, curlen, s.bl_tree); + count--; } - // Prevent ids from leaking - exports.clearImmediate(id); - } - }); + //Assert(count >= 3 && count <= 6, " 3_6?"); + send_code(s, REP_3_6, s.bl_tree); + send_bits(s, count - 3, 2); - return id; -}; + } else if (count <= 10) { + send_code(s, REPZ_3_10, s.bl_tree); + send_bits(s, count - 3, 3); -exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { - delete immediateIds[id]; -}; -}).call(this)}).call(this,_dereq_("timers").setImmediate,_dereq_("timers").clearImmediate) + } else { + send_code(s, REPZ_11_138, s.bl_tree); + send_bits(s, count - 11, 7); + } -},{"process/browser.js":78,"timers":98}],99:[function(_dereq_,module,exports){ -(function (global){(function (){ + count = 0; + prevlen = curlen; + if (nextlen === 0) { + max_count = 138; + min_count = 3; -/** - * Module exports. - */ + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; -module.exports = deprecate; + } else { + max_count = 7; + min_count = 4; + } + } +} -/** - * Mark that a method should not be used. - * Returns a modified function which warns once by default. - * - * If `localStorage.noDeprecation = true` is set, then it is a no-op. - * - * If `localStorage.throwDeprecation = true` is set, then deprecated functions - * will throw an Error when invoked. - * - * If `localStorage.traceDeprecation = true` is set, then deprecated functions - * will invoke `console.trace()` instead of `console.error()`. - * - * @param {Function} fn - the function to deprecate - * @param {String} msg - the string to print to the console when `fn` is invoked - * @returns {Function} a new "deprecated" version of `fn` - * @api public + +/* =========================================================================== + * Construct the Huffman tree for the bit lengths and return the index in + * bl_order of the last bit length code to send. */ +function build_bl_tree(s) { + var max_blindex; /* index of last bit length code of non zero freq */ -function deprecate (fn, msg) { - if (config('noDeprecation')) { - return fn; - } + /* Determine the bit length frequencies for literal and distance trees */ + scan_tree(s, s.dyn_ltree, s.l_desc.max_code); + scan_tree(s, s.dyn_dtree, s.d_desc.max_code); - var warned = false; - function deprecated() { - if (!warned) { - if (config('throwDeprecation')) { - throw new Error(msg); - } else if (config('traceDeprecation')) { - console.trace(msg); - } else { - console.warn(msg); - } - warned = true; + /* Build the bit length tree: */ + build_tree(s, s.bl_desc); + /* opt_len now includes the length of the tree representations, except + * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + */ + + /* Determine the number of bit length codes to send. The pkzip format + * requires that at least 4 bit length codes be sent. (appnote.txt says + * 3 but the actual value used is 4.) + */ + for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { + if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) { + break; } - return fn.apply(this, arguments); } + /* Update opt_len to include the bit length tree and counts */ + s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; + //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", + // s->opt_len, s->static_len)); - return deprecated; + return max_blindex; } -/** - * Checks `localStorage` for boolean values for the given `name`. - * - * @param {String} name - * @returns {Boolean} - * @api private + +/* =========================================================================== + * Send the header for a block using dynamic Huffman trees: the counts, the + * lengths of the bit length codes, the literal tree and the distance tree. + * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. */ +function send_all_trees(s, lcodes, dcodes, blcodes) +// deflate_state *s; +// int lcodes, dcodes, blcodes; /* number of codes for each tree */ +{ + var rank; /* index in bl_order */ -function config (name) { - // accessing global.localStorage can trigger a DOMException in sandboxed iframes - try { - if (!global.localStorage) return false; - } catch (_) { - return false; + //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); + //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, + // "too many codes"); + //Tracev((stderr, "\nbl counts: ")); + send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes - 1, 5); + send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ + for (rank = 0; rank < blcodes; rank++) { + //Tracev((stderr, "\nbl code %2d ", bl_order[rank])); + send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3); } - var val = global.localStorage[name]; - if (null == val) return false; - return String(val).toLowerCase() === 'true'; + //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); + + send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */ + //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); + + send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */ + //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); } -}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],100:[function(_dereq_,module,exports){ -arguments[4][10][0].apply(exports,arguments) -},{"dup":10}],101:[function(_dereq_,module,exports){ -arguments[4][11][0].apply(exports,arguments) -},{"dup":11}],102:[function(_dereq_,module,exports){ -(function (process,global){(function (){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. +/* =========================================================================== + * Check if the data type is TEXT or BINARY, using the following algorithm: + * - TEXT if the two conditions below are satisfied: + * a) There are no non-portable control characters belonging to the + * "black list" (0..6, 14..25, 28..31). + * b) There is at least one printable character belonging to the + * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). + * - BINARY otherwise. + * - The following partially-portable control characters form a + * "gray list" that is ignored in this detection algorithm: + * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). + * IN assertion: the fields Freq of dyn_ltree are set. + */ +function detect_data_type(s) { + /* black_mask is the bit mask of black-listed bytes + * set bits 0..6, 14..25, and 28..31 + * 0xf3ffc07f = binary 11110011111111111100000001111111 + */ + var black_mask = 0xf3ffc07f; + var n; -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); + /* Check for non-textual ("black-listed") bytes. */ + for (n = 0; n <= 31; n++, black_mask >>>= 1) { + if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) { + return Z_BINARY; } - return objects.join(' '); } - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); + /* Check for textual ("white-listed") bytes. */ + if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 || + s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) { + return Z_TEXT; + } + for (n = 32; n < LITERALS; n++) { + if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) { + return Z_TEXT; } } - return str; -}; + + /* There are no "black-listed" or "white-listed" bytes: + * this stream either is empty or has tolerated ("gray-listed") bytes only. + */ + return Z_BINARY; +} -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. -exports.deprecate = function(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(global.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } +var static_init_done = false; - if (process.noDeprecation === true) { - return fn; - } +/* =========================================================================== + * Initialize the tree data structures for a new zlib stream. + */ +function _tr_init(s) +{ - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); + if (!static_init_done) { + tr_static_init(); + static_init_done = true; } - return deprecated; -}; + s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); + s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); + s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); + s.bi_buf = 0; + s.bi_valid = 0; -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; -}; + /* Initialize the first block of the first file: */ + init_block(s); +} -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. +/* =========================================================================== + * Send a stored block */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); +function _tr_stored_block(s, buf, stored_len, last) +//DeflateState *s; +//charf *buf; /* input block */ +//ulg stored_len; /* length of input block */ +//int last; /* one if this is the last block for a file */ +{ + send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */ + copy_block(s, buf, stored_len, true); /* with header */ } -exports.inspect = inspect; -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; +/* =========================================================================== + * Send one empty static block to give enough lookahead for inflate. + * This takes 10 bits, of which 7 may remain in the bit buffer. + */ +function _tr_align(s) { + send_bits(s, STATIC_TREES << 1, 3); + send_code(s, END_BLOCK, static_ltree); + bi_flush(s); +} -// Don't use 'blue' not visible on cmd.exe -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; +/* =========================================================================== + * Determine the best encoding for the current block: dynamic trees, static + * trees or store, and output the encoded block to the zip file. + */ +function _tr_flush_block(s, buf, stored_len, last) +//DeflateState *s; +//charf *buf; /* input block, or NULL if too old */ +//ulg stored_len; /* length of input block */ +//int last; /* one if this is the last block for a file */ +{ + var opt_lenb, static_lenb; /* opt_len and static_len in bytes */ + var max_blindex = 0; /* index of last bit length code of non zero freq */ -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; + /* Build the Huffman trees unless a stored block is forced */ + if (s.level > 0) { + + /* Check if the file is binary or text */ + if (s.strm.data_type === Z_UNKNOWN) { + s.strm.data_type = detect_data_type(s); + } + + /* Construct the literal and distance trees */ + build_tree(s, s.l_desc); + // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); + + build_tree(s, s.d_desc); + // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); + /* At this point, opt_len and static_len are the total bit lengths of + * the compressed block data, excluding the tree representations. + */ + + /* Build the bit length tree for the above two trees, and get the index + * in bl_order of the last bit length code to send. + */ + max_blindex = build_bl_tree(s); + + /* Determine the best encoding. Compute the block lengths in bytes. */ + opt_lenb = (s.opt_len + 3 + 7) >>> 3; + static_lenb = (s.static_len + 3 + 7) >>> 3; + + // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", + // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, + // s->last_lit)); + + if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; } - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; } else { - return str; + // Assert(buf != (char*)0, "lost buf"); + opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ } -} + if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) { + /* 4: two words for the lengths */ -function stylizeNoColor(str, styleType) { - return str; -} + /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. + * Otherwise we can't have processed more than WSIZE input bytes since + * the last block flush, because compression would have been + * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to + * transform a block into a stored block. + */ + _tr_stored_block(s, buf, stored_len, last); + } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) { -function arrayToHash(array) { - var hash = {}; + send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); + compress_block(s, static_ltree, static_dtree); - array.forEach(function(val, idx) { - hash[val] = true; - }); + } else { + send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); + send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); + compress_block(s, s.dyn_ltree, s.dyn_dtree); + } + // Assert (s->compressed_len == s->bits_sent, "bad compressed size"); + /* The above check is made mod 2^32, for files larger than 512 MB + * and uLong implemented on 32 bits. + */ + init_block(s); - return hash; + if (last) { + bi_windup(s); + } + // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, + // s->compressed_len-7*last)); } +/* =========================================================================== + * Save the match info and tally the frequency counts. Return true if + * the current block must be flushed. + */ +function _tr_tally(s, dist, lc) +// deflate_state *s; +// unsigned dist; /* distance of matched string */ +// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ +{ + //var out_length, in_length, dcode; -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } + s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff; + s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff; - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } + s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff; + s.last_lit++; - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); + if (dist === 0) { + /* lc is the unmatched char */ + s.dyn_ltree[lc * 2]/*.Freq*/++; + } else { + s.matches++; + /* Here, lc is the match length - MIN_MATCH */ + dist--; /* dist = match distance - 1 */ + //Assert((ush)dist < (ush)MAX_DIST(s) && + // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && + // (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); + s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++; + s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++; } - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } +//#ifdef TRUNCATE_BLOCK +// /* Try to guess if it is profitable to stop the current block here */ +// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) { +// /* Compute an upper bound for the compressed length */ +// out_length = s.last_lit*8; +// in_length = s.strstart - s.block_start; +// +// for (dcode = 0; dcode < D_CODES; dcode++) { +// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]); +// } +// out_length >>>= 3; +// //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", +// // s->last_lit, in_length, out_length, +// // 100L - out_length*100L/in_length)); +// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) { +// return true; +// } +// } +//#endif - var base = '', array = false, braces = ['{', '}']; + return (s.last_lit === s.lit_bufsize - 1); + /* We avoid equality with lit_bufsize because of wraparound at 64K + * on 16 bit machines and because stored blocks are restricted to + * 64K-1 bytes. + */ +} - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } +exports._tr_init = _tr_init; +exports._tr_stored_block = _tr_stored_block; +exports._tr_flush_block = _tr_flush_block; +exports._tr_tally = _tr_tally; +exports._tr_align = _tr_align; - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } +},{"../utils/common":81}],91:[function(_dereq_,module,exports){ +'use strict'; - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); +function ZStream() { + /* next input byte */ + this.input = null; // JS specific, because we have no pointers + this.next_in = 0; + /* number of bytes available at input */ + this.avail_in = 0; + /* total number of input bytes read so far */ + this.total_in = 0; + /* next output byte should be put there */ + this.output = null; // JS specific, because we have no pointers + this.next_out = 0; + /* remaining free space at output */ + this.avail_out = 0; + /* total number of bytes output so far */ + this.total_out = 0; + /* last error message, NULL if no error */ + this.msg = ''/*Z_NULL*/; + /* not visible by applications */ + this.state = null; + /* best guess about the data type: binary or text */ + this.data_type = 2/*Z_UNKNOWN*/; + /* adler32 value of the uncompressed data */ + this.adler = 0; +} + +module.exports = ZStream; + +},{}],92:[function(_dereq_,module,exports){ +(function (process){(function (){ +// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1, +// backported and transplited with Babel, with backwards-compat fixes + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } } - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } } - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } + return parts; +} - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; } - ctx.seen.push(value); + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); - ctx.seen.pop(); + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; - return reduceToSingleString(output, base, braces); -} +// path.normalize(path) +// posix version +exports.normalize = function(path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); -} - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} + return (isAbsolute ? '/' : '') + path; +}; +// posix version +exports.isAbsolute = function(path) { + return path.charAt(0) === '/'; +}; -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); } - }); - return output; -} + return p; + }).join('/')); +}; -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); +// path.relative(from, to) +// posix version +exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; } + + if (start > end) return []; + return arr.slice(start, end - start + 1); } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; } } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); } - return name + ': ' + str; -} + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join('/'); +}; -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); +exports.sep = '/'; +exports.delimiter = ':'; - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; +exports.dirname = function (path) { + if (typeof path !== 'string') path = path + ''; + if (path.length === 0) return '.'; + var code = path.charCodeAt(0); + var hasRoot = code === 47 /*/*/; + var end = -1; + var matchedSlash = true; + for (var i = path.length - 1; i >= 1; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } } - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} - - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; + if (end === -1) return hasRoot ? '/' : '.'; + if (hasRoot && end === 1) { + // return '//'; + // Backwards-compat fix: + return '/'; + } + return path.slice(0, end); +}; -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; +function basename(path) { + if (typeof path !== 'string') path = path + ''; -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; + var start = 0; + var end = -1; + var matchedSlash = true; + var i; -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } -function isNumber(arg) { - return typeof arg === 'number'; + if (end === -1) return ''; + return path.slice(start, end); } -exports.isNumber = isNumber; -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; +// Uses a mixed approach for backwards-compatibility, as ext behavior changed +// in new Node.js versions, so only basename() above is backported here +exports.basename = function (path, ext) { + var f = basename(path); + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; +exports.extname = function (path) { + if (typeof path !== 'string') path = path + ''; + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + for (var i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46 /*.*/) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) + startDot = i; + else if (preDotState !== 1) + preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ''; + } + return path.slice(startDot, end); +}; -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; } -exports.isRegExp = isRegExp; -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' + ? function (str, start, len) { return str.substr(start, len) } + : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + } +; -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; +}).call(this)}).call(this,_dereq_('_process')) -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; +},{"_process":97}],93:[function(_dereq_,module,exports){ +/** + * Parser functions. + */ -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; +var parserFunctions = _dereq_('./lib/parse'); +Object.keys(parserFunctions).forEach(function (k) { exports[k] = parserFunctions[k]; }); -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; +/** + * Builder functions. + */ -exports.isBuffer = _dereq_('./support/isBuffer'); +var builderFunctions = _dereq_('./lib/build'); +Object.keys(builderFunctions).forEach(function (k) { exports[k] = builderFunctions[k]; }); -function objectToString(o) { - return Object.prototype.toString.call(o); -} +},{"./lib/build":94,"./lib/parse":95}],94:[function(_dereq_,module,exports){ +(function (Buffer){(function (){ +/** + * Module dependencies. + */ +var base64 = _dereq_('base64-js'); +var xmlbuilder = _dereq_('xmlbuilder'); -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} +/** + * Module exports. + */ +exports.build = build; -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; +/** + * Accepts a `Date` instance and returns an ISO date string. + * + * @param {Date} d - Date instance to serialize + * @returns {String} ISO date string representation of `d` + * @api private + */ -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); +function ISODateString(d){ + function pad(n){ + return n < 10 ? '0' + n : n; + } + return d.getUTCFullYear()+'-' + + pad(d.getUTCMonth()+1)+'-' + + pad(d.getUTCDate())+'T' + + pad(d.getUTCHours())+':' + + pad(d.getUTCMinutes())+':' + + pad(d.getUTCSeconds())+'Z'; } +/** + * Returns the internal "type" of `obj` via the + * `Object.prototype.toString()` trick. + * + * @param {Mixed} obj - any value + * @returns {String} the internal "type" name + * @api private + */ -// log is just a thin wrapper to console.log that prepends a timestamp -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; - +var toString = Object.prototype.toString; +function type (obj) { + var m = toString.call(obj).match(/\[object (.*)\]/); + return m ? m[1] : m; +} /** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). + * Generate an XML plist string from the input object `obj`. * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. + * @param {Object} obj - the object to convert + * @param {Object} [opts] - optional options object + * @returns {String} converted plist XML string + * @api public */ -exports.inherits = _dereq_('inherits'); -exports._extend = function(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; +function build (obj, opts) { + var XMLHDR = { + version: '1.0', + encoding: 'UTF-8' + }; - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -}; + var XMLDTD = { + pubid: '-//Apple//DTD PLIST 1.0//EN', + sysid: 'http://www.apple.com/DTDs/PropertyList-1.0.dtd' + }; -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} + var doc = xmlbuilder.create('plist'); -}).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + doc.dec(XMLHDR.version, XMLHDR.encoding, XMLHDR.standalone); + doc.dtd(XMLDTD.pubid, XMLDTD.sysid); + doc.att('version', '1.0'); -},{"./support/isBuffer":101,"_process":78,"inherits":100}],103:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var assign, isArray, isEmpty, isFunction, isObject, isPlainObject, - slice = [].slice, - hasProp = {}.hasOwnProperty; + walk_obj(obj, doc); - assign = function() { - var i, key, len, source, sources, target; - target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : []; - if (isFunction(Object.assign)) { - Object.assign.apply(null, arguments); - } else { - for (i = 0, len = sources.length; i < len; i++) { - source = sources[i]; - if (source != null) { - for (key in source) { - if (!hasProp.call(source, key)) continue; - target[key] = source[key]; - } - } - } - } - return target; - }; + if (!opts) opts = {}; + // default `pretty` to `true` + opts.pretty = opts.pretty !== false; + return doc.end(opts); +} - isFunction = function(val) { - return !!val && Object.prototype.toString.call(val) === '[object Function]'; - }; +/** + * depth first, recursive traversal of a javascript object. when complete, + * next_child contains a reference to the build XML object. + * + * @api private + */ - isObject = function(val) { - var ref; - return !!val && ((ref = typeof val) === 'function' || ref === 'object'); - }; +function walk_obj(next, next_child) { + var tag_type, i, prop; + var name = type(next); - isArray = function(val) { - if (isFunction(Array.isArray)) { - return Array.isArray(val); - } else { - return Object.prototype.toString.call(val) === '[object Array]'; + if ('Undefined' == name) { + return; + } else if (Array.isArray(next)) { + next_child = next_child.ele('array'); + for (i = 0; i < next.length; i++) { + walk_obj(next[i], next_child); } - }; - isEmpty = function(val) { - var key; - if (isArray(val)) { - return !val.length; - } else { - for (key in val) { - if (!hasProp.call(val, key)) continue; - return false; + } else if (Buffer.isBuffer(next)) { + next_child.ele('data').raw(next.toString('base64')); + + } else if ('Object' == name) { + next_child = next_child.ele('dict'); + for (prop in next) { + if (next.hasOwnProperty(prop)) { + next_child.ele('key').txt(prop); + walk_obj(next[prop], next_child); } - return true; } - }; - isPlainObject = function(val) { - var ctor, proto; - return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object)); - }; + } else if ('Number' == name) { + // detect if this is an integer or real + // TODO: add an ability to force one way or another via a "cast" + tag_type = (next % 1 === 0) ? 'integer' : 'real'; + next_child.ele(tag_type).txt(next.toString()); - module.exports.assign = assign; + } else if ('BigInt' == name) { + next_child.ele('integer').txt(next); - module.exports.isFunction = isFunction; + } else if ('Date' == name) { + next_child.ele('date').txt(ISODateString(new Date(next))); - module.exports.isObject = isObject; + } else if ('Boolean' == name) { + next_child.ele(next ? 'true' : 'false'); - module.exports.isArray = isArray; + } else if ('String' == name) { + next_child.ele('string').txt(next); - module.exports.isEmpty = isEmpty; + } else if ('ArrayBuffer' == name) { + next_child.ele('data').raw(base64.fromByteArray(next)); - module.exports.isPlainObject = isPlainObject; + } else if (next && next.buffer && 'ArrayBuffer' == type(next.buffer)) { + // a typed array + next_child.ele('data').raw(base64.fromByteArray(new Uint8Array(next.buffer), next_child)); -}).call(this); + } else if ('Null' === name) { + next_child.ele('null').txt(''); -},{}],104:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLAttribute; + } +} - module.exports = XMLAttribute = (function() { - function XMLAttribute(parent, name, value) { - this.options = parent.options; - this.stringify = parent.stringify; - if (name == null) { - throw new Error("Missing attribute name of element " + parent.name); - } - if (value == null) { - throw new Error("Missing attribute value for attribute " + name + " of element " + parent.name); - } - this.name = this.stringify.attName(name); - this.value = this.stringify.attValue(value); - } +}).call(this)}).call(this,{"isBuffer":_dereq_("../../is-buffer/index.js")}) - XMLAttribute.prototype.clone = function() { - return Object.create(this); - }; +},{"../../is-buffer/index.js":68,"base64-js":16,"xmlbuilder":155}],95:[function(_dereq_,module,exports){ +(function (Buffer){(function (){ +/** + * Module dependencies. + */ - XMLAttribute.prototype.toString = function(options) { - return this.options.writer.set(options).attribute(this); - }; +const { DOMParser } = _dereq_('@xmldom/xmldom'); - return XMLAttribute; +/** + * Module exports. + */ + +exports.parse = parse; - })(); +var TEXT_NODE = 3; +var CDATA_NODE = 4; +var COMMENT_NODE = 8; -}).call(this); -},{}],105:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLCData, XMLNode, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; +/** + * We ignore raw text (usually whitespace), , + * and raw CDATA nodes. + * + * @param {Element} node + * @returns {Boolean} + * @api private + */ - XMLNode = _dereq_('./XMLNode'); +function shouldIgnoreNode (node) { + return node.nodeType === TEXT_NODE + || node.nodeType === COMMENT_NODE + || node.nodeType === CDATA_NODE; +} - module.exports = XMLCData = (function(superClass) { - extend(XMLCData, superClass); +/** + * Check if the node is empty. Some plist file has such node: + * + * this node shoud be ignored. + * + * @see https://github.com/TooTallNate/plist.js/issues/66 + * @param {Element} node + * @returns {Boolean} + * @api private + */ +function isEmptyNode(node){ + if(!node.childNodes || node.childNodes.length === 0) { + return true; + } else { + return false; + } +} - function XMLCData(parent, text) { - XMLCData.__super__.constructor.call(this, parent); - if (text == null) { - throw new Error("Missing CDATA text"); - } - this.text = this.stringify.cdata(text); - } +function invariant(test, message) { + if (!test) { + throw new Error(message); + } +} - XMLCData.prototype.clone = function() { - return Object.create(this); - }; +/** + * Parses a Plist XML string. Returns an Object. + * + * @param {String} xml - the XML String to decode + * @returns {Mixed} the decoded value from the Plist XML + * @api public + */ - XMLCData.prototype.toString = function(options) { - return this.options.writer.set(options).cdata(this); - }; +function parse (xml) { + var doc = new DOMParser().parseFromString(xml); + invariant( + doc.documentElement.nodeName === 'plist', + 'malformed document. First element should be ' + ); + var plist = parsePlistXML(doc.documentElement); - return XMLCData; + // the root node gets interpreted as an Array, + // so pull out the inner data first + if (plist.length == 1) plist = plist[0]; - })(XMLNode); + return plist; +} -}).call(this); +/** + * Convert an XML based plist document into a JSON representation. + * + * @param {Object} xml_node - current XML node in the plist + * @returns {Mixed} built up JSON object + * @api private + */ -},{"./XMLNode":116}],106:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLComment, XMLNode, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; +function parsePlistXML (node) { + var i, new_obj, key, val, new_arr, res, counter, type; - XMLNode = _dereq_('./XMLNode'); + if (!node) + return null; - module.exports = XMLComment = (function(superClass) { - extend(XMLComment, superClass); + if (node.nodeName === 'plist') { + new_arr = []; + if (isEmptyNode(node)) { + return new_arr; + } + for (i=0; i < node.childNodes.length; i++) { + if (!shouldIgnoreNode(node.childNodes[i])) { + new_arr.push( parsePlistXML(node.childNodes[i])); + } + } + return new_arr; + } else if (node.nodeName === 'dict') { + new_obj = {}; + key = null; + counter = 0; + if (isEmptyNode(node)) { + return new_obj; + } + for (i=0; i < node.childNodes.length; i++) { + if (shouldIgnoreNode(node.childNodes[i])) continue; + if (counter % 2 === 0) { + invariant( + node.childNodes[i].nodeName === 'key', + 'Missing key while parsing .' + ); + key = parsePlistXML(node.childNodes[i]); + } else { + invariant( + node.childNodes[i].nodeName !== 'key', + 'Unexpected key "' + + parsePlistXML(node.childNodes[i]) + + '" while parsing .' + ); + new_obj[key] = parsePlistXML(node.childNodes[i]); + } + counter += 1; + } + if (counter % 2 === 1) { + new_obj[key] = ''; + } + + return new_obj; - function XMLComment(parent, text) { - XMLComment.__super__.constructor.call(this, parent); - if (text == null) { - throw new Error("Missing comment text"); + } else if (node.nodeName === 'array') { + new_arr = []; + if (isEmptyNode(node)) { + return new_arr; + } + for (i=0; i < node.childNodes.length; i++) { + if (!shouldIgnoreNode(node.childNodes[i])) { + res = parsePlistXML(node.childNodes[i]); + if (null != res) new_arr.push(res); } - this.text = this.stringify.comment(text); } + return new_arr; - XMLComment.prototype.clone = function() { - return Object.create(this); - }; - - XMLComment.prototype.toString = function(options) { - return this.options.writer.set(options).comment(this); - }; - - return XMLComment; - - })(XMLNode); + } else if (node.nodeName === '#text') { + // TODO: what should we do with text types? (CDATA sections) -}).call(this); + } else if (node.nodeName === 'key') { + if (isEmptyNode(node)) { + return ''; + } -},{"./XMLNode":116}],107:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLDTDAttList, XMLNode, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; + invariant( + node.childNodes[0].nodeValue !== '__proto__', + '__proto__ keys can lead to prototype pollution. More details on CVE-2022-22912' + ); - XMLNode = _dereq_('./XMLNode'); + return node.childNodes[0].nodeValue; + } else if (node.nodeName === 'string') { + res = ''; + if (isEmptyNode(node)) { + return res; + } + for (i=0; i < node.childNodes.length; i++) { + var type = node.childNodes[i].nodeType; + if (type === TEXT_NODE || type === CDATA_NODE) { + res += node.childNodes[i].nodeValue; + } + } + return res; - module.exports = XMLDTDAttList = (function(superClass) { - extend(XMLDTDAttList, superClass); + } else if (node.nodeName === 'integer') { + invariant( + !isEmptyNode(node), + 'Cannot parse "" as integer.' + ); + return parseInt(node.childNodes[0].nodeValue, 10); - function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) { - XMLDTDAttList.__super__.constructor.call(this, parent); - if (elementName == null) { - throw new Error("Missing DTD element name"); - } - if (attributeName == null) { - throw new Error("Missing DTD attribute name"); - } - if (!attributeType) { - throw new Error("Missing DTD attribute type"); - } - if (!defaultValueType) { - throw new Error("Missing DTD attribute default"); - } - if (defaultValueType.indexOf('#') !== 0) { - defaultValueType = '#' + defaultValueType; - } - if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) { - throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT"); + } else if (node.nodeName === 'real') { + invariant( + !isEmptyNode(node), + 'Cannot parse "" as real.' + ); + res = ''; + for (i=0; i < node.childNodes.length; i++) { + if (node.childNodes[i].nodeType === TEXT_NODE) { + res += node.childNodes[i].nodeValue; } - if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) { - throw new Error("Default value only applies to #FIXED or #DEFAULT"); + } + return parseFloat(res); + + } else if (node.nodeName === 'data') { + res = ''; + if (isEmptyNode(node)) { + return Buffer.from(res, 'base64'); + } + for (i=0; i < node.childNodes.length; i++) { + if (node.childNodes[i].nodeType === TEXT_NODE) { + res += node.childNodes[i].nodeValue.replace(/\s+/g, ''); } - this.elementName = this.stringify.eleName(elementName); - this.attributeName = this.stringify.attName(attributeName); - this.attributeType = this.stringify.dtdAttType(attributeType); - this.defaultValue = this.stringify.dtdAttDefault(defaultValue); - this.defaultValueType = defaultValueType; } + return Buffer.from(res, 'base64'); - XMLDTDAttList.prototype.toString = function(options) { - return this.options.writer.set(options).dtdAttList(this); - }; + } else if (node.nodeName === 'date') { + invariant( + !isEmptyNode(node), + 'Cannot parse "" as Date.' + ) + return new Date(node.childNodes[0].nodeValue); - return XMLDTDAttList; + } else if (node.nodeName === 'null') { + return null; - })(XMLNode); + } else if (node.nodeName === 'true') { + return true; -}).call(this); + } else if (node.nodeName === 'false') { + return false; + } else { + throw new Error('Invalid PLIST tag ' + node.nodeName); + } +} -},{"./XMLNode":116}],108:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLDTDElement, XMLNode, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; +}).call(this)}).call(this,_dereq_("buffer").Buffer) - XMLNode = _dereq_('./XMLNode'); +},{"@xmldom/xmldom":13,"buffer":23}],96:[function(_dereq_,module,exports){ +(function (process){(function (){ +'use strict'; - module.exports = XMLDTDElement = (function(superClass) { - extend(XMLDTDElement, superClass); +if (typeof process === 'undefined' || + !process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = { nextTick: nextTick }; +} else { + module.exports = process +} - function XMLDTDElement(parent, name, value) { - XMLDTDElement.__super__.constructor.call(this, parent); - if (name == null) { - throw new Error("Missing DTD element name"); - } - if (!value) { - value = '(#PCDATA)'; - } - if (Array.isArray(value)) { - value = '(' + value.join(',') + ')'; - } - this.name = this.stringify.eleName(name); - this.value = this.stringify.dtdElementValue(value); +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} - XMLDTDElement.prototype.toString = function(options) { - return this.options.writer.set(options).dtdElement(this); - }; - - return XMLDTDElement; - - })(XMLNode); - -}).call(this); -},{"./XMLNode":116}],109:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLDTDEntity, XMLNode, isObject, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; +}).call(this)}).call(this,_dereq_('_process')) - isObject = _dereq_('./Utility').isObject; +},{"_process":97}],97:[function(_dereq_,module,exports){ +// shim for using process in browser +var process = module.exports = {}; - XMLNode = _dereq_('./XMLNode'); +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. - module.exports = XMLDTDEntity = (function(superClass) { - extend(XMLDTDEntity, superClass); +var cachedSetTimeout; +var cachedClearTimeout; - function XMLDTDEntity(parent, pe, name, value) { - XMLDTDEntity.__super__.constructor.call(this, parent); - if (name == null) { - throw new Error("Missing entity name"); - } - if (value == null) { - throw new Error("Missing entity value"); - } - this.pe = !!pe; - this.name = this.stringify.eleName(name); - if (!isObject(value)) { - this.value = this.stringify.dtdEntityValue(value); - } else { - if (!value.pubID && !value.sysID) { - throw new Error("Public and/or system identifiers are required for an external entity"); - } - if (value.pubID && !value.sysID) { - throw new Error("System identifier is required for a public external entity"); - } - if (value.pubID != null) { - this.pubID = this.stringify.dtdPubID(value.pubID); - } - if (value.sysID != null) { - this.sysID = this.stringify.dtdSysID(value.sysID); +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; } - if (value.nData != null) { - this.nData = this.stringify.dtdNData(value.nData); + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; } - if (this.pe && this.nData) { - throw new Error("Notation declaration is not allowed in a parameter entity"); + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); } - } } - XMLDTDEntity.prototype.toString = function(options) { - return this.options.writer.set(options).dtdEntity(this); - }; - - return XMLDTDEntity; - - })(XMLNode); -}).call(this); - -},{"./Utility":103,"./XMLNode":116}],110:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLDTDNotation, XMLNode, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } - XMLNode = _dereq_('./XMLNode'); - module.exports = XMLDTDNotation = (function(superClass) { - extend(XMLDTDNotation, superClass); - function XMLDTDNotation(parent, name, value) { - XMLDTDNotation.__super__.constructor.call(this, parent); - if (name == null) { - throw new Error("Missing notation name"); - } - if (!value.pubID && !value.sysID) { - throw new Error("Public or system identifiers are required for an external entity"); - } - this.name = this.stringify.eleName(name); - if (value.pubID != null) { - this.pubID = this.stringify.dtdPubID(value.pubID); - } - if (value.sysID != null) { - this.sysID = this.stringify.dtdSysID(value.sysID); - } +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); } +} - XMLDTDNotation.prototype.toString = function(options) { - return this.options.writer.set(options).dtdNotation(this); - }; +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; - return XMLDTDNotation; + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} - })(XMLNode); +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; -}).call(this); +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; -},{"./XMLNode":116}],111:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLDeclaration, XMLNode, isObject, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; +function noop() {} - isObject = _dereq_('./Utility').isObject; +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; - XMLNode = _dereq_('./XMLNode'); +process.listeners = function (name) { return [] } - module.exports = XMLDeclaration = (function(superClass) { - extend(XMLDeclaration, superClass); +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; - function XMLDeclaration(parent, version, encoding, standalone) { - var ref; - XMLDeclaration.__super__.constructor.call(this, parent); - if (isObject(version)) { - ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone; - } - if (!version) { - version = '1.0'; - } - this.version = this.stringify.xmlVersion(version); - if (encoding != null) { - this.encoding = this.stringify.xmlEncoding(encoding); - } - if (standalone != null) { - this.standalone = this.stringify.xmlStandalone(standalone); - } - } +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; - XMLDeclaration.prototype.toString = function(options) { - return this.options.writer.set(options).declaration(this); - }; +},{}],98:[function(_dereq_,module,exports){ +module.exports = _dereq_('./lib/_stream_duplex.js'); - return XMLDeclaration; +},{"./lib/_stream_duplex.js":99}],99:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - })(XMLNode); +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. -}).call(this); +'use strict'; -},{"./Utility":103,"./XMLNode":116}],112:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNode, isObject, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; +/**/ - isObject = _dereq_('./Utility').isObject; +var pna = _dereq_('process-nextick-args'); +/**/ - XMLNode = _dereq_('./XMLNode'); +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ - XMLDTDAttList = _dereq_('./XMLDTDAttList'); +module.exports = Duplex; - XMLDTDEntity = _dereq_('./XMLDTDEntity'); +/**/ +var util = Object.create(_dereq_('core-util-is')); +util.inherits = _dereq_('inherits'); +/**/ - XMLDTDElement = _dereq_('./XMLDTDElement'); +var Readable = _dereq_('./_stream_readable'); +var Writable = _dereq_('./_stream_writable'); - XMLDTDNotation = _dereq_('./XMLDTDNotation'); +util.inherits(Duplex, Readable); - module.exports = XMLDocType = (function(superClass) { - extend(XMLDocType, superClass); +{ + // avoid scope creep, the keys array can then be collected + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} - function XMLDocType(parent, pubID, sysID) { - var ref, ref1; - XMLDocType.__super__.constructor.call(this, parent); - this.documentObject = parent; - if (isObject(pubID)) { - ref = pubID, pubID = ref.pubID, sysID = ref.sysID; - } - if (sysID == null) { - ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1]; - } - if (pubID != null) { - this.pubID = this.stringify.dtdPubID(pubID); - } - if (sysID != null) { - this.sysID = this.stringify.dtdSysID(sysID); - } - } +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); - XMLDocType.prototype.element = function(name, value) { - var child; - child = new XMLDTDElement(this, name, value); - this.children.push(child); - return this; - }; + Readable.call(this, options); + Writable.call(this, options); - XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { - var child; - child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue); - this.children.push(child); - return this; - }; + if (options && options.readable === false) this.readable = false; - XMLDocType.prototype.entity = function(name, value) { - var child; - child = new XMLDTDEntity(this, false, name, value); - this.children.push(child); - return this; - }; + if (options && options.writable === false) this.writable = false; - XMLDocType.prototype.pEntity = function(name, value) { - var child; - child = new XMLDTDEntity(this, true, name, value); - this.children.push(child); - return this; - }; + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - XMLDocType.prototype.notation = function(name, value) { - var child; - child = new XMLDTDNotation(this, name, value); - this.children.push(child); - return this; - }; + this.once('end', onend); +} - XMLDocType.prototype.toString = function(options) { - return this.options.writer.set(options).docType(this); - }; +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); - XMLDocType.prototype.ele = function(name, value) { - return this.element(name, value); - }; +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; - XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { - return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue); - }; + // no more data can be written. + // But allow more writes to happen in this tick. + pna.nextTick(onEndNT, this); +} - XMLDocType.prototype.ent = function(name, value) { - return this.entity(name, value); - }; +function onEndNT(self) { + self.end(); +} - XMLDocType.prototype.pent = function(name, value) { - return this.pEntity(name, value); - }; +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } - XMLDocType.prototype.not = function(name, value) { - return this.notation(name, value); - }; + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); - XMLDocType.prototype.up = function() { - return this.root() || this.documentObject; - }; +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); - return XMLDocType; + pna.nextTick(cb, err); +}; +},{"./_stream_readable":101,"./_stream_writable":103,"core-util-is":29,"inherits":67,"process-nextick-args":96}],100:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - })(XMLNode); +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. -}).call(this); +'use strict'; -},{"./Utility":103,"./XMLDTDAttList":107,"./XMLDTDElement":108,"./XMLDTDEntity":109,"./XMLDTDNotation":110,"./XMLNode":116}],113:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; +module.exports = PassThrough; - isPlainObject = _dereq_('./Utility').isPlainObject; +var Transform = _dereq_('./_stream_transform'); - XMLNode = _dereq_('./XMLNode'); +/**/ +var util = Object.create(_dereq_('core-util-is')); +util.inherits = _dereq_('inherits'); +/**/ - XMLStringifier = _dereq_('./XMLStringifier'); +util.inherits(PassThrough, Transform); - XMLStringWriter = _dereq_('./XMLStringWriter'); +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); - module.exports = XMLDocument = (function(superClass) { - extend(XMLDocument, superClass); + Transform.call(this, options); +} - function XMLDocument(options) { - XMLDocument.__super__.constructor.call(this, null); - options || (options = {}); - if (!options.writer) { - options.writer = new XMLStringWriter(); - } - this.options = options; - this.stringify = new XMLStringifier(options); - this.isDocument = true; - } +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":102,"core-util-is":29,"inherits":67}],101:[function(_dereq_,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - XMLDocument.prototype.end = function(writer) { - var writerOptions; - if (!writer) { - writer = this.options.writer; - } else if (isPlainObject(writer)) { - writerOptions = writer; - writer = this.options.writer.set(writerOptions); - } - return writer.document(this); - }; +'use strict'; - XMLDocument.prototype.toString = function(options) { - return this.options.writer.set(options).document(this); - }; +/**/ - return XMLDocument; +var pna = _dereq_('process-nextick-args'); +/**/ - })(XMLNode); +module.exports = Readable; -}).call(this); +/**/ +var isArray = _dereq_('isarray'); +/**/ -},{"./Utility":103,"./XMLNode":116,"./XMLStringWriter":120,"./XMLStringifier":121}],114:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, isFunction, isObject, isPlainObject, ref, - hasProp = {}.hasOwnProperty; +/**/ +var Duplex; +/**/ - ref = _dereq_('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject; +Readable.ReadableState = ReadableState; - XMLElement = _dereq_('./XMLElement'); +/**/ +var EE = _dereq_('events').EventEmitter; - XMLCData = _dereq_('./XMLCData'); +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/**/ - XMLComment = _dereq_('./XMLComment'); +/**/ +var Stream = _dereq_('./internal/streams/stream'); +/**/ - XMLRaw = _dereq_('./XMLRaw'); +/**/ - XMLText = _dereq_('./XMLText'); +var Buffer = _dereq_('safe-buffer').Buffer; +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} - XMLProcessingInstruction = _dereq_('./XMLProcessingInstruction'); +/**/ - XMLDeclaration = _dereq_('./XMLDeclaration'); +/**/ +var util = Object.create(_dereq_('core-util-is')); +util.inherits = _dereq_('inherits'); +/**/ - XMLDocType = _dereq_('./XMLDocType'); +/**/ +var debugUtil = _dereq_('util'); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ - XMLDTDAttList = _dereq_('./XMLDTDAttList'); +var BufferList = _dereq_('./internal/streams/BufferList'); +var destroyImpl = _dereq_('./internal/streams/destroy'); +var StringDecoder; - XMLDTDEntity = _dereq_('./XMLDTDEntity'); +util.inherits(Readable, Stream); - XMLDTDElement = _dereq_('./XMLDTDElement'); +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; - XMLDTDNotation = _dereq_('./XMLDTDNotation'); +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); - XMLAttribute = _dereq_('./XMLAttribute'); + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} - XMLStringifier = _dereq_('./XMLStringifier'); +function ReadableState(options, stream) { + Duplex = Duplex || _dereq_('./_stream_duplex'); - XMLStringWriter = _dereq_('./XMLStringWriter'); + options = options || {}; - module.exports = XMLDocumentCB = (function() { - function XMLDocumentCB(options, onData, onEnd) { - var writerOptions; - options || (options = {}); - if (!options.writer) { - options.writer = new XMLStringWriter(options); - } else if (isPlainObject(options.writer)) { - writerOptions = options.writer; - options.writer = new XMLStringWriter(writerOptions); - } - this.options = options; - this.writer = options.writer; - this.stringify = new XMLStringifier(options); - this.onDataCallback = onData || function() {}; - this.onEndCallback = onEnd || function() {}; - this.currentNode = null; - this.currentLevel = -1; - this.openTags = {}; - this.documentStarted = false; - this.documentCompleted = false; - this.root = null; - } + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; - XMLDocumentCB.prototype.node = function(name, attributes, text) { - var ref1; - if (name == null) { - throw new Error("Missing node name"); - } - if (this.root && this.currentLevel === -1) { - throw new Error("Document can only have one root node"); - } - this.openCurrent(); - name = name.valueOf(); - if (attributes == null) { - attributes = {}; - } - attributes = attributes.valueOf(); - if (!isObject(attributes)) { - ref1 = [attributes, text], text = ref1[0], attributes = ref1[1]; - } - this.currentNode = new XMLElement(this, name, attributes); - this.currentNode.children = false; - this.currentLevel++; - this.openTags[this.currentLevel] = this.currentNode; - if (text != null) { - this.text(text); - } - return this; - }; + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; - XMLDocumentCB.prototype.element = function(name, attributes, text) { - if (this.currentNode && this.currentNode instanceof XMLDocType) { - return this.dtdElement.apply(this, arguments); - } else { - return this.node(name, attributes, text); - } - }; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - XMLDocumentCB.prototype.attribute = function(name, value) { - var attName, attValue; - if (!this.currentNode || this.currentNode.children) { - throw new Error("att() can only be used immediately after an ele() call in callback mode"); - } - if (name != null) { - name = name.valueOf(); - } - if (isObject(name)) { - for (attName in name) { - if (!hasProp.call(name, attName)) continue; - attValue = name[attName]; - this.attribute(attName, attValue); - } - } else { - if (isFunction(value)) { - value = value.apply(); - } - if (!this.options.skipNullAttributes || (value != null)) { - this.currentNode.attributes[name] = new XMLAttribute(this, name, value); - } - } - return this; - }; + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var readableHwm = options.readableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; - XMLDocumentCB.prototype.text = function(value) { - var node; - this.openCurrent(); - node = new XMLText(this, value); - this.onData(this.writer.text(node, this.currentLevel + 1)); - return this; - }; + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; - XMLDocumentCB.prototype.cdata = function(value) { - var node; - this.openCurrent(); - node = new XMLCData(this, value); - this.onData(this.writer.cdata(node, this.currentLevel + 1)); - return this; - }; + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); - XMLDocumentCB.prototype.comment = function(value) { - var node; - this.openCurrent(); - node = new XMLComment(this, value); - this.onData(this.writer.comment(node, this.currentLevel + 1)); - return this; - }; + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; - XMLDocumentCB.prototype.raw = function(value) { - var node; - this.openCurrent(); - node = new XMLRaw(this, value); - this.onData(this.writer.raw(node, this.currentLevel + 1)); - return this; - }; + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; - XMLDocumentCB.prototype.instruction = function(target, value) { - var i, insTarget, insValue, len, node; - this.openCurrent(); - if (target != null) { - target = target.valueOf(); - } - if (value != null) { - value = value.valueOf(); - } - if (Array.isArray(target)) { - for (i = 0, len = target.length; i < len; i++) { - insTarget = target[i]; - this.instruction(insTarget); - } - } else if (isObject(target)) { - for (insTarget in target) { - if (!hasProp.call(target, insTarget)) continue; - insValue = target[insTarget]; - this.instruction(insTarget, insValue); - } - } else { - if (isFunction(value)) { - value = value.apply(); - } - node = new XMLProcessingInstruction(this, target, value); - this.onData(this.writer.processingInstruction(node, this.currentLevel + 1)); - } - return this; - }; + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; - XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) { - var node; - this.openCurrent(); - if (this.documentStarted) { - throw new Error("declaration() must be the first node"); - } - node = new XMLDeclaration(this, version, encoding, standalone); - this.onData(this.writer.declaration(node, this.currentLevel + 1)); - return this; - }; + // has it been destroyed + this.destroyed = false; - XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) { - this.openCurrent(); - if (root == null) { - throw new Error("Missing root node name"); - } - if (this.root) { - throw new Error("dtd() must come before the root node"); - } - this.currentNode = new XMLDocType(this, pubID, sysID); - this.currentNode.rootNodeName = root; - this.currentNode.children = false; - this.currentLevel++; - this.openTags[this.currentLevel] = this.currentNode; - return this; - }; + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; - XMLDocumentCB.prototype.dtdElement = function(name, value) { - var node; - this.openCurrent(); - node = new XMLDTDElement(this, name, value); - this.onData(this.writer.dtdElement(node, this.currentLevel + 1)); - return this; - }; + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; - XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { - var node; - this.openCurrent(); - node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue); - this.onData(this.writer.dtdAttList(node, this.currentLevel + 1)); - return this; - }; + // if true, a maybeReadMore has been scheduled + this.readingMore = false; - XMLDocumentCB.prototype.entity = function(name, value) { - var node; - this.openCurrent(); - node = new XMLDTDEntity(this, false, name, value); - this.onData(this.writer.dtdEntity(node, this.currentLevel + 1)); - return this; - }; + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = _dereq_('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} - XMLDocumentCB.prototype.pEntity = function(name, value) { - var node; - this.openCurrent(); - node = new XMLDTDEntity(this, true, name, value); - this.onData(this.writer.dtdEntity(node, this.currentLevel + 1)); - return this; - }; +function Readable(options) { + Duplex = Duplex || _dereq_('./_stream_duplex'); - XMLDocumentCB.prototype.notation = function(name, value) { - var node; - this.openCurrent(); - node = new XMLDTDNotation(this, name, value); - this.onData(this.writer.dtdNotation(node, this.currentLevel + 1)); - return this; - }; + if (!(this instanceof Readable)) return new Readable(options); - XMLDocumentCB.prototype.up = function() { - if (this.currentLevel < 0) { - throw new Error("The document node has no parent"); - } - if (this.currentNode) { - if (this.currentNode.children) { - this.closeNode(this.currentNode); - } else { - this.openNode(this.currentNode); - } - this.currentNode = null; - } else { - this.closeNode(this.openTags[this.currentLevel]); - } - delete this.openTags[this.currentLevel]; - this.currentLevel--; - return this; - }; + this._readableState = new ReadableState(options, this); - XMLDocumentCB.prototype.end = function() { - while (this.currentLevel >= 0) { - this.up(); - } - return this.onEnd(); - }; + // legacy + this.readable = true; - XMLDocumentCB.prototype.openCurrent = function() { - if (this.currentNode) { - this.currentNode.children = true; - return this.openNode(this.currentNode); - } - }; + if (options) { + if (typeof options.read === 'function') this._read = options.read; - XMLDocumentCB.prototype.openNode = function(node) { - if (!node.isOpen) { - if (!this.root && this.currentLevel === 0 && node instanceof XMLElement) { - this.root = node; - } - this.onData(this.writer.openNode(node, this.currentLevel)); - return node.isOpen = true; - } - }; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } - XMLDocumentCB.prototype.closeNode = function(node) { - if (!node.isClosed) { - this.onData(this.writer.closeNode(node, this.currentLevel)); - return node.isClosed = true; - } - }; + Stream.call(this); +} - XMLDocumentCB.prototype.onData = function(chunk) { - this.documentStarted = true; - return this.onDataCallback(chunk); - }; +Object.defineProperty(Readable.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } - XMLDocumentCB.prototype.onEnd = function() { - this.documentCompleted = true; - return this.onEndCallback(); - }; + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); - XMLDocumentCB.prototype.ele = function() { - return this.element.apply(this, arguments); - }; +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + this.push(null); + cb(err); +}; - XMLDocumentCB.prototype.nod = function(name, attributes, text) { - return this.node(name, attributes, text); - }; +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; - XMLDocumentCB.prototype.txt = function(value) { - return this.text(value); - }; + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } - XMLDocumentCB.prototype.dat = function(value) { - return this.cdata(value); - }; + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; - XMLDocumentCB.prototype.com = function(value) { - return this.comment(value); - }; +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; - XMLDocumentCB.prototype.ins = function(target, value) { - return this.instruction(target, value); - }; +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } - XMLDocumentCB.prototype.dec = function(version, encoding, standalone) { - return this.declaration(version, encoding, standalone); - }; + if (addToFront) { + if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new Error('stream.push() after EOF')); + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + } + } - XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) { - return this.doctype(root, pubID, sysID); - }; + return needMoreData(state); +} - XMLDocumentCB.prototype.e = function(name, attributes, text) { - return this.element(name, attributes, text); - }; +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - XMLDocumentCB.prototype.n = function(name, attributes, text) { - return this.node(name, attributes, text); - }; + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} - XMLDocumentCB.prototype.t = function(value) { - return this.text(value); - }; +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} - XMLDocumentCB.prototype.d = function(value) { - return this.cdata(value); - }; +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} - XMLDocumentCB.prototype.c = function(value) { - return this.comment(value); - }; +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; - XMLDocumentCB.prototype.r = function(value) { - return this.raw(value); - }; +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = _dereq_('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; - XMLDocumentCB.prototype.i = function(target, value) { - return this.instruction(target, value); - }; +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} - XMLDocumentCB.prototype.att = function() { - if (this.currentNode && this.currentNode instanceof XMLDocType) { - return this.attList.apply(this, arguments); - } else { - return this.attribute.apply(this, arguments); - } - }; +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} - XMLDocumentCB.prototype.a = function() { - if (this.currentNode && this.currentNode instanceof XMLDocType) { - return this.attList.apply(this, arguments); - } else { - return this.attribute.apply(this, arguments); - } - }; +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; - XMLDocumentCB.prototype.ent = function(name, value) { - return this.entity(name, value); - }; + if (n !== 0) state.emittedReadable = false; - XMLDocumentCB.prototype.pent = function(name, value) { - return this.pEntity(name, value); - }; + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } - XMLDocumentCB.prototype.not = function(name, value) { - return this.notation(name, value); - }; + n = howMuchToRead(n, state); - return XMLDocumentCB; + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } - })(); + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. -}).call(this); + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); -},{"./Utility":103,"./XMLAttribute":104,"./XMLCData":105,"./XMLComment":106,"./XMLDTDAttList":107,"./XMLDTDElement":108,"./XMLDTDEntity":109,"./XMLDTDNotation":110,"./XMLDeclaration":111,"./XMLDocType":112,"./XMLElement":115,"./XMLProcessingInstruction":117,"./XMLRaw":118,"./XMLStringWriter":120,"./XMLStringifier":121,"./XMLText":122}],115:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLAttribute, XMLElement, XMLNode, isFunction, isObject, ref, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } - ref = _dereq_('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction; + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } - XMLNode = _dereq_('./XMLNode'); + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; - XMLAttribute = _dereq_('./XMLAttribute'); + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } - module.exports = XMLElement = (function(superClass) { - extend(XMLElement, superClass); + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; - function XMLElement(parent, name, attributes) { - XMLElement.__super__.constructor.call(this, parent); - if (name == null) { - throw new Error("Missing element name"); - } - this.name = this.stringify.eleName(name); - this.attributes = {}; - if (attributes != null) { - this.attribute(attributes); - } - if (parent.isDocument) { - this.isRoot = true; - this.documentObject = parent; - parent.rootObject = this; - } - } + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } - XMLElement.prototype.clone = function() { - var att, attName, clonedSelf, ref1; - clonedSelf = Object.create(this); - if (clonedSelf.isRoot) { - clonedSelf.documentObject = null; - } - clonedSelf.attributes = {}; - ref1 = this.attributes; - for (attName in ref1) { - if (!hasProp.call(ref1, attName)) continue; - att = ref1[attName]; - clonedSelf.attributes[attName] = att.clone(); - } - clonedSelf.children = []; - this.children.forEach(function(child) { - var clonedChild; - clonedChild = child.clone(); - clonedChild.parent = clonedSelf; - return clonedSelf.children.push(clonedChild); - }); - return clonedSelf; - }; + if (ret !== null) this.emit('data', ret); - XMLElement.prototype.attribute = function(name, value) { - var attName, attValue; - if (name != null) { - name = name.valueOf(); - } - if (isObject(name)) { - for (attName in name) { - if (!hasProp.call(name, attName)) continue; - attValue = name[attName]; - this.attribute(attName, attValue); - } - } else { - if (isFunction(value)) { - value = value.apply(); - } - if (!this.options.skipNullAttributes || (value != null)) { - this.attributes[name] = new XMLAttribute(this, name, value); - } - } - return this; - }; + return ret; +}; - XMLElement.prototype.removeAttribute = function(name) { - var attName, i, len; - if (name == null) { - throw new Error("Missing attribute name"); - } - name = name.valueOf(); - if (Array.isArray(name)) { - for (i = 0, len = name.length; i < len; i++) { - attName = name[i]; - delete this.attributes[attName]; - } - } else { - delete this.attributes[name]; - } - return this; - }; +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; - XMLElement.prototype.toString = function(options) { - return this.options.writer.set(options).element(this); - }; + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} - XMLElement.prototype.att = function(name, value) { - return this.attribute(name, value); - }; +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); + } +} - XMLElement.prototype.a = function(name, value) { - return this.attribute(name, value); - }; +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} - return XMLElement; +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + pna.nextTick(maybeReadMore_, stream, state); + } +} - })(XMLNode); +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} -}).call(this); +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('_read() is not implemented')); +}; -},{"./Utility":103,"./XMLAttribute":104,"./XMLNode":116}],116:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLProcessingInstruction, XMLRaw, XMLText, isEmpty, isFunction, isObject, ref, - hasProp = {}.hasOwnProperty; +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; - ref = _dereq_('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isEmpty = ref.isEmpty; + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - XMLElement = null; + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - XMLCData = null; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); - XMLComment = null; + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } - XMLDeclaration = null; + function onend() { + debug('onend'); + dest.end(); + } - XMLDocType = null; + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); - XMLRaw = null; + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); - XMLText = null; + cleanedUp = true; - XMLProcessingInstruction = null; + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } - module.exports = XMLNode = (function() { - function XMLNode(parent) { - this.parent = parent; - if (this.parent) { - this.options = this.parent.options; - this.stringify = this.parent.stringify; - } - this.children = []; - if (!XMLElement) { - XMLElement = _dereq_('./XMLElement'); - XMLCData = _dereq_('./XMLCData'); - XMLComment = _dereq_('./XMLComment'); - XMLDeclaration = _dereq_('./XMLDeclaration'); - XMLDocType = _dereq_('./XMLDocType'); - XMLRaw = _dereq_('./XMLRaw'); - XMLText = _dereq_('./XMLText'); - XMLProcessingInstruction = _dereq_('./XMLProcessingInstruction'); - } - } - - XMLNode.prototype.element = function(name, attributes, text) { - var childNode, item, j, k, key, lastChild, len, len1, ref1, val; - lastChild = null; - if (attributes == null) { - attributes = {}; - } - attributes = attributes.valueOf(); - if (!isObject(attributes)) { - ref1 = [attributes, text], text = ref1[0], attributes = ref1[1]; - } - if (name != null) { - name = name.valueOf(); - } - if (Array.isArray(name)) { - for (j = 0, len = name.length; j < len; j++) { - item = name[j]; - lastChild = this.element(item); - } - } else if (isFunction(name)) { - lastChild = this.element(name.apply()); - } else if (isObject(name)) { - for (key in name) { - if (!hasProp.call(name, key)) continue; - val = name[key]; - if (isFunction(val)) { - val = val.apply(); - } - if ((isObject(val)) && (isEmpty(val))) { - val = null; - } - if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) { - lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val); - } else if (!this.options.separateArrayItems && Array.isArray(val)) { - for (k = 0, len1 = val.length; k < len1; k++) { - item = val[k]; - childNode = {}; - childNode[key] = item; - lastChild = this.element(childNode); - } - } else if (isObject(val)) { - lastChild = this.element(key); - lastChild.element(val); - } else { - lastChild = this.element(key, val); - } - } - } else { - if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) { - lastChild = this.text(text); - } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) { - lastChild = this.cdata(text); - } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) { - lastChild = this.comment(text); - } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) { - lastChild = this.raw(text); - } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) { - lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text); - } else { - lastChild = this.node(name, attributes, text); - } - } - if (lastChild == null) { - throw new Error("Could not create any elements with: " + name); + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + increasedAwaitDrain = true; } - return lastChild; - }; + src.pause(); + } + } - XMLNode.prototype.insertBefore = function(name, attributes, text) { - var child, i, removed; - if (this.isRoot) { - throw new Error("Cannot insert elements at root level"); - } - i = this.parent.children.indexOf(this); - removed = this.parent.children.splice(i); - child = this.parent.element(name, attributes, text); - Array.prototype.push.apply(this.parent.children, removed); - return child; - }; + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } - XMLNode.prototype.insertAfter = function(name, attributes, text) { - var child, i, removed; - if (this.isRoot) { - throw new Error("Cannot insert elements at root level"); - } - i = this.parent.children.indexOf(this); - removed = this.parent.children.splice(i + 1); - child = this.parent.element(name, attributes, text); - Array.prototype.push.apply(this.parent.children, removed); - return child; - }; + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); - XMLNode.prototype.remove = function() { - var i, ref1; - if (this.isRoot) { - throw new Error("Cannot remove the root element"); - } - i = this.parent.children.indexOf(this); - [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref1 = [])), ref1; - return this.parent; - }; + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); - XMLNode.prototype.node = function(name, attributes, text) { - var child, ref1; - if (name != null) { - name = name.valueOf(); - } - attributes || (attributes = {}); - attributes = attributes.valueOf(); - if (!isObject(attributes)) { - ref1 = [attributes, text], text = ref1[0], attributes = ref1[1]; - } - child = new XMLElement(this, name, attributes); - if (text != null) { - child.text(text); - } - this.children.push(child); - return child; - }; + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } - XMLNode.prototype.text = function(value) { - var child; - child = new XMLText(this, value); - this.children.push(child); - return this; - }; + // tell the dest that it's being piped to + dest.emit('pipe', src); - XMLNode.prototype.cdata = function(value) { - var child; - child = new XMLCData(this, value); - this.children.push(child); - return this; - }; + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } - XMLNode.prototype.comment = function(value) { - var child; - child = new XMLComment(this, value); - this.children.push(child); - return this; - }; + return dest; +}; - XMLNode.prototype.commentBefore = function(value) { - var child, i, removed; - i = this.parent.children.indexOf(this); - removed = this.parent.children.splice(i); - child = this.parent.comment(value); - Array.prototype.push.apply(this.parent.children, removed); - return this; - }; +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} - XMLNode.prototype.commentAfter = function(value) { - var child, i, removed; - i = this.parent.children.indexOf(this); - removed = this.parent.children.splice(i + 1); - child = this.parent.comment(value); - Array.prototype.push.apply(this.parent.children, removed); - return this; - }; +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { hasUnpiped: false }; - XMLNode.prototype.raw = function(value) { - var child; - child = new XMLRaw(this, value); - this.children.push(child); - return this; - }; + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; - XMLNode.prototype.instruction = function(target, value) { - var insTarget, insValue, instruction, j, len; - if (target != null) { - target = target.valueOf(); - } - if (value != null) { - value = value.valueOf(); - } - if (Array.isArray(target)) { - for (j = 0, len = target.length; j < len; j++) { - insTarget = target[j]; - this.instruction(insTarget); - } - } else if (isObject(target)) { - for (insTarget in target) { - if (!hasProp.call(target, insTarget)) continue; - insValue = target[insTarget]; - this.instruction(insTarget, insValue); - } - } else { - if (isFunction(value)) { - value = value.apply(); - } - instruction = new XMLProcessingInstruction(this, target, value); - this.children.push(instruction); - } - return this; - }; + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; - XMLNode.prototype.instructionBefore = function(target, value) { - var child, i, removed; - i = this.parent.children.indexOf(this); - removed = this.parent.children.splice(i); - child = this.parent.instruction(target, value); - Array.prototype.push.apply(this.parent.children, removed); - return this; - }; + if (!dest) dest = state.pipes; - XMLNode.prototype.instructionAfter = function(target, value) { - var child, i, removed; - i = this.parent.children.indexOf(this); - removed = this.parent.children.splice(i + 1); - child = this.parent.instruction(target, value); - Array.prototype.push.apply(this.parent.children, removed); - return this; - }; + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } - XMLNode.prototype.declaration = function(version, encoding, standalone) { - var doc, xmldec; - doc = this.document(); - xmldec = new XMLDeclaration(doc, version, encoding, standalone); - if (doc.children[0] instanceof XMLDeclaration) { - doc.children[0] = xmldec; - } else { - doc.children.unshift(xmldec); - } - return doc.root() || doc; - }; + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; - XMLNode.prototype.doctype = function(pubID, sysID) { - var child, doc, doctype, i, j, k, len, len1, ref1, ref2; - doc = this.document(); - doctype = new XMLDocType(doc, pubID, sysID); - ref1 = doc.children; - for (i = j = 0, len = ref1.length; j < len; i = ++j) { - child = ref1[i]; - if (child instanceof XMLDocType) { - doc.children[i] = doctype; - return doctype; - } - } - ref2 = doc.children; - for (i = k = 0, len1 = ref2.length; k < len1; i = ++k) { - child = ref2[i]; - if (child.isRoot) { - doc.children.splice(i, 0, doctype); - return doctype; - } - } - doc.children.push(doctype); - return doctype; - }; + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { hasUnpiped: false }); + }return this; + } - XMLNode.prototype.up = function() { - if (this.isRoot) { - throw new Error("The root node has no parent. Use doc() if you need to get the document object."); - } - return this.parent; - }; + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; - XMLNode.prototype.root = function() { - var node; - node = this; - while (node) { - if (node.isDocument) { - return node.rootObject; - } else if (node.isRoot) { - return node; - } else { - node = node.parent; - } - } - }; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; - XMLNode.prototype.document = function() { - var node; - node = this; - while (node) { - if (node.isDocument) { - return node; - } else { - node = node.parent; - } - } - }; + dest.emit('unpipe', this, unpipeInfo); - XMLNode.prototype.end = function(options) { - return this.document().end(options); - }; + return this; +}; - XMLNode.prototype.prev = function() { - var i; - i = this.parent.children.indexOf(this); - if (i < 1) { - throw new Error("Already at the first node"); - } - return this.parent.children[i - 1]; - }; +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); - XMLNode.prototype.next = function() { - var i; - i = this.parent.children.indexOf(this); - if (i === -1 || i === this.parent.children.length - 1) { - throw new Error("Already at the last node"); + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + pna.nextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this); } - return this.parent.children[i + 1]; - }; + } + } - XMLNode.prototype.importDocument = function(doc) { - var clonedRoot; - clonedRoot = doc.root().clone(); - clonedRoot.parent = this; - clonedRoot.isRoot = false; - this.children.push(clonedRoot); - return this; - }; + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; - XMLNode.prototype.ele = function(name, attributes, text) { - return this.element(name, attributes, text); - }; +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} - XMLNode.prototype.nod = function(name, attributes, text) { - return this.node(name, attributes, text); - }; +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; - XMLNode.prototype.txt = function(value) { - return this.text(value); - }; +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + pna.nextTick(resume_, stream, state); + } +} - XMLNode.prototype.dat = function(value) { - return this.cdata(value); - }; +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } - XMLNode.prototype.com = function(value) { - return this.comment(value); - }; + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} - XMLNode.prototype.ins = function(target, value) { - return this.instruction(target, value); - }; +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; - XMLNode.prototype.doc = function() { - return this.document(); - }; +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} - XMLNode.prototype.dec = function(version, encoding, standalone) { - return this.declaration(version, encoding, standalone); - }; +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; - XMLNode.prototype.dtd = function(pubID, sysID) { - return this.doctype(pubID, sysID); - }; + var state = this._readableState; + var paused = false; - XMLNode.prototype.e = function(name, attributes, text) { - return this.element(name, attributes, text); - }; + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } - XMLNode.prototype.n = function(name, attributes, text) { - return this.node(name, attributes, text); - }; + _this.push(null); + }); - XMLNode.prototype.t = function(value) { - return this.text(value); - }; + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); - XMLNode.prototype.d = function(value) { - return this.cdata(value); - }; + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - XMLNode.prototype.c = function(value) { - return this.comment(value); - }; + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); - XMLNode.prototype.r = function(value) { - return this.raw(value); - }; + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } - XMLNode.prototype.i = function(target, value) { - return this.instruction(target, value); - }; + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } - XMLNode.prototype.u = function() { - return this.up(); - }; + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; - XMLNode.prototype.importXMLBuilder = function(doc) { - return this.importDocument(doc); - }; + return this; +}; - return XMLNode; +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._readableState.highWaterMark; + } +}); - })(); +// exposed for testing purposes only. +Readable._fromList = fromList; -}).call(this); +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; -},{"./Utility":103,"./XMLCData":105,"./XMLComment":106,"./XMLDeclaration":111,"./XMLDocType":112,"./XMLElement":115,"./XMLProcessingInstruction":117,"./XMLRaw":118,"./XMLText":122}],117:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLNode, XMLProcessingInstruction, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } - XMLNode = _dereq_('./XMLNode'); + return ret; +} - module.exports = XMLProcessingInstruction = (function(superClass) { - extend(XMLProcessingInstruction, superClass); +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} - function XMLProcessingInstruction(parent, target, value) { - XMLProcessingInstruction.__super__.constructor.call(this, parent); - if (target == null) { - throw new Error("Missing instruction target"); - } - this.target = this.stringify.insTarget(target); - if (value) { - this.value = this.stringify.insValue(value); +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); } + break; } + ++c; + } + list.length -= c; + return ret; +} - XMLProcessingInstruction.prototype.clone = function() { - return Object.create(this); - }; - - XMLProcessingInstruction.prototype.toString = function(options) { - return this.options.writer.set(options).processingInstruction(this); - }; - - return XMLProcessingInstruction; - - })(XMLNode); - -}).call(this); - -},{"./XMLNode":116}],118:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLNode, XMLRaw, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; - - XMLNode = _dereq_('./XMLNode'); - - module.exports = XMLRaw = (function(superClass) { - extend(XMLRaw, superClass); - - function XMLRaw(parent, text) { - XMLRaw.__super__.constructor.call(this, parent); - if (text == null) { - throw new Error("Missing raw text"); +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); } - this.value = this.stringify.raw(text); + break; } + ++c; + } + list.length -= c; + return ret; +} - XMLRaw.prototype.clone = function() { - return Object.create(this); - }; - - XMLRaw.prototype.toString = function(options) { - return this.options.writer.set(options).raw(this); - }; - - return XMLRaw; - - })(XMLNode); - -}).call(this); - -},{"./XMLNode":116}],119:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStreamWriter, XMLText, XMLWriterBase, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; +function endReadable(stream) { + var state = stream._readableState; - XMLDeclaration = _dereq_('./XMLDeclaration'); + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); - XMLDocType = _dereq_('./XMLDocType'); + if (!state.endEmitted) { + state.ended = true; + pna.nextTick(endReadableNT, state, stream); + } +} - XMLCData = _dereq_('./XMLCData'); +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} - XMLComment = _dereq_('./XMLComment'); +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} +}).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - XMLElement = _dereq_('./XMLElement'); +},{"./_stream_duplex":99,"./internal/streams/BufferList":104,"./internal/streams/destroy":105,"./internal/streams/stream":106,"_process":97,"core-util-is":29,"events":56,"inherits":67,"isarray":69,"process-nextick-args":96,"safe-buffer":107,"string_decoder/":108,"util":19}],102:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - XMLRaw = _dereq_('./XMLRaw'); +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. - XMLText = _dereq_('./XMLText'); +'use strict'; - XMLProcessingInstruction = _dereq_('./XMLProcessingInstruction'); +module.exports = Transform; - XMLDTDAttList = _dereq_('./XMLDTDAttList'); +var Duplex = _dereq_('./_stream_duplex'); - XMLDTDElement = _dereq_('./XMLDTDElement'); +/**/ +var util = Object.create(_dereq_('core-util-is')); +util.inherits = _dereq_('inherits'); +/**/ - XMLDTDEntity = _dereq_('./XMLDTDEntity'); +util.inherits(Transform, Duplex); - XMLDTDNotation = _dereq_('./XMLDTDNotation'); +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; - XMLWriterBase = _dereq_('./XMLWriterBase'); + var cb = ts.writecb; - module.exports = XMLStreamWriter = (function(superClass) { - extend(XMLStreamWriter, superClass); + if (!cb) { + return this.emit('error', new Error('write callback called multiple times')); + } - function XMLStreamWriter(stream, options) { - XMLStreamWriter.__super__.constructor.call(this, options); - this.stream = stream; - } + ts.writechunk = null; + ts.writecb = null; - XMLStreamWriter.prototype.document = function(doc) { - var child, i, j, len, len1, ref, ref1, results; - ref = doc.children; - for (i = 0, len = ref.length; i < len; i++) { - child = ref[i]; - child.isLastRootNode = false; - } - doc.children[doc.children.length - 1].isLastRootNode = true; - ref1 = doc.children; - results = []; - for (j = 0, len1 = ref1.length; j < len1; j++) { - child = ref1[j]; - switch (false) { - case !(child instanceof XMLDeclaration): - results.push(this.declaration(child)); - break; - case !(child instanceof XMLDocType): - results.push(this.docType(child)); - break; - case !(child instanceof XMLComment): - results.push(this.comment(child)); - break; - case !(child instanceof XMLProcessingInstruction): - results.push(this.processingInstruction(child)); - break; - default: - results.push(this.element(child)); - } - } - return results; - }; + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); - XMLStreamWriter.prototype.attribute = function(att) { - return this.stream.write(' ' + att.name + '="' + att.value + '"'); - }; + cb(er); - XMLStreamWriter.prototype.cdata = function(node, level) { - return this.stream.write(this.space(level) + '' + this.endline(node)); - }; + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} - XMLStreamWriter.prototype.comment = function(node, level) { - return this.stream.write(this.space(level) + '' + this.endline(node)); - }; +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); - XMLStreamWriter.prototype.declaration = function(node, level) { - this.stream.write(this.space(level)); - this.stream.write(''); - return this.stream.write(this.endline(node)); - }; + Duplex.call(this, options); - XMLStreamWriter.prototype.docType = function(node, level) { - var child, i, len, ref; - level || (level = 0); - this.stream.write(this.space(level)); - this.stream.write(' 0) { - this.stream.write(' ['); - this.stream.write(this.endline(node)); - ref = node.children; - for (i = 0, len = ref.length; i < len; i++) { - child = ref[i]; - switch (false) { - case !(child instanceof XMLDTDAttList): - this.dtdAttList(child, level + 1); - break; - case !(child instanceof XMLDTDElement): - this.dtdElement(child, level + 1); - break; - case !(child instanceof XMLDTDEntity): - this.dtdEntity(child, level + 1); - break; - case !(child instanceof XMLDTDNotation): - this.dtdNotation(child, level + 1); - break; - case !(child instanceof XMLCData): - this.cdata(child, level + 1); - break; - case !(child instanceof XMLComment): - this.comment(child, level + 1); - break; - case !(child instanceof XMLProcessingInstruction): - this.processingInstruction(child, level + 1); - break; - default: - throw new Error("Unknown DTD node type: " + child.constructor.name); - } - } - this.stream.write(']'); - } - this.stream.write(this.spacebeforeslash + '>'); - return this.stream.write(this.endline(node)); - }; + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; - XMLStreamWriter.prototype.element = function(node, level) { - var att, child, i, len, name, ref, ref1, space; - level || (level = 0); - space = this.space(level); - this.stream.write(space + '<' + node.name); - ref = node.attributes; - for (name in ref) { - if (!hasProp.call(ref, name)) continue; - att = ref[name]; - this.attribute(att); - } - if (node.children.length === 0 || node.children.every(function(e) { - return e.value === ''; - })) { - if (this.allowEmpty) { - this.stream.write('>'); - } else { - this.stream.write(this.spacebeforeslash + '/>'); - } - } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) { - this.stream.write('>'); - this.stream.write(node.children[0].value); - this.stream.write(''); - } else { - this.stream.write('>' + this.newline); - ref1 = node.children; - for (i = 0, len = ref1.length; i < len; i++) { - child = ref1[i]; - switch (false) { - case !(child instanceof XMLCData): - this.cdata(child, level + 1); - break; - case !(child instanceof XMLComment): - this.comment(child, level + 1); - break; - case !(child instanceof XMLElement): - this.element(child, level + 1); - break; - case !(child instanceof XMLRaw): - this.raw(child, level + 1); - break; - case !(child instanceof XMLText): - this.text(child, level + 1); - break; - case !(child instanceof XMLProcessingInstruction): - this.processingInstruction(child, level + 1); - break; - default: - throw new Error("Unknown XML node type: " + child.constructor.name); - } - } - this.stream.write(space + ''); - } - return this.stream.write(this.endline(node)); - }; + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; - XMLStreamWriter.prototype.processingInstruction = function(node, level) { - this.stream.write(this.space(level) + '' + this.endline(node)); - }; + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; - XMLStreamWriter.prototype.raw = function(node, level) { - return this.stream.write(this.space(level) + node.value + this.endline(node)); - }; + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; - XMLStreamWriter.prototype.text = function(node, level) { - return this.stream.write(this.space(level) + node.value + this.endline(node)); - }; + if (typeof options.flush === 'function') this._flush = options.flush; + } - XMLStreamWriter.prototype.dtdAttList = function(node, level) { - this.stream.write(this.space(level) + '' + this.endline(node)); - }; + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} - XMLStreamWriter.prototype.dtdElement = function(node, level) { - this.stream.write(this.space(level) + '' + this.endline(node)); - }; +function prefinish() { + var _this = this; - XMLStreamWriter.prototype.dtdEntity = function(node, level) { - this.stream.write(this.space(level) + '' + this.endline(node)); - }; + if (typeof this._flush === 'function') { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} - XMLStreamWriter.prototype.dtdNotation = function(node, level) { - this.stream.write(this.space(level) + '' + this.endline(node)); - }; +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; - XMLStreamWriter.prototype.endline = function(node) { - if (!node.isLastRootNode) { - return this.newline; - } else { - return ''; - } - }; +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('_transform() is not implemented'); +}; - return XMLStreamWriter; +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; - })(XMLWriterBase); +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; -}).call(this); + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; -},{"./XMLCData":105,"./XMLComment":106,"./XMLDTDAttList":107,"./XMLDTDElement":108,"./XMLDTDEntity":109,"./XMLDTDNotation":110,"./XMLDeclaration":111,"./XMLDocType":112,"./XMLElement":115,"./XMLProcessingInstruction":117,"./XMLRaw":118,"./XMLText":122,"./XMLWriterBase":123}],120:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLText, XMLWriterBase, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; +Transform.prototype._destroy = function (err, cb) { + var _this2 = this; - XMLDeclaration = _dereq_('./XMLDeclaration'); + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + _this2.emit('close'); + }); +}; - XMLDocType = _dereq_('./XMLDocType'); +function done(stream, er, data) { + if (er) return stream.emit('error', er); - XMLCData = _dereq_('./XMLCData'); + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); - XMLComment = _dereq_('./XMLComment'); + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); - XMLElement = _dereq_('./XMLElement'); + if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); - XMLRaw = _dereq_('./XMLRaw'); + return stream.push(null); +} +},{"./_stream_duplex":99,"core-util-is":29,"inherits":67}],103:[function(_dereq_,module,exports){ +(function (process,global,setImmediate){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. - XMLText = _dereq_('./XMLText'); +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. - XMLProcessingInstruction = _dereq_('./XMLProcessingInstruction'); +'use strict'; - XMLDTDAttList = _dereq_('./XMLDTDAttList'); +/**/ - XMLDTDElement = _dereq_('./XMLDTDElement'); +var pna = _dereq_('process-nextick-args'); +/**/ - XMLDTDEntity = _dereq_('./XMLDTDEntity'); +module.exports = Writable; - XMLDTDNotation = _dereq_('./XMLDTDNotation'); +/* */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} - XMLWriterBase = _dereq_('./XMLWriterBase'); +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; - module.exports = XMLStringWriter = (function(superClass) { - extend(XMLStringWriter, superClass); + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ - function XMLStringWriter(options) { - XMLStringWriter.__super__.constructor.call(this, options); - } +/**/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; +/**/ - XMLStringWriter.prototype.document = function(doc) { - var child, i, len, r, ref; - this.textispresent = false; - r = ''; - ref = doc.children; - for (i = 0, len = ref.length; i < len; i++) { - child = ref[i]; - r += (function() { - switch (false) { - case !(child instanceof XMLDeclaration): - return this.declaration(child); - case !(child instanceof XMLDocType): - return this.docType(child); - case !(child instanceof XMLComment): - return this.comment(child); - case !(child instanceof XMLProcessingInstruction): - return this.processingInstruction(child); - default: - return this.element(child, 0); - } - }).call(this); - } - if (this.pretty && r.slice(-this.newline.length) === this.newline) { - r = r.slice(0, -this.newline.length); - } - return r; - }; +/**/ +var Duplex; +/**/ - XMLStringWriter.prototype.attribute = function(att) { - return ' ' + att.name + '="' + att.value + '"'; - }; +Writable.WritableState = WritableState; - XMLStringWriter.prototype.cdata = function(node, level) { - return this.space(level) + '' + this.newline; - }; +/**/ +var util = Object.create(_dereq_('core-util-is')); +util.inherits = _dereq_('inherits'); +/**/ - XMLStringWriter.prototype.comment = function(node, level) { - return this.space(level) + '' + this.newline; - }; +/**/ +var internalUtil = { + deprecate: _dereq_('util-deprecate') +}; +/**/ - XMLStringWriter.prototype.declaration = function(node, level) { - var r; - r = this.space(level); - r += ''; - r += this.newline; - return r; - }; +/**/ +var Stream = _dereq_('./internal/streams/stream'); +/**/ + +/**/ + +var Buffer = _dereq_('safe-buffer').Buffer; +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +var destroyImpl = _dereq_('./internal/streams/destroy'); - XMLStringWriter.prototype.docType = function(node, level) { - var child, i, len, r, ref; - level || (level = 0); - r = this.space(level); - r += ' 0) { - r += ' ['; - r += this.newline; - ref = node.children; - for (i = 0, len = ref.length; i < len; i++) { - child = ref[i]; - r += (function() { - switch (false) { - case !(child instanceof XMLDTDAttList): - return this.dtdAttList(child, level + 1); - case !(child instanceof XMLDTDElement): - return this.dtdElement(child, level + 1); - case !(child instanceof XMLDTDEntity): - return this.dtdEntity(child, level + 1); - case !(child instanceof XMLDTDNotation): - return this.dtdNotation(child, level + 1); - case !(child instanceof XMLCData): - return this.cdata(child, level + 1); - case !(child instanceof XMLComment): - return this.comment(child, level + 1); - case !(child instanceof XMLProcessingInstruction): - return this.processingInstruction(child, level + 1); - default: - throw new Error("Unknown DTD node type: " + child.constructor.name); - } - }).call(this); - } - r += ']'; - } - r += this.spacebeforeslash + '>'; - r += this.newline; - return r; - }; +util.inherits(Writable, Stream); - XMLStringWriter.prototype.element = function(node, level) { - var att, child, i, j, len, len1, name, r, ref, ref1, ref2, space, textispresentwasset; - level || (level = 0); - textispresentwasset = false; - if (this.textispresent) { - this.newline = ''; - this.pretty = false; - } else { - this.newline = this.newlinedefault; - this.pretty = this.prettydefault; - } - space = this.space(level); - r = ''; - r += space + '<' + node.name; - ref = node.attributes; - for (name in ref) { - if (!hasProp.call(ref, name)) continue; - att = ref[name]; - r += this.attribute(att); - } - if (node.children.length === 0 || node.children.every(function(e) { - return e.value === ''; - })) { - if (this.allowEmpty) { - r += '>' + this.newline; - } else { - r += this.spacebeforeslash + '/>' + this.newline; - } - } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) { - r += '>'; - r += node.children[0].value; - r += '' + this.newline; - } else { - if (this.dontprettytextnodes) { - ref1 = node.children; - for (i = 0, len = ref1.length; i < len; i++) { - child = ref1[i]; - if (child.value != null) { - this.textispresent++; - textispresentwasset = true; - break; - } - } - } - if (this.textispresent) { - this.newline = ''; - this.pretty = false; - space = this.space(level); - } - r += '>' + this.newline; - ref2 = node.children; - for (j = 0, len1 = ref2.length; j < len1; j++) { - child = ref2[j]; - r += (function() { - switch (false) { - case !(child instanceof XMLCData): - return this.cdata(child, level + 1); - case !(child instanceof XMLComment): - return this.comment(child, level + 1); - case !(child instanceof XMLElement): - return this.element(child, level + 1); - case !(child instanceof XMLRaw): - return this.raw(child, level + 1); - case !(child instanceof XMLText): - return this.text(child, level + 1); - case !(child instanceof XMLProcessingInstruction): - return this.processingInstruction(child, level + 1); - default: - throw new Error("Unknown XML node type: " + child.constructor.name); - } - }).call(this); - } - if (textispresentwasset) { - this.textispresent--; - } - if (!this.textispresent) { - this.newline = this.newlinedefault; - this.pretty = this.prettydefault; - } - r += space + '' + this.newline; - } - return r; - }; +function nop() {} - XMLStringWriter.prototype.processingInstruction = function(node, level) { - var r; - r = this.space(level) + '' + this.newline; - return r; - }; +function WritableState(options, stream) { + Duplex = Duplex || _dereq_('./_stream_duplex'); - XMLStringWriter.prototype.raw = function(node, level) { - return this.space(level) + node.value + this.newline; - }; + options = options || {}; - XMLStringWriter.prototype.text = function(node, level) { - return this.space(level) + node.value + this.newline; - }; + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; - XMLStringWriter.prototype.dtdAttList = function(node, level) { - var r; - r = this.space(level) + '' + this.newline; - return r; - }; + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; - XMLStringWriter.prototype.dtdElement = function(node, level) { - return this.space(level) + '' + this.newline; - }; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - XMLStringWriter.prototype.dtdEntity = function(node, level) { - var r; - r = this.space(level) + '' + this.newline; - return r; - }; + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var writableHwm = options.writableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; - XMLStringWriter.prototype.dtdNotation = function(node, level) { - var r; - r = this.space(level) + '' + this.newline; - return r; - }; + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; - XMLStringWriter.prototype.openNode = function(node, level) { - var att, name, r, ref; - level || (level = 0); - if (node instanceof XMLElement) { - r = this.space(level) + '<' + node.name; - ref = node.attributes; - for (name in ref) { - if (!hasProp.call(ref, name)) continue; - att = ref[name]; - r += this.attribute(att); - } - r += (node.children ? '>' : '/>') + this.newline; - return r; - } else { - r = this.space(level) + '') + this.newline; - return r; - } - }; + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); - XMLStringWriter.prototype.closeNode = function(node, level) { - level || (level = 0); - switch (false) { - case !(node instanceof XMLElement): - return this.space(level) + '' + this.newline; - case !(node instanceof XMLDocType): - return this.space(level) + ']>' + this.newline; - } - }; + // if _final has been called + this.finalCalled = false; - return XMLStringWriter; + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; - })(XMLWriterBase); + // has it been destroyed + this.destroyed = false; -}).call(this); + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; -},{"./XMLCData":105,"./XMLComment":106,"./XMLDTDAttList":107,"./XMLDTDElement":108,"./XMLDTDEntity":109,"./XMLDTDNotation":110,"./XMLDeclaration":111,"./XMLDocType":112,"./XMLElement":115,"./XMLProcessingInstruction":117,"./XMLRaw":118,"./XMLText":122,"./XMLWriterBase":123}],121:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLStringifier, - bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - hasProp = {}.hasOwnProperty; + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; - module.exports = XMLStringifier = (function() { - function XMLStringifier(options) { - this.assertLegalChar = bind(this.assertLegalChar, this); - var key, ref, value; - options || (options = {}); - this.noDoubleEncoding = options.noDoubleEncoding; - ref = options.stringify || {}; - for (key in ref) { - if (!hasProp.call(ref, key)) continue; - value = ref[key]; - this[key] = value; - } - } + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; - XMLStringifier.prototype.eleName = function(val) { - val = '' + val || ''; - return this.assertLegalChar(val); - }; + // a flag to see when we're in the middle of a write. + this.writing = false; - XMLStringifier.prototype.eleText = function(val) { - val = '' + val || ''; - return this.assertLegalChar(this.elEscape(val)); - }; + // when true all writes will be buffered until .uncork() call + this.corked = 0; - XMLStringifier.prototype.cdata = function(val) { - val = '' + val || ''; - val = val.replace(']]>', ']]]]>'); - return this.assertLegalChar(val); - }; + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; - XMLStringifier.prototype.comment = function(val) { - val = '' + val || ''; - if (val.match(/--/)) { - throw new Error("Comment text cannot contain double-hypen: " + val); - } - return this.assertLegalChar(val); - }; + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; - XMLStringifier.prototype.raw = function(val) { - return '' + val || ''; - }; + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; - XMLStringifier.prototype.attName = function(val) { - return val = '' + val || ''; - }; + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; - XMLStringifier.prototype.attValue = function(val) { - val = '' + val || ''; - return this.attEscape(val); - }; + // the amount that is being written when _write is called. + this.writelen = 0; - XMLStringifier.prototype.insTarget = function(val) { - return '' + val || ''; - }; + this.bufferedRequest = null; + this.lastBufferedRequest = null; - XMLStringifier.prototype.insValue = function(val) { - val = '' + val || ''; - if (val.match(/\?>/)) { - throw new Error("Invalid processing instruction value: " + val); - } - return val; - }; + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; - XMLStringifier.prototype.xmlVersion = function(val) { - val = '' + val || ''; - if (!val.match(/1\.[0-9]+/)) { - throw new Error("Invalid version number: " + val); - } - return val; - }; + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; - XMLStringifier.prototype.xmlEncoding = function(val) { - val = '' + val || ''; - if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) { - throw new Error("Invalid encoding: " + val); - } - return val; - }; + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; - XMLStringifier.prototype.xmlStandalone = function(val) { - if (val) { - return "yes"; - } else { - return "no"; - } - }; + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function (object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; - XMLStringifier.prototype.dtdPubID = function(val) { - return '' + val || ''; - }; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function (object) { + return object instanceof this; + }; +} - XMLStringifier.prototype.dtdSysID = function(val) { - return '' + val || ''; - }; +function Writable(options) { + Duplex = Duplex || _dereq_('./_stream_duplex'); - XMLStringifier.prototype.dtdElementValue = function(val) { - return '' + val || ''; - }; + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. - XMLStringifier.prototype.dtdAttType = function(val) { - return '' + val || ''; - }; + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { + return new Writable(options); + } - XMLStringifier.prototype.dtdAttDefault = function(val) { - if (val != null) { - return '' + val || ''; - } else { - return val; - } - }; + this._writableState = new WritableState(options, this); - XMLStringifier.prototype.dtdEntityValue = function(val) { - return '' + val || ''; - }; + // legacy. + this.writable = true; - XMLStringifier.prototype.dtdNData = function(val) { - return '' + val || ''; - }; + if (options) { + if (typeof options.write === 'function') this._write = options.write; - XMLStringifier.prototype.convertAttKey = '@'; + if (typeof options.writev === 'function') this._writev = options.writev; - XMLStringifier.prototype.convertPIKey = '?'; + if (typeof options.destroy === 'function') this._destroy = options.destroy; - XMLStringifier.prototype.convertTextKey = '#text'; + if (typeof options.final === 'function') this._final = options.final; + } - XMLStringifier.prototype.convertCDataKey = '#cdata'; + Stream.call(this); +} - XMLStringifier.prototype.convertCommentKey = '#comment'; +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; - XMLStringifier.prototype.convertRawKey = '#raw'; +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + pna.nextTick(cb, er); +} - XMLStringifier.prototype.assertLegalChar = function(str) { - var res; - res = str.match(/[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/); - if (res) { - throw new Error("Invalid character in string: " + str + " at index " + res.index); - } - return str; - }; +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; - XMLStringifier.prototype.elEscape = function(str) { - var ampregex; - ampregex = this.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g; - return str.replace(ampregex, '&').replace(//g, '>').replace(/\r/g, ' '); - }; + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + pna.nextTick(cb, er); + valid = false; + } + return valid; +} - XMLStringifier.prototype.attEscape = function(str) { - var ampregex; - ampregex = this.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g; - return str.replace(ampregex, '&').replace(/ -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; -},{"./XMLNode":116}],123:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLWriterBase, - hasProp = {}.hasOwnProperty; +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} - module.exports = XMLWriterBase = (function() { - function XMLWriterBase(options) { - var key, ref, ref1, ref2, ref3, ref4, ref5, ref6, value; - options || (options = {}); - this.pretty = options.pretty || false; - this.allowEmpty = (ref = options.allowEmpty) != null ? ref : false; - if (this.pretty) { - this.indent = (ref1 = options.indent) != null ? ref1 : ' '; - this.newline = (ref2 = options.newline) != null ? ref2 : '\n'; - this.offset = (ref3 = options.offset) != null ? ref3 : 0; - this.dontprettytextnodes = (ref4 = options.dontprettytextnodes) != null ? ref4 : 0; - } else { - this.indent = ''; - this.newline = ''; - this.offset = 0; - this.dontprettytextnodes = 0; - } - this.spacebeforeslash = (ref5 = options.spacebeforeslash) != null ? ref5 : ''; - if (this.spacebeforeslash === true) { - this.spacebeforeslash = ' '; - } - this.newlinedefault = this.newline; - this.prettydefault = this.pretty; - ref6 = options.writer || {}; - for (key in ref6) { - if (!hasProp.call(ref6, key)) continue; - value = ref6[key]; - this[key] = value; - } +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; } + } + var len = state.objectMode ? 1 : chunk.length; - XMLWriterBase.prototype.set = function(options) { - var key, ref, value; - options || (options = {}); - if ("pretty" in options) { - this.pretty = options.pretty; - } - if ("allowEmpty" in options) { - this.allowEmpty = options.allowEmpty; - } - if (this.pretty) { - this.indent = "indent" in options ? options.indent : ' '; - this.newline = "newline" in options ? options.newline : '\n'; - this.offset = "offset" in options ? options.offset : 0; - this.dontprettytextnodes = "dontprettytextnodes" in options ? options.dontprettytextnodes : 0; - } else { - this.indent = ''; - this.newline = ''; - this.offset = 0; - this.dontprettytextnodes = 0; - } - this.spacebeforeslash = "spacebeforeslash" in options ? options.spacebeforeslash : ''; - if (this.spacebeforeslash === true) { - this.spacebeforeslash = ' '; - } - this.newlinedefault = this.newline; - this.prettydefault = this.pretty; - ref = options.writer || {}; - for (key in ref) { - if (!hasProp.call(ref, key)) continue; - value = ref[key]; - this[key] = value; - } - return this; - }; + state.length += len; - XMLWriterBase.prototype.space = function(level) { - var indent; - if (this.pretty) { - indent = (level || 0) + this.offset + 1; - if (indent > 0) { - return new Array(indent).join(this.indent); - } else { - return ''; - } - } else { - return ''; - } - }; + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; - return XMLWriterBase; + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } - })(); + return ret; +} -}).call(this); +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} -},{}],124:[function(_dereq_,module,exports){ -// Generated by CoffeeScript 1.12.7 -(function() { - var XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref; +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; - ref = _dereq_('./Utility'), assign = ref.assign, isFunction = ref.isFunction; + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + pna.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + pna.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} - XMLDocument = _dereq_('./XMLDocument'); +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} - XMLDocumentCB = _dereq_('./XMLDocumentCB'); +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; - XMLStringWriter = _dereq_('./XMLStringWriter'); + onwriteStateUpdate(state); - XMLStreamWriter = _dereq_('./XMLStreamWriter'); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); - module.exports.create = function(name, xmldec, doctype, options) { - var doc, root; - if (name == null) { - throw new Error("Root element needs a name"); - } - options = assign({}, xmldec, doctype, options); - doc = new XMLDocument(options); - root = doc.element(name); - if (!options.headless) { - doc.declaration(options); - if ((options.pubID != null) || (options.sysID != null)) { - doc.doctype(options); - } + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); } - return root; - }; - module.exports.begin = function(options, onData, onEnd) { - var ref1; - if (isFunction(options)) { - ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1]; - options = {}; - } - if (onData) { - return new XMLDocumentCB(options, onData, onEnd); + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ } else { - return new XMLDocument(options); + afterWrite(stream, state, finished, cb); } - }; + } +} - module.exports.stringWriter = function(options) { - return new XMLStringWriter(options); - }; +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} - module.exports.streamWriter = function(stream, options) { - return new XMLStreamWriter(stream, options); - }; +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} -}).call(this); +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; -},{"./Utility":103,"./XMLDocument":113,"./XMLDocumentCB":114,"./XMLStreamWriter":119,"./XMLStringWriter":120}],125:[function(_dereq_,module,exports){ -function DOMParser(options){ - this.options = options ||{locator:{}}; -} + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; -DOMParser.prototype.parseFromString = function(source,mimeType){ - var options = this.options; - var sax = new XMLReader(); - var domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler - var errorHandler = options.errorHandler; - var locator = options.locator; - var defaultNSMap = options.xmlns||{}; - var isHTML = /\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1; - var entityMap = isHTML?htmlEntity.entityMap:{'lt':'<','gt':'>','amp':'&','quot':'"','apos':"'"}; - if(locator){ - domBuilder.setDocumentLocator(locator) - } + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; - sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); - sax.domBuilder = options.domBuilder || domBuilder; - if(isHTML){ - defaultNSMap['']= 'http://www.w3.org/1999/xhtml'; - } - defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace'; - if(source && typeof source === 'string'){ - sax.parse(source,defaultNSMap,entityMap); - }else{ - sax.errorHandler.error("invalid doc source"); - } - return domBuilder.doc; -} -function buildErrorHandler(errorImpl,domBuilder,locator){ - if(!errorImpl){ - if(domBuilder instanceof DOMHandler){ - return domBuilder; - } - errorImpl = domBuilder ; - } - var errorHandler = {} - var isCallback = errorImpl instanceof Function; - locator = locator||{} - function build(key){ - var fn = errorImpl[key]; - if(!fn && isCallback){ - fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; - } - errorHandler[key] = fn && function(msg){ - fn('[xmldom '+key+']\t'+msg+_locator(locator)); - }||function(){}; - } - build('warning'); - build('error'); - build('fatalError'); - return errorHandler; -} + doWrite(stream, state, true, state.length, buffer, '', holder.finish); -//console.log('#\n\n\n\n\n\n\n####') -/** - * +ContentHandler+ErrorHandler - * +LexicalHandler+EntityResolver2 - * -DeclHandler-DTDHandler - * - * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler - * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2 - * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html - */ -function DOMHandler() { - this.cdata = false; -} -function position(locator,node){ - node.lineNumber = locator.lineNumber; - node.columnNumber = locator.columnNumber; -} -/** - * @see org.xml.sax.ContentHandler#startDocument - * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html - */ -DOMHandler.prototype = { - startDocument : function() { - this.doc = new DOMImplementation().createDocument(null, null, null); - if (this.locator) { - this.doc.documentURI = this.locator.systemId; - } - }, - startElement:function(namespaceURI, localName, qName, attrs) { - var doc = this.doc; - var el = doc.createElementNS(namespaceURI, qName||localName); - var len = attrs.length; - appendElement(this, el); - this.currentElement = el; + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; - this.locator && position(this.locator,el) - for (var i = 0 ; i < len; i++) { - var namespaceURI = attrs.getURI(i); - var value = attrs.getValue(i); - var qName = attrs.getQName(i); - var attr = doc.createAttributeNS(namespaceURI, qName); - this.locator &&position(attrs.getLocator(i),attr); - attr.value = attr.nodeValue = value; - el.setAttributeNode(attr) - } - }, - endElement:function(namespaceURI, localName, qName) { - var current = this.currentElement - var tagName = current.tagName; - this.currentElement = current.parentNode; - }, - startPrefixMapping:function(prefix, uri) { - }, - endPrefixMapping:function(prefix) { - }, - processingInstruction:function(target, data) { - var ins = this.doc.createProcessingInstruction(target, data); - this.locator && position(this.locator,ins) - appendElement(this, ins); - }, - ignorableWhitespace:function(ch, start, length) { - }, - characters:function(chars, start, length) { - chars = _toString.apply(this,arguments) - //console.log(chars) - if(chars){ - if (this.cdata) { - var charNode = this.doc.createCDATASection(chars); - } else { - var charNode = this.doc.createTextNode(chars); - } - if(this.currentElement){ - this.currentElement.appendChild(charNode); - }else if(/^\s*$/.test(chars)){ - this.doc.appendChild(charNode); - //process xml - } - this.locator && position(this.locator,charNode) - } - }, - skippedEntity:function(name) { - }, - endDocument:function() { - this.doc.normalize(); - }, - setDocumentLocator:function (locator) { - if(this.locator = locator){// && !('lineNumber' in locator)){ - locator.lineNumber = 0; - } - }, - //LexicalHandler - comment:function(chars, start, length) { - chars = _toString.apply(this,arguments) - var comm = this.doc.createComment(chars); - this.locator && position(this.locator,comm) - appendElement(this, comm); - }, + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} - startCDATA:function() { - //used in characters() methods - this.cdata = true; - }, - endCDATA:function() { - this.cdata = false; - }, +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('_write() is not implemented')); +}; - startDTD:function(name, publicId, systemId) { - var impl = this.doc.implementation; - if (impl && impl.createDocumentType) { - var dt = impl.createDocumentType(name, publicId, systemId); - this.locator && position(this.locator,dt) - appendElement(this, dt); - } - }, - /** - * @see org.xml.sax.ErrorHandler - * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html - */ - warning:function(error) { - console.warn('[xmldom warning]\t'+error,_locator(this.locator)); - }, - error:function(error) { - console.error('[xmldom error]\t'+error,_locator(this.locator)); - }, - fatalError:function(error) { - throw new ParseError(error, this.locator); - } +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; } -function _locator(l){ - if(l){ - return '\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']' - } +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + stream.emit('error', err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); } -function _toString(chars,start,length){ - if(typeof chars == 'string'){ - return chars.substr(start,length) - }else{//java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") - if(chars.length >= start+length || start){ - return new java.lang.String(chars,start,length)+''; - } - return chars; - } +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function') { + state.pendingcb++; + state.finalCalled = true; + pna.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } } -/* - * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html - * used method of org.xml.sax.ext.LexicalHandler: - * #comment(chars, start, length) - * #startCDATA() - * #endCDATA() - * #startDTD(name, publicId, systemId) - * - * - * IGNORED method of org.xml.sax.ext.LexicalHandler: - * #endDTD() - * #startEntity(name) - * #endEntity(name) - * - * - * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html - * IGNORED method of org.xml.sax.ext.DeclHandler - * #attributeDecl(eName, aName, type, mode, value) - * #elementDecl(name, model) - * #externalEntityDecl(name, publicId, systemId) - * #internalEntityDecl(name, value) - * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html - * IGNORED method of org.xml.sax.EntityResolver2 - * #resolveEntity(String name,String publicId,String baseURI,String systemId) - * #resolveEntity(publicId, systemId) - * #getExternalSubset(name, baseURI) - * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html - * IGNORED method of org.xml.sax.DTDHandler - * #notationDecl(name, publicId, systemId) {}; - * #unparsedEntityDecl(name, publicId, systemId, notationName) {}; - */ -"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(key){ - DOMHandler.prototype[key] = function(){return null} -}) +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + + // reuse the free corkReq. + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + get: function () { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); + +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + this.end(); + cb(err); +}; +}).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},_dereq_("timers").setImmediate) + +},{"./_stream_duplex":99,"./internal/streams/destroy":105,"./internal/streams/stream":106,"_process":97,"core-util-is":29,"inherits":67,"process-nextick-args":96,"safe-buffer":107,"timers":118,"util-deprecate":119}],104:[function(_dereq_,module,exports){ +'use strict'; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Buffer = _dereq_('safe-buffer').Buffer; +var util = _dereq_('util'); + +function copyBuffer(src, target, offset) { + src.copy(target, offset); +} + +module.exports = function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + BufferList.prototype.push = function push(v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + }; + + BufferList.prototype.unshift = function unshift(v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + }; + + BufferList.prototype.shift = function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + }; + + BufferList.prototype.clear = function clear() { + this.head = this.tail = null; + this.length = 0; + }; + + BufferList.prototype.join = function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; + }; + + BufferList.prototype.concat = function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + }; -/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ -function appendElement (hander,node) { - if (!hander.currentElement) { - hander.doc.appendChild(node); - } else { - hander.currentElement.appendChild(node); + return BufferList; +}(); + +if (util && util.inspect && util.inspect.custom) { + module.exports.prototype[util.inspect.custom] = function () { + var obj = util.inspect({ length: this.length }); + return this.constructor.name + ' ' + obj; + }; +} +},{"safe-buffer":107,"util":19}],105:[function(_dereq_,module,exports){ +'use strict'; + +/**/ + +var pna = _dereq_('process-nextick-args'); +/**/ + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + pna.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, this, err); + } } -}//appendChild and setAttributeNS are preformance key -//if(typeof require == 'function'){ -var htmlEntity = _dereq_('./entities'); -var sax = _dereq_('./sax'); -var XMLReader = sax.XMLReader; -var ParseError = sax.ParseError; -var DOMImplementation = exports.DOMImplementation = _dereq_('./dom').DOMImplementation; -exports.XMLSerializer = _dereq_('./dom').XMLSerializer ; -exports.DOMParser = DOMParser; -exports.__DOMHandler = DOMHandler; -//} + return this; + } -},{"./dom":126,"./entities":127,"./sax":128}],126:[function(_dereq_,module,exports){ -function copy(src,dest){ - for(var p in src){ - dest[p] = src[p]; - } + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + pna.nextTick(emitErrorNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, _this, err); + } + } else if (cb) { + cb(err); + } + }); + + return this; } -/** -^\w+\.prototype\.([_\w]+)\s*=\s*((?:.*\{\s*?[\r\n][\s\S]*?^})|\S.*?(?=[;\r\n]));? -^\w+\.prototype\.([_\w]+)\s*=\s*(\S.*?(?=[;\r\n]));? - */ -function _extends(Class,Super){ - var pt = Class.prototype; - if(!(pt instanceof Super)){ - function t(){}; - t.prototype = Super.prototype; - t = new t(); - copy(pt,t); - Class.prototype = pt = t; - } - if(pt.constructor != Class){ - if(typeof Class != 'function'){ - console.error("unknow Class:"+Class) - } - pt.constructor = Class - } + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } } -var htmlns = 'http://www.w3.org/1999/xhtml' ; -// Node Types -var NodeType = {} -var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1; -var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2; -var TEXT_NODE = NodeType.TEXT_NODE = 3; -var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4; -var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5; -var ENTITY_NODE = NodeType.ENTITY_NODE = 6; -var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7; -var COMMENT_NODE = NodeType.COMMENT_NODE = 8; -var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9; -var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10; -var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11; -var NOTATION_NODE = NodeType.NOTATION_NODE = 12; -// ExceptionCode -var ExceptionCode = {} -var ExceptionMessage = {}; -var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]="Index size error"),1); -var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]="DOMString size error"),2); -var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]="Hierarchy request error"),3); -var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]="Wrong document"),4); -var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]="Invalid character"),5); -var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]="No data allowed"),6); -var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]="No modification allowed"),7); -var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]="Not found"),8); -var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]="Not supported"),9); -var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]="Attribute in use"),10); -//level2 -var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = ((ExceptionMessage[11]="Invalid state"),11); -var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = ((ExceptionMessage[12]="Syntax error"),12); -var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = ((ExceptionMessage[13]="Invalid modification"),13); -var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = ((ExceptionMessage[14]="Invalid namespace"),14); -var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = ((ExceptionMessage[15]="Invalid access"),15); +function emitErrorNT(self, err) { + self.emit('error', err); +} -/** - * DOM Level 2 - * Object DOMException - * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html - * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html - */ -function DOMException(code, message) { - if(message instanceof Error){ - var error = message; - }else{ - error = this; - Error.call(this, ExceptionMessage[code]); - this.message = ExceptionMessage[code]; - if(Error.captureStackTrace) Error.captureStackTrace(this, DOMException); - } - error.code = code; - if(message) this.message = this.message + ": " + message; - return error; -}; -DOMException.prototype = Error.prototype; -copy(ExceptionCode,DOMException) -/** - * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177 - * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live. - * The items in the NodeList are accessible via an integral index, starting from 0. - */ -function NodeList() { -}; -NodeList.prototype = { - /** - * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. - * @standard level1 - */ - length:0, - /** - * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. - * @standard level1 - * @param index unsigned long - * Index into the collection. - * @return Node - * The node at the indexth position in the NodeList, or null if that is not a valid index. - */ - item: function(index) { - return this[index] || null; - }, - toString:function(isHTML,nodeFilter){ - for(var buf = [], i = 0;i=0){ - var lastIndex = list.length-1 - while(i0 || key == 'xmlns'){ -// return null; -// } - //console.log() - var i = this.length; - while(i--){ - var attr = this[i]; - //console.log(attr.nodeName,key) - if(attr.nodeName == key){ - return attr; - } - } - }, - setNamedItem: function(attr) { - var el = attr.ownerElement; - if(el && el!=this._ownerElement){ - throw new DOMException(INUSE_ATTRIBUTE_ERR); - } - var oldAttr = this.getNamedItem(attr.nodeName); - _addNamedNode(this._ownerElement,this,attr,oldAttr); - return oldAttr; - }, - /* returns Node */ - setNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR - var el = attr.ownerElement, oldAttr; - if(el && el!=this._ownerElement){ - throw new DOMException(INUSE_ATTRIBUTE_ERR); - } - oldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName); - _addNamedNode(this._ownerElement,this,attr,oldAttr); - return oldAttr; - }, - /* returns Node */ - removeNamedItem: function(key) { - var attr = this.getNamedItem(key); - _removeNamedNode(this._ownerElement,this,attr); - return attr; - - - },// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR - - //for level2 - removeNamedItemNS:function(namespaceURI,localName){ - var attr = this.getNamedItemNS(namespaceURI,localName); - _removeNamedNode(this._ownerElement,this,attr); - return attr; - }, - getNamedItemNS: function(namespaceURI, localName) { - var i = this.length; - while(i--){ - var node = this[i]; - if(node.localName == localName && node.namespaceURI == namespaceURI){ - return node; - } - } - return null; - } -}; -/** - * @see http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 - */ -function DOMImplementation(/* Object */ features) { - this._features = {}; - if (features) { - for (var feature in features) { - this._features = features[feature]; - } - } -}; +},{"buffer":23}],108:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. -DOMImplementation.prototype = { - hasFeature: function(/* string */ feature, /* string */ version) { - var versions = this._features[feature.toLowerCase()]; - if (versions && (!version || version in versions)) { - return true; - } else { - return false; - } - }, - // Introduced in DOM Level 2: - createDocument:function(namespaceURI, qualifiedName, doctype){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR - var doc = new Document(); - doc.implementation = this; - doc.childNodes = new NodeList(); - doc.doctype = doctype; - if(doctype){ - doc.appendChild(doctype); - } - if(qualifiedName){ - var root = doc.createElementNS(namespaceURI,qualifiedName); - doc.appendChild(root); - } - return doc; - }, - // Introduced in DOM Level 2: - createDocumentType:function(qualifiedName, publicId, systemId){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR - var node = new DocumentType(); - node.name = qualifiedName; - node.nodeName = qualifiedName; - node.publicId = publicId; - node.systemId = systemId; - // Introduced in DOM Level 2: - //readonly attribute DOMString internalSubset; - - //TODO:.. - // readonly attribute NamedNodeMap entities; - // readonly attribute NamedNodeMap notations; - return node; - } -}; +'use strict'; +/**/ -/** - * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247 - */ +var Buffer = _dereq_('safe-buffer').Buffer; +/**/ -function Node() { +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } }; -Node.prototype = { - firstChild : null, - lastChild : null, - previousSibling : null, - nextSibling : null, - attributes : null, - parentNode : null, - childNodes : null, - ownerDocument : null, - nodeValue : null, - namespaceURI : null, - prefix : null, - localName : null, - // Modified in DOM Level 2: - insertBefore:function(newChild, refChild){//raises - return _insertBefore(this,newChild,refChild); - }, - replaceChild:function(newChild, oldChild){//raises - this.insertBefore(newChild,oldChild); - if(oldChild){ - this.removeChild(oldChild); - } - }, - removeChild:function(oldChild){ - return _removeChild(this,oldChild); - }, - appendChild:function(newChild){ - return this.insertBefore(newChild,null); - }, - hasChildNodes:function(){ - return this.firstChild != null; - }, - cloneNode:function(deep){ - return cloneNode(this.ownerDocument||this,this,deep); - }, - // Modified in DOM Level 2: - normalize:function(){ - var child = this.firstChild; - while(child){ - var next = child.nextSibling; - if(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){ - this.removeChild(next); - child.appendData(next.data); - }else{ - child.normalize(); - child = next; - } - } - }, - // Introduced in DOM Level 2: - isSupported:function(feature, version){ - return this.ownerDocument.implementation.hasFeature(feature,version); - }, - // Introduced in DOM Level 2: - hasAttributes:function(){ - return this.attributes.length>0; - }, - lookupPrefix:function(namespaceURI){ - var el = this; - while(el){ - var map = el._nsMap; - //console.dir(map) - if(map){ - for(var n in map){ - if(map[n] == namespaceURI){ - return n; - } - } - } - el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; - } - return null; - }, - // Introduced in DOM Level 3: - lookupNamespaceURI:function(prefix){ - var el = this; - while(el){ - var map = el._nsMap; - //console.dir(map) - if(map){ - if(prefix in map){ - return map[prefix] ; - } - } - el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; - } - return null; - }, - // Introduced in DOM Level 3: - isDefaultNamespace:function(namespaceURI){ - var prefix = this.lookupPrefix(namespaceURI); - return prefix == null; +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; } + } }; +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} -function _xmlEncoder(c){ - return c == '<' && '<' || - c == '>' && '>' || - c == '&' && '&' || - c == '"' && '"' || - '&#'+c.charCodeAt()+';' +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); } +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; -copy(NodeType,Node); -copy(NodeType,Node.prototype); +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; -/** - * @param callback return true for continue,false for break - * @return boolean true: break visit; - */ -function _visitNode(node,callback){ - if(callback(node)){ - return true; - } - if(node = node.firstChild){ - do{ - if(_visitNode(node,callback)){return true} - }while(node=node.nextSibling) +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; } + return nb; + } + return 0; } +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} -function Document(){ +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); } -function _onAddAttribute(doc,el,newAttr){ - doc && doc._inc++; - var ns = newAttr.namespaceURI ; - if(ns == 'http://www.w3.org/2000/xmlns/'){ - //update namespace - el._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value - } + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; } -function _onRemoveAttribute(doc,el,newAttr,remove){ - doc && doc._inc++; - var ns = newAttr.namespaceURI ; - if(ns == 'http://www.w3.org/2000/xmlns/'){ - //update namespace - delete el._nsMap[newAttr.prefix?newAttr.localName:''] - } + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); } -function _onUpdateChild(doc,el,newChild){ - if(doc && doc._inc){ - doc._inc++; - //update childNodes - var cs = el.childNodes; - if(newChild){ - cs[cs.length++] = newChild; - }else{ - //console.log(1) - var child = el.firstChild; - var i = 0; - while(child){ - cs[i++] = child; - child =child.nextSibling; - } - cs.length = i; - } - } + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); } -/** - * attributes; - * children; - * - * writeable properties: - * nodeValue,Attr:value,CharacterData:data - * prefix - */ -function _removeChild(parentNode,child){ - var previous = child.previousSibling; - var next = child.nextSibling; - if(previous){ - previous.nextSibling = next; - }else{ - parentNode.firstChild = next - } - if(next){ - next.previousSibling = previous; - }else{ - parentNode.lastChild = previous; - } - _onUpdateChild(parentNode.ownerDocument,parentNode); - return child; +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; } -/** - * preformance key(refChild == null) - */ -function _insertBefore(parentNode,newChild,nextChild){ - var cp = newChild.parentNode; - if(cp){ - cp.removeChild(newChild);//remove and update - } - if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ - var newFirst = newChild.firstChild; - if (newFirst == null) { - return newChild; - } - var newLast = newChild.lastChild; - }else{ - newFirst = newLast = newChild; - } - var pre = nextChild ? nextChild.previousSibling : parentNode.lastChild; - newFirst.previousSibling = pre; - newLast.nextSibling = nextChild; - - - if(pre){ - pre.nextSibling = newFirst; - }else{ - parentNode.firstChild = newFirst; - } - if(nextChild == null){ - parentNode.lastChild = newLast; - }else{ - nextChild.previousSibling = newLast; - } - do{ - newFirst.parentNode = parentNode; - }while(newFirst !== newLast && (newFirst= newFirst.nextSibling)) - _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode); - //console.log(parentNode.lastChild.nextSibling == null) - if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) { - newChild.firstChild = newChild.lastChild = null; - } - return newChild; +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); } -function _appendSingleChild(parentNode,newChild){ - var cp = newChild.parentNode; - if(cp){ - var pre = parentNode.lastChild; - cp.removeChild(newChild);//remove and update - var pre = parentNode.lastChild; + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} +},{"safe-buffer":107}],109:[function(_dereq_,module,exports){ +module.exports = _dereq_('./readable').PassThrough + +},{"./readable":110}],110:[function(_dereq_,module,exports){ +exports = module.exports = _dereq_('./lib/_stream_readable.js'); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = _dereq_('./lib/_stream_writable.js'); +exports.Duplex = _dereq_('./lib/_stream_duplex.js'); +exports.Transform = _dereq_('./lib/_stream_transform.js'); +exports.PassThrough = _dereq_('./lib/_stream_passthrough.js'); + +},{"./lib/_stream_duplex.js":99,"./lib/_stream_passthrough.js":100,"./lib/_stream_readable.js":101,"./lib/_stream_transform.js":102,"./lib/_stream_writable.js":103}],111:[function(_dereq_,module,exports){ +module.exports = _dereq_('./readable').Transform + +},{"./readable":110}],112:[function(_dereq_,module,exports){ +module.exports = _dereq_('./lib/_stream_writable.js'); + +},{"./lib/_stream_writable.js":103}],113:[function(_dereq_,module,exports){ +'use strict'; + +var GetIntrinsic = _dereq_('get-intrinsic'); +var define = _dereq_('define-data-property'); +var hasDescriptors = _dereq_('has-property-descriptors')(); +var gOPD = _dereq_('gopd'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $floor = GetIntrinsic('%Math.floor%'); + +module.exports = function setFunctionLength(fn, length) { + if (typeof fn !== 'function') { + throw new $TypeError('`fn` is not a function'); } - var pre = parentNode.lastChild; - newChild.parentNode = parentNode; - newChild.previousSibling = pre; - newChild.nextSibling = null; - if(pre){ - pre.nextSibling = newChild; - }else{ - parentNode.firstChild = newChild; + if (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) { + throw new $TypeError('`length` must be a positive 32-bit integer'); } - parentNode.lastChild = newChild; - _onUpdateChild(parentNode.ownerDocument,parentNode,newChild); - return newChild; - //console.log("__aa",parentNode.lastChild.nextSibling == null) -} -Document.prototype = { - //implementation : null, - nodeName : '#document', - nodeType : DOCUMENT_NODE, - doctype : null, - documentElement : null, - _inc : 1, - - insertBefore : function(newChild, refChild){//raises - if(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){ - var child = newChild.firstChild; - while(child){ - var next = child.nextSibling; - this.insertBefore(child,refChild); - child = next; - } - return newChild; - } - if(this.documentElement == null && newChild.nodeType == ELEMENT_NODE){ - this.documentElement = newChild; - } - - return _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild; - }, - removeChild : function(oldChild){ - if(this.documentElement == oldChild){ - this.documentElement = null; + + var loose = arguments.length > 2 && !!arguments[2]; + + var functionLengthIsConfigurable = true; + var functionLengthIsWritable = true; + if ('length' in fn && gOPD) { + var desc = gOPD(fn, 'length'); + if (desc && !desc.configurable) { + functionLengthIsConfigurable = false; } - return _removeChild(this,oldChild); - }, - // Introduced in DOM Level 2: - importNode : function(importedNode,deep){ - return importNode(this,importedNode,deep); - }, - // Introduced in DOM Level 2: - getElementById : function(id){ - var rtv = null; - _visitNode(this.documentElement,function(node){ - if(node.nodeType == ELEMENT_NODE){ - if(node.getAttribute('id') == id){ - rtv = node; - return true; - } - } - }) - return rtv; - }, - - getElementsByClassName: function(className) { - var pattern = new RegExp("(^|\\s)" + className + "(\\s|$)"); - return new LiveNodeList(this, function(base) { - var ls = []; - _visitNode(base.documentElement, function(node) { - if(node !== base && node.nodeType == ELEMENT_NODE) { - if(pattern.test(node.getAttribute('class'))) { - ls.push(node); - } - } - }); - return ls; - }); - }, - - //document factory method: - createElement : function(tagName){ - var node = new Element(); - node.ownerDocument = this; - node.nodeName = tagName; - node.tagName = tagName; - node.childNodes = new NodeList(); - var attrs = node.attributes = new NamedNodeMap(); - attrs._ownerElement = node; - return node; - }, - createDocumentFragment : function(){ - var node = new DocumentFragment(); - node.ownerDocument = this; - node.childNodes = new NodeList(); - return node; - }, - createTextNode : function(data){ - var node = new Text(); - node.ownerDocument = this; - node.appendData(data) - return node; - }, - createComment : function(data){ - var node = new Comment(); - node.ownerDocument = this; - node.appendData(data) - return node; - }, - createCDATASection : function(data){ - var node = new CDATASection(); - node.ownerDocument = this; - node.appendData(data) - return node; - }, - createProcessingInstruction : function(target,data){ - var node = new ProcessingInstruction(); - node.ownerDocument = this; - node.tagName = node.target = target; - node.nodeValue= node.data = data; - return node; - }, - createAttribute : function(name){ - var node = new Attr(); - node.ownerDocument = this; - node.name = name; - node.nodeName = name; - node.localName = name; - node.specified = true; - return node; - }, - createEntityReference : function(name){ - var node = new EntityReference(); - node.ownerDocument = this; - node.nodeName = name; - return node; - }, - // Introduced in DOM Level 2: - createElementNS : function(namespaceURI,qualifiedName){ - var node = new Element(); - var pl = qualifiedName.split(':'); - var attrs = node.attributes = new NamedNodeMap(); - node.childNodes = new NodeList(); - node.ownerDocument = this; - node.nodeName = qualifiedName; - node.tagName = qualifiedName; - node.namespaceURI = namespaceURI; - if(pl.length == 2){ - node.prefix = pl[0]; - node.localName = pl[1]; - }else{ - //el.prefix = null; - node.localName = qualifiedName; + if (desc && !desc.writable) { + functionLengthIsWritable = false; } - attrs._ownerElement = node; - return node; - }, - // Introduced in DOM Level 2: - createAttributeNS : function(namespaceURI,qualifiedName){ - var node = new Attr(); - var pl = qualifiedName.split(':'); - node.ownerDocument = this; - node.nodeName = qualifiedName; - node.name = qualifiedName; - node.namespaceURI = namespaceURI; - node.specified = true; - if(pl.length == 2){ - node.prefix = pl[0]; - node.localName = pl[1]; - }else{ - //el.prefix = null; - node.localName = qualifiedName; + } + + if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) { + if (hasDescriptors) { + define(fn, 'length', length, true, true); + } else { + define(fn, 'length', length); } - return node; } + return fn; +}; + +},{"define-data-property":55,"get-intrinsic":59,"gopd":60,"has-property-descriptors":61}],114:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Stream; + +var EE = _dereq_('events').EventEmitter; +var inherits = _dereq_('inherits'); + +inherits(Stream, EE); +Stream.Readable = _dereq_('readable-stream/readable.js'); +Stream.Writable = _dereq_('readable-stream/writable.js'); +Stream.Duplex = _dereq_('readable-stream/duplex.js'); +Stream.Transform = _dereq_('readable-stream/transform.js'); +Stream.PassThrough = _dereq_('readable-stream/passthrough.js'); + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; }; -_extends(Document,Node); +},{"events":56,"inherits":67,"readable-stream/duplex.js":98,"readable-stream/passthrough.js":109,"readable-stream/readable.js":110,"readable-stream/transform.js":111,"readable-stream/writable.js":112}],115:[function(_dereq_,module,exports){ +module.exports = _dereq_('stream-to').buffer +},{"stream-to":116}],116:[function(_dereq_,module,exports){ +(function (Buffer){(function (){ +exports.array = toArray +exports.buffer = toBuffer -function Element() { - this._nsMap = {}; +function toArray(stream, callback) { + var arr = [] + + stream.on('data', onData) + stream.once('end', onEnd) + stream.once('error', callback) + stream.once('error', cleanup) + stream.once('close', cleanup) + + function onData(doc) { + arr.push(doc) + } + + function onEnd() { + callback(null, arr) + cleanup() + } + + function cleanup() { + arr = null + stream.removeListener('data', onData) + stream.removeListener('end', onEnd) + stream.removeListener('error', callback) + stream.removeListener('error', cleanup) + stream.removeListener('close', cleanup) + } + + return stream +} + +function toBuffer(stream, callback) { + toArray(stream, function (err, arr) { + if (err || !arr) + callback(err) + else + callback(null, Buffer.concat(arr)) + }) + + return stream +} +}).call(this)}).call(this,_dereq_("buffer").Buffer) + +},{"buffer":23}],117:[function(_dereq_,module,exports){ +(function (Buffer){(function (){ +'use strict'; + +var util = _dereq_('util'); +var stream = _dereq_('stream'); + +module.exports.createReadStream = function (object, options) { + return new MultiStream (object, options); }; -Element.prototype = { - nodeType : ELEMENT_NODE, - hasAttribute : function(name){ - return this.getAttributeNode(name)!=null; - }, - getAttribute : function(name){ - var attr = this.getAttributeNode(name); - return attr && attr.value || ''; - }, - getAttributeNode : function(name){ - return this.attributes.getNamedItem(name); - }, - setAttribute : function(name, value){ - var attr = this.ownerDocument.createAttribute(name); - attr.value = attr.nodeValue = "" + value; - this.setAttributeNode(attr) - }, - removeAttribute : function(name){ - var attr = this.getAttributeNode(name) - attr && this.removeAttributeNode(attr); - }, - - //four real opeartion method - appendChild:function(newChild){ - if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ - return this.insertBefore(newChild,null); - }else{ - return _appendSingleChild(this,newChild); - } - }, - setAttributeNode : function(newAttr){ - return this.attributes.setNamedItem(newAttr); - }, - setAttributeNodeNS : function(newAttr){ - return this.attributes.setNamedItemNS(newAttr); - }, - removeAttributeNode : function(oldAttr){ - //console.log(this == oldAttr.ownerElement) - return this.attributes.removeNamedItem(oldAttr.nodeName); - }, - //get real attribute name,and remove it by removeAttributeNode - removeAttributeNS : function(namespaceURI, localName){ - var old = this.getAttributeNodeNS(namespaceURI, localName); - old && this.removeAttributeNode(old); - }, - - hasAttributeNS : function(namespaceURI, localName){ - return this.getAttributeNodeNS(namespaceURI, localName)!=null; - }, - getAttributeNS : function(namespaceURI, localName){ - var attr = this.getAttributeNodeNS(namespaceURI, localName); - return attr && attr.value || ''; - }, - setAttributeNS : function(namespaceURI, qualifiedName, value){ - var attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName); - attr.value = attr.nodeValue = "" + value; - this.setAttributeNode(attr) - }, - getAttributeNodeNS : function(namespaceURI, localName){ - return this.attributes.getNamedItemNS(namespaceURI, localName); - }, - - getElementsByTagName : function(tagName){ - return new LiveNodeList(this,function(base){ - var ls = []; - _visitNode(base,function(node){ - if(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){ - ls.push(node); - } - }); - return ls; - }); - }, - getElementsByTagNameNS : function(namespaceURI, localName){ - return new LiveNodeList(this,function(base){ - var ls = []; - _visitNode(base,function(node){ - if(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){ - ls.push(node); - } - }); - return ls; - - }); - } + +var MultiStream = function (object, options) { + if (object instanceof Buffer || typeof object === 'string') { + options = options || {}; + stream.Readable.call(this, { + highWaterMark: options.highWaterMark, + encoding: options.encoding + }); + } else { + stream.Readable.call(this, { objectMode: true }); + } + this._object = object; }; -Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName; -Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS; +util.inherits(MultiStream, stream.Readable); -_extends(Element,Node); -function Attr() { +MultiStream.prototype._read = function () { + this.push(this._object); + this._object = null; }; -Attr.prototype.nodeType = ATTRIBUTE_NODE; -_extends(Attr,Node); +}).call(this)}).call(this,_dereq_("buffer").Buffer) + +},{"buffer":23,"stream":114,"util":122}],118:[function(_dereq_,module,exports){ +(function (setImmediate,clearImmediate){(function (){ +var nextTick = _dereq_('process/browser.js').nextTick; +var apply = Function.prototype.apply; +var slice = Array.prototype.slice; +var immediateIds = {}; +var nextImmediateId = 0; +// DOM APIs, for completeness -function CharacterData() { +exports.setTimeout = function() { + return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); }; -CharacterData.prototype = { - data : '', - substringData : function(offset, count) { - return this.data.substring(offset, offset+count); - }, - appendData: function(text) { - text = this.data+text; - this.nodeValue = this.data = text; - this.length = text.length; - }, - insertData: function(offset,text) { - this.replaceData(offset,0,text); - - }, - appendChild:function(newChild){ - throw new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR]) - }, - deleteData: function(offset, count) { - this.replaceData(offset,count,""); - }, - replaceData: function(offset, count, text) { - var start = this.data.substring(0,offset); - var end = this.data.substring(offset+count); - text = start + text + end; - this.nodeValue = this.data = text; - this.length = text.length; - } -} -_extends(CharacterData,Node); -function Text() { +exports.setInterval = function() { + return new Timeout(apply.call(setInterval, window, arguments), clearInterval); }; -Text.prototype = { - nodeName : "#text", - nodeType : TEXT_NODE, - splitText : function(offset) { - var text = this.data; - var newText = text.substring(offset); - text = text.substring(0, offset); - this.data = this.nodeValue = text; - this.length = text.length; - var newNode = this.ownerDocument.createTextNode(newText); - if(this.parentNode){ - this.parentNode.insertBefore(newNode, this.nextSibling); - } - return newNode; - } +exports.clearTimeout = +exports.clearInterval = function(timeout) { timeout.close(); }; + +function Timeout(id, clearFn) { + this._id = id; + this._clearFn = clearFn; } -_extends(Text,CharacterData); -function Comment() { +Timeout.prototype.unref = Timeout.prototype.ref = function() {}; +Timeout.prototype.close = function() { + this._clearFn.call(window, this._id); }; -Comment.prototype = { - nodeName : "#comment", - nodeType : COMMENT_NODE -} -_extends(Comment,CharacterData); -function CDATASection() { +// Does not start the time, just sets up the members needed. +exports.enroll = function(item, msecs) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = msecs; +}; + +exports.unenroll = function(item) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = -1; }; -CDATASection.prototype = { - nodeName : "#cdata-section", - nodeType : CDATA_SECTION_NODE -} -_extends(CDATASection,CharacterData); +exports._unrefActive = exports.active = function(item) { + clearTimeout(item._idleTimeoutId); -function DocumentType() { + var msecs = item._idleTimeout; + if (msecs >= 0) { + item._idleTimeoutId = setTimeout(function onTimeout() { + if (item._onTimeout) + item._onTimeout(); + }, msecs); + } }; -DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE; -_extends(DocumentType,Node); -function Notation() { +// That's not how node.js implements it but the exposed api is the same. +exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { + var id = nextImmediateId++; + var args = arguments.length < 2 ? false : slice.call(arguments, 1); + + immediateIds[id] = true; + + nextTick(function onNextTick() { + if (immediateIds[id]) { + // fn.call() is faster so we optimize for the common use-case + // @see http://jsperf.com/call-apply-segu + if (args) { + fn.apply(null, args); + } else { + fn.call(null); + } + // Prevent ids from leaking + exports.clearImmediate(id); + } + }); + + return id; }; -Notation.prototype.nodeType = NOTATION_NODE; -_extends(Notation,Node); -function Entity() { +exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { + delete immediateIds[id]; }; -Entity.prototype.nodeType = ENTITY_NODE; -_extends(Entity,Node); +}).call(this)}).call(this,_dereq_("timers").setImmediate,_dereq_("timers").clearImmediate) + +},{"process/browser.js":97,"timers":118}],119:[function(_dereq_,module,exports){ +(function (global){(function (){ + +/** + * Module exports. + */ + +module.exports = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!global.localStorage) return false; + } catch (_) { + return false; + } + var val = global.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{}],120:[function(_dereq_,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],121:[function(_dereq_,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],122:[function(_dereq_,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. -function EntityReference() { -}; -EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE; -_extends(EntityReference,Node); +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } -function DocumentFragment() { + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; }; -DocumentFragment.prototype.nodeName = "#document-fragment"; -DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE; -_extends(DocumentFragment,Node); -function ProcessingInstruction() { -} -ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE; -_extends(ProcessingInstruction,Node); -function XMLSerializer(){} -XMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){ - return nodeSerializeToString.call(node,isHtml,nodeFilter); -} -Node.prototype.toString = nodeSerializeToString; -function nodeSerializeToString(isHtml,nodeFilter){ - var buf = []; - var refNode = this.nodeType == 9 && this.documentElement || this; - var prefix = refNode.prefix; - var uri = refNode.namespaceURI; - - if(uri && prefix == null){ - //console.log(prefix) - var prefix = refNode.lookupPrefix(uri); - if(prefix == null){ - //isHTML = true; - var visibleNamespaces=[ - {namespace:uri,prefix:null} - //{namespace:uri,prefix:''} - ] - } - } - serializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces); - //console.log('###',this.nodeType,uri,prefix,buf.join('')) - return buf.join(''); -} -function needNamespaceDefine(node,isHTML, visibleNamespaces) { - var prefix = node.prefix||''; - var uri = node.namespaceURI; - if (!prefix && !uri){ - return false; - } - if (prefix === "xml" && uri === "http://www.w3.org/XML/1998/namespace" - || uri == 'http://www.w3.org/2000/xmlns/'){ - return false; - } - - var i = visibleNamespaces.length - //console.log('@@@@',node.tagName,prefix,uri,visibleNamespaces) - while (i--) { - var ns = visibleNamespaces[i]; - // get namespace prefix - //console.log(node.nodeType,node.tagName,ns.prefix,prefix) - if (ns.prefix == prefix){ - return ns.namespace != uri; - } - } - //console.log(isHTML,uri,prefix=='') - //if(isHTML && prefix ==null && uri == 'http://www.w3.org/1999/xhtml'){ - // return false; - //} - //node.flag = '11111' - //console.error(3,true,node.flag,node.prefix,node.namespaceURI) - return true; -} -function serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){ - if(nodeFilter){ - node = nodeFilter(node); - if(node){ - if(typeof node == 'string'){ - buf.push(node); - return; - } - }else{ - return; - } - //buf.sort.apply(attrs, attributeSorter); - } - switch(node.nodeType){ - case ELEMENT_NODE: - if (!visibleNamespaces) visibleNamespaces = []; - var startVisibleNamespaces = visibleNamespaces.length; - var attrs = node.attributes; - var len = attrs.length; - var child = node.firstChild; - var nodeName = node.tagName; - - isHTML = (htmlns === node.namespaceURI) ||isHTML - buf.push('<',nodeName); - - - - for(var i=0;i'); - //if is cdata child node - if(isHTML && /^script$/i.test(nodeName)){ - while(child){ - if(child.data){ - buf.push(child.data); - }else{ - serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces); - } - child = child.nextSibling; - } - }else - { - while(child){ - serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces); - child = child.nextSibling; - } - } - buf.push(''); - }else{ - buf.push('/>'); - } - // remove added visible namespaces - //visibleNamespaces.length = startVisibleNamespaces; - return; - case DOCUMENT_NODE: - case DOCUMENT_FRAGMENT_NODE: - var child = node.firstChild; - while(child){ - serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces); - child = child.nextSibling; - } - return; - case ATTRIBUTE_NODE: - return buf.push(' ',node.name,'="',node.value.replace(/[&"]/g,_xmlEncoder),'"'); - case TEXT_NODE: - /** - * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form, - * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. - * If they are needed elsewhere, they must be escaped using either numeric character references or the strings - * `&` and `<` respectively. - * The right angle bracket (>) may be represented using the string " > ", and must, for compatibility, - * be escaped using either `>` or a character reference when it appears in the string `]]>` in content, - * when that string is not marking the end of a CDATA section. - * - * In the content of elements, character data is any string of characters - * which does not contain the start-delimiter of any markup - * and does not include the CDATA-section-close delimiter, `]]>`. - * - * @see https://www.w3.org/TR/xml/#NT-CharData - */ - return buf.push(node.data - .replace(/[<&]/g,_xmlEncoder) - .replace(/]]>/g, ']]>') - ); - case CDATA_SECTION_NODE: - return buf.push( ''); - case COMMENT_NODE: - return buf.push( ""); - case DOCUMENT_TYPE_NODE: - var pubid = node.publicId; - var sysid = node.systemId; - buf.push(''); - }else if(sysid && sysid!='.'){ - buf.push(' SYSTEM ', sysid, '>'); - }else{ - var sub = node.internalSubset; - if(sub){ - buf.push(" [",sub,"]"); - } - buf.push(">"); - } - return; - case PROCESSING_INSTRUCTION_NODE: - return buf.push( ""); - case ENTITY_REFERENCE_NODE: - return buf.push( '&',node.nodeName,';'); - //case ENTITY_NODE: - //case NOTATION_NODE: - default: - buf.push('??',node.nodeName); - } -} -function importNode(doc,node,deep){ - var node2; - switch (node.nodeType) { - case ELEMENT_NODE: - node2 = node.cloneNode(false); - node2.ownerDocument = doc; - //var attrs = node2.attributes; - //var len = attrs.length; - //for(var i=0;i= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); } -// -//var _relationMap = {firstChild:1,lastChild:1,previousSibling:1,nextSibling:1, -// attributes:1,childNodes:1,parentNode:1,documentElement:1,doctype,}; -function cloneNode(doc,node,deep){ - var node2 = new node.constructor(); - for(var n in node){ - var v = node[n]; - if(typeof v != 'object' ){ - if(v != node2[n]){ - node2[n] = v; - } - } - } - if(node.childNodes){ - node2.childNodes = new NodeList(); - } - node2.ownerDocument = doc; - switch (node2.nodeType) { - case ELEMENT_NODE: - var attrs = node.attributes; - var attrs2 = node2.attributes = new NamedNodeMap(); - var len = attrs.length - attrs2._ownerElement = node2; - for(var i=0;i', - amp: '&', - quot: '"', - apos: "'", - Agrave: "À", - Aacute: "Á", - Acirc: "Â", - Atilde: "Ã", - Auml: "Ä", - Aring: "Å", - AElig: "Æ", - Ccedil: "Ç", - Egrave: "È", - Eacute: "É", - Ecirc: "Ê", - Euml: "Ë", - Igrave: "Ì", - Iacute: "Í", - Icirc: "Î", - Iuml: "Ï", - ETH: "Ð", - Ntilde: "Ñ", - Ograve: "Ò", - Oacute: "Ó", - Ocirc: "Ô", - Otilde: "Õ", - Ouml: "Ö", - Oslash: "Ø", - Ugrave: "Ù", - Uacute: "Ú", - Ucirc: "Û", - Uuml: "Ü", - Yacute: "Ý", - THORN: "Þ", - szlig: "ß", - agrave: "à", - aacute: "á", - acirc: "â", - atilde: "ã", - auml: "ä", - aring: "å", - aelig: "æ", - ccedil: "ç", - egrave: "è", - eacute: "é", - ecirc: "ê", - euml: "ë", - igrave: "ì", - iacute: "í", - icirc: "î", - iuml: "ï", - eth: "ð", - ntilde: "ñ", - ograve: "ò", - oacute: "ó", - ocirc: "ô", - otilde: "õ", - ouml: "ö", - oslash: "ø", - ugrave: "ù", - uacute: "ú", - ucirc: "û", - uuml: "ü", - yacute: "ý", - thorn: "þ", - yuml: "ÿ", - nbsp: "\u00a0", - iexcl: "¡", - cent: "¢", - pound: "£", - curren: "¤", - yen: "¥", - brvbar: "¦", - sect: "§", - uml: "¨", - copy: "©", - ordf: "ª", - laquo: "«", - not: "¬", - shy: "­­", - reg: "®", - macr: "¯", - deg: "°", - plusmn: "±", - sup2: "²", - sup3: "³", - acute: "´", - micro: "µ", - para: "¶", - middot: "·", - cedil: "¸", - sup1: "¹", - ordm: "º", - raquo: "»", - frac14: "¼", - frac12: "½", - frac34: "¾", - iquest: "¿", - times: "×", - divide: "÷", - forall: "∀", - part: "∂", - exist: "∃", - empty: "∅", - nabla: "∇", - isin: "∈", - notin: "∉", - ni: "∋", - prod: "∏", - sum: "∑", - minus: "−", - lowast: "∗", - radic: "√", - prop: "∝", - infin: "∞", - ang: "∠", - and: "∧", - or: "∨", - cap: "∩", - cup: "∪", - 'int': "∫", - there4: "∴", - sim: "∼", - cong: "≅", - asymp: "≈", - ne: "≠", - equiv: "≡", - le: "≤", - ge: "≥", - sub: "⊂", - sup: "⊃", - nsub: "⊄", - sube: "⊆", - supe: "⊇", - oplus: "⊕", - otimes: "⊗", - perp: "⊥", - sdot: "⋅", - Alpha: "Α", - Beta: "Β", - Gamma: "Γ", - Delta: "Δ", - Epsilon: "Ε", - Zeta: "Ζ", - Eta: "Η", - Theta: "Θ", - Iota: "Ι", - Kappa: "Κ", - Lambda: "Λ", - Mu: "Μ", - Nu: "Ν", - Xi: "Ξ", - Omicron: "Ο", - Pi: "Π", - Rho: "Ρ", - Sigma: "Σ", - Tau: "Τ", - Upsilon: "Υ", - Phi: "Φ", - Chi: "Χ", - Psi: "Ψ", - Omega: "Ω", - alpha: "α", - beta: "β", - gamma: "γ", - delta: "δ", - epsilon: "ε", - zeta: "ζ", - eta: "η", - theta: "θ", - iota: "ι", - kappa: "κ", - lambda: "λ", - mu: "μ", - nu: "ν", - xi: "ξ", - omicron: "ο", - pi: "π", - rho: "ρ", - sigmaf: "ς", - sigma: "σ", - tau: "τ", - upsilon: "υ", - phi: "φ", - chi: "χ", - psi: "ψ", - omega: "ω", - thetasym: "ϑ", - upsih: "ϒ", - piv: "ϖ", - OElig: "Œ", - oelig: "œ", - Scaron: "Š", - scaron: "š", - Yuml: "Ÿ", - fnof: "ƒ", - circ: "ˆ", - tilde: "˜", - ensp: " ", - emsp: " ", - thinsp: " ", - zwnj: "‌", - zwj: "‍", - lrm: "‎", - rlm: "‏", - ndash: "–", - mdash: "—", - lsquo: "‘", - rsquo: "’", - sbquo: "‚", - ldquo: "“", - rdquo: "”", - bdquo: "„", - dagger: "†", - Dagger: "‡", - bull: "•", - hellip: "…", - permil: "‰", - prime: "′", - Prime: "″", - lsaquo: "‹", - rsaquo: "›", - oline: "‾", - euro: "€", - trade: "™", - larr: "←", - uarr: "↑", - rarr: "→", - darr: "↓", - harr: "↔", - crarr: "↵", - lceil: "⌈", - rceil: "⌉", - lfloor: "⌊", - rfloor: "⌋", - loz: "◊", - spades: "♠", - clubs: "♣", - hearts: "♥", - diams: "♦" -}; +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } -},{}],128:[function(_dereq_,module,exports){ -//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] -//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] -//[5] Name ::= NameStartChar (NameChar)* -var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF -var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"); -var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$'); -//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/ -//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',') + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } -//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE -//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE -var S_TAG = 0;//tag name offerring -var S_ATTR = 1;//attr name offerring -var S_ATTR_SPACE=2;//attr name end and space offer -var S_EQ = 3;//=space? -var S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only) -var S_ATTR_END = 5;//attr value end and no space(quot end) -var S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer) -var S_TAG_CLOSE = 7;//closed el + var base = '', array = false, braces = ['{', '}']; -/** - * Creates an error that will not be caught by XMLReader aka the SAX parser. - * - * @param {string} message - * @param {any?} locator Optional, can provide details about the location in the source - * @constructor - */ -function ParseError(message, locator) { - this.message = message - this.locator = locator - if(Error.captureStackTrace) Error.captureStackTrace(this, ParseError); -} -ParseError.prototype = new Error(); -ParseError.prototype.name = ParseError.name + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } -function XMLReader(){ - -} + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } -XMLReader.prototype = { - parse:function(source,defaultNSMap,entityMap){ - var domBuilder = this.domBuilder; - domBuilder.startDocument(); - _copy(defaultNSMap ,defaultNSMap = {}) - parse(source,defaultNSMap,entityMap, - domBuilder,this.errorHandler); - domBuilder.endDocument(); - } -} -function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ - function fixedFromCharCode(code) { - // String.prototype.fromCharCode does not supports - // > 2 bytes unicode chars directly - if (code > 0xffff) { - code -= 0x10000; - var surrogate1 = 0xd800 + (code >> 10) - , surrogate2 = 0xdc00 + (code & 0x3ff); + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } - return String.fromCharCode(surrogate1, surrogate2); - } else { - return String.fromCharCode(code); - } - } - function entityReplacer(a){ - var k = a.slice(1,-1); - if(k in entityMap){ - return entityMap[k]; - }else if(k.charAt(0) === '#'){ - return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x'))) - }else{ - errorHandler.error('entity not found:'+a); - return a; - } - } - function appendText(end){//has some bugs - if(end>start){ - var xt = source.substring(start,end).replace(/&#?\w+;/g,entityReplacer); - locator&&position(start); - domBuilder.characters(xt,0,end-start); - start = end - } - } - function position(p,m){ - while(p>=lineEnd && (m = linePattern.exec(source))){ - lineStart = m.index; - lineEnd = lineStart + m[0].length; - locator.lineNumber++; - //console.log('line++:',locator,startPos,endPos) - } - locator.columnNumber = p-lineStart+1; - } - var lineStart = 0; - var lineEnd = 0; - var linePattern = /.*(?:\r\n?|\n)|.*$/g - var locator = domBuilder.locator; - - var parseStack = [{currentNSMap:defaultNSMapCopy}] - var closeMap = {}; - var start = 0; - while(true){ - try{ - var tagStart = source.indexOf('<',start); - if(tagStart<0){ - if(!source.substr(start).match(/^\s*$/)){ - var doc = domBuilder.doc; - var text = doc.createTextNode(source.substr(start)); - doc.appendChild(text); - domBuilder.currentElement = text; - } - return; - } - if(tagStart>start){ - appendText(tagStart); - } - switch(source.charAt(tagStart+1)){ - case '/': - var end = source.indexOf('>',tagStart+3); - var tagName = source.substring(tagStart+2,end); - var config = parseStack.pop(); - if(end<0){ - - tagName = source.substring(tagStart+2).replace(/[\s<].*/,''); - //console.error('#@@@@@@'+tagName) - errorHandler.error("end tag name: "+tagName+' is not complete:'+config.tagName); - end = tagStart+1+tagName.length; - }else if(tagName.match(/\s - locator&&position(tagStart); - end = parseInstruction(source,tagStart,domBuilder); - break; - case '!':// start){ - start = end; - }else{ - //TODO: 这里有可能sax回退,有位置错误风险 - appendText(Math.max(tagStart,start)+1); - } - } + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); } -function copyLocator(f,t){ - t.lineNumber = f.lineNumber; - t.columnNumber = f.columnNumber; - return t; + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); } -/** - * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack); - * @return end of the elementStartPart(end of elementEndPart for selfClosed el) - */ -function parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){ - /** - * @param {string} qname - * @param {string} value - * @param {number} startIndex - */ - function addAttribute(qname, value, startIndex) { - if (qname in el.attributeNames) errorHandler.fatalError('Attribute ' + qname + ' redefined') - el.addValue(qname, value, startIndex) - } - var attrName; - var value; - var p = ++start; - var s = S_TAG;//status - while(true){ - var c = source.charAt(p); - switch(c){ - case '=': - if(s === S_ATTR){//attrName - attrName = source.slice(start,p); - s = S_EQ; - }else if(s === S_ATTR_SPACE){ - s = S_EQ; - }else{ - //fatalError: equal must after attrName or space after attrName - throw new Error('attribute equal must after attrName'); // No known test case - } - break; - case '\'': - case '"': - if(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE - ){//equal - if(s === S_ATTR){ - errorHandler.warning('attribute value must after "="') - attrName = source.slice(start,p) - } - start = p+1; - p = source.indexOf(c,start) - if(p>0){ - value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); - addAttribute(attrName, value, start-1); - s = S_ATTR_END; - }else{ - //fatalError: no end quot match - throw new Error('attribute value no end \''+c+'\' match'); - } - }else if(s == S_ATTR_NOQUOT_VALUE){ - value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); - //console.log(attrName,value,start,p) - addAttribute(attrName, value, start); - //console.dir(el) - errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!'); - start = p+1; - s = S_ATTR_END - }else{ - //fatalError: no equal before - throw new Error('attribute value must after "="'); // No known test case - } - break; - case '/': - switch(s){ - case S_TAG: - el.setTagName(source.slice(start,p)); - case S_ATTR_END: - case S_TAG_SPACE: - case S_TAG_CLOSE: - s =S_TAG_CLOSE; - el.closed = true; - case S_ATTR_NOQUOT_VALUE: - case S_ATTR: - case S_ATTR_SPACE: - break; - //case S_EQ: - default: - throw new Error("attribute invalid close char('/')") // No known test case - } - break; - case ''://end document - errorHandler.error('unexpected end of input'); - if(s == S_TAG){ - el.setTagName(source.slice(start,p)); - } - return p; - case '>': - switch(s){ - case S_TAG: - el.setTagName(source.slice(start,p)); - case S_ATTR_END: - case S_TAG_SPACE: - case S_TAG_CLOSE: - break;//normal - case S_ATTR_NOQUOT_VALUE://Compatible state - case S_ATTR: - value = source.slice(start,p); - if(value.slice(-1) === '/'){ - el.closed = true; - value = value.slice(0,-1) - } - case S_ATTR_SPACE: - if(s === S_ATTR_SPACE){ - value = attrName; - } - if(s == S_ATTR_NOQUOT_VALUE){ - errorHandler.warning('attribute "'+value+'" missed quot(")!'); - addAttribute(attrName, value.replace(/&#?\w+;/g,entityReplacer), start) - }else{ - if(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !value.match(/^(?:disabled|checked|selected)$/i)){ - errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!') - } - addAttribute(value, value, start) - } - break; - case S_EQ: - throw new Error('attribute value missed!!'); - } -// console.log(tagName,tagNamePattern,tagNamePattern.test(tagName)) - return p; - /*xml space '\x20' | #x9 | #xD | #xA; */ - case '\u0080': - c = ' '; - default: - if(c<= ' '){//space - switch(s){ - case S_TAG: - el.setTagName(source.slice(start,p));//tagName - s = S_TAG_SPACE; - break; - case S_ATTR: - attrName = source.slice(start,p) - s = S_ATTR_SPACE; - break; - case S_ATTR_NOQUOT_VALUE: - var value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); - errorHandler.warning('attribute "'+value+'" missed quot(")!!'); - addAttribute(attrName, value, start) - case S_ATTR_END: - s = S_TAG_SPACE; - break; - //case S_TAG_SPACE: - //case S_EQ: - //case S_ATTR_SPACE: - // void();break; - //case S_TAG_CLOSE: - //ignore warning - } - }else{//not space -//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE -//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE - switch(s){ - //case S_TAG:void();break; - //case S_ATTR:void();break; - //case S_ATTR_NOQUOT_VALUE:void();break; - case S_ATTR_SPACE: - var tagName = el.tagName; - if(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !attrName.match(/^(?:disabled|checked|selected)$/i)){ - errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead2!!') - } - addAttribute(attrName, attrName, start); - start = p; - s = S_ATTR; - break; - case S_ATTR_END: - errorHandler.warning('attribute space is required"'+attrName+'"!!') - case S_TAG_SPACE: - s = S_ATTR; - start = p; - break; - case S_EQ: - s = S_ATTR_NOQUOT_VALUE; - start = p; - break; - case S_TAG_CLOSE: - throw new Error("elements closed character '/' and '>' must be connected to"); - } - } - }//end outer switch - //console.log('p++',p) - p++; - } +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; } -/** - * @return true if has new namespace define - */ -function appendElement(el,domBuilder,currentNSMap){ - var tagName = el.tagName; - var localNSMap = null; - //var currentNSMap = parseStack[parseStack.length-1].currentNSMap; - var i = el.length; - while(i--){ - var a = el[i]; - var qName = a.qName; - var value = a.value; - var nsp = qName.indexOf(':'); - if(nsp>0){ - var prefix = a.prefix = qName.slice(0,nsp); - var localName = qName.slice(nsp+1); - var nsPrefix = prefix === 'xmlns' && localName - }else{ - localName = qName; - prefix = null - nsPrefix = qName === 'xmlns' && '' - } - //can not set prefix,because prefix !== '' - a.localName = localName ; - //prefix == null for no ns prefix attribute - if(nsPrefix !== false){//hack!! - if(localNSMap == null){ - localNSMap = {} - //console.log(currentNSMap,0) - _copy(currentNSMap,currentNSMap={}) - //console.log(currentNSMap,1) - } - currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value; - a.uri = 'http://www.w3.org/2000/xmlns/' - domBuilder.startPrefixMapping(nsPrefix, value) - } - } - var i = el.length; - while(i--){ - a = el[i]; - var prefix = a.prefix; - if(prefix){//no prefix attribute has no namespace - if(prefix === 'xml'){ - a.uri = 'http://www.w3.org/XML/1998/namespace'; - }if(prefix !== 'xmlns'){ - a.uri = currentNSMap[prefix || ''] - - //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)} - } - } - } - var nsp = tagName.indexOf(':'); - if(nsp>0){ - prefix = el.prefix = tagName.slice(0,nsp); - localName = el.localName = tagName.slice(nsp+1); - }else{ - prefix = null;//important!! - localName = el.localName = tagName; - } - //no prefix element has default namespace - var ns = el.uri = currentNSMap[prefix || '']; - domBuilder.startElement(ns,localName,tagName,el); - //endPrefixMapping and startPrefixMapping have not any help for dom builder - //localNSMap = null - if(el.closed){ - domBuilder.endElement(ns,localName,tagName); - if(localNSMap){ - for(prefix in localNSMap){ - domBuilder.endPrefixMapping(prefix) - } - } - }else{ - el.currentNSMap = currentNSMap; - el.localNSMap = localNSMap; - //parseStack.push(el); - return true; - } + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; } -function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){ - if(/^(?:script|textarea)$/i.test(tagName)){ - var elEndStart = source.indexOf('',elStartEnd); - var text = source.substring(elStartEnd+1,elEndStart); - if(/[&<]/.test(text)){ - if(/^script$/i.test(tagName)){ - //if(!/\]\]>/.test(text)){ - //lexHandler.startCDATA(); - domBuilder.characters(text,0,text.length); - //lexHandler.endCDATA(); - return elEndStart; - //} - }//}else{//text area - text = text.replace(/&#?\w+;/g,entityReplacer); - domBuilder.characters(text,0,text.length); - return elEndStart; - //} - - } - } - return elStartEnd+1; + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); } -function fixSelfClosed(source,elStartEnd,tagName,closeMap){ - //if(tagName in closeMap){ - var pos = closeMap[tagName]; - if(pos == null){ - //console.log(tagName) - pos = source.lastIndexOf('') - if(pos',start+4); - //append comment source.substring(4,end)//' + this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + } + declaration(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + ''; + r += this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + } -function split(source,start){ - var match; - var buf = []; - var reg = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g; - reg.lastIndex = start; - reg.exec(source);//skip < - while(match = reg.exec(source)){ - buf.push(match); - if(match[1])return buf; - } -} + docType(node, options, level) { + var child, i, len1, r, ref; + level || (level = 0); + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level); + r += ' 0) { + r += ' ['; + r += this.endline(node, options, level); + options.state = WriterState.InsideTag; + ref = node.children; + for (i = 0, len1 = ref.length; i < len1; i++) { + child = ref[i]; + r += this.writeChildNode(child, options, level + 1); + } + options.state = WriterState.CloseTag; + r += ']'; + } + // close tag + options.state = WriterState.CloseTag; + r += options.spaceBeforeSlash + '>'; + r += this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + } -exports.XMLReader = XMLReader; -exports.ParseError = ParseError; + element(node, options, level) { + var att, attLen, child, childNodeCount, firstChildNode, i, j, len, len1, len2, name, prettySuppressed, r, ratt, ref, ref1, ref2, ref3, rline; + level || (level = 0); + prettySuppressed = false; + // open tag + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '<' + node.name; + // attributes + if (options.pretty && options.width > 0) { + len = r.length; + ref = node.attribs; + for (name in ref) { + if (!hasProp.call(ref, name)) continue; + att = ref[name]; + ratt = this.attribute(att, options, level); + attLen = ratt.length; + if (len + attLen > options.width) { + rline = this.indent(node, options, level + 1) + ratt; + r += this.endline(node, options, level) + rline; + len = rline.length; + } else { + rline = ' ' + ratt; + r += rline; + len += rline.length; + } + } + } else { + ref1 = node.attribs; + for (name in ref1) { + if (!hasProp.call(ref1, name)) continue; + att = ref1[name]; + r += this.attribute(att, options, level); + } + } + childNodeCount = node.children.length; + firstChildNode = childNodeCount === 0 ? null : node.children[0]; + if (childNodeCount === 0 || node.children.every(function(e) { + return (e.type === NodeType.Text || e.type === NodeType.Raw || e.type === NodeType.CData) && e.value === ''; + })) { + // empty element + if (options.allowEmpty) { + r += '>'; + options.state = WriterState.CloseTag; + r += '' + this.endline(node, options, level); + } else { + options.state = WriterState.CloseTag; + r += options.spaceBeforeSlash + '/>' + this.endline(node, options, level); + } + } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw || firstChildNode.type === NodeType.CData) && (firstChildNode.value != null)) { + // do not indent text-only nodes + r += '>'; + options.state = WriterState.InsideTag; + options.suppressPrettyCount++; + prettySuppressed = true; + r += this.writeChildNode(firstChildNode, options, level + 1); + options.suppressPrettyCount--; + prettySuppressed = false; + options.state = WriterState.CloseTag; + r += '' + this.endline(node, options, level); + } else { + // if ANY are a text node, then suppress pretty now + if (options.dontPrettyTextNodes) { + ref2 = node.children; + for (i = 0, len1 = ref2.length; i < len1; i++) { + child = ref2[i]; + if ((child.type === NodeType.Text || child.type === NodeType.Raw || child.type === NodeType.CData) && (child.value != null)) { + options.suppressPrettyCount++; + prettySuppressed = true; + break; + } + } + } + // close the opening tag, after dealing with newline + r += '>' + this.endline(node, options, level); + options.state = WriterState.InsideTag; + ref3 = node.children; + // inner tags + for (j = 0, len2 = ref3.length; j < len2; j++) { + child = ref3[j]; + r += this.writeChildNode(child, options, level + 1); + } + // close tag + options.state = WriterState.CloseTag; + r += this.indent(node, options, level) + ''; + if (prettySuppressed) { + options.suppressPrettyCount--; + } + r += this.endline(node, options, level); + options.state = WriterState.None; + } + this.closeNode(node, options, level); + return r; + } + + writeChildNode(node, options, level) { + switch (node.type) { + case NodeType.CData: + return this.cdata(node, options, level); + case NodeType.Comment: + return this.comment(node, options, level); + case NodeType.Element: + return this.element(node, options, level); + case NodeType.Raw: + return this.raw(node, options, level); + case NodeType.Text: + return this.text(node, options, level); + case NodeType.ProcessingInstruction: + return this.processingInstruction(node, options, level); + case NodeType.Dummy: + return ''; + case NodeType.Declaration: + return this.declaration(node, options, level); + case NodeType.DocType: + return this.docType(node, options, level); + case NodeType.AttributeDeclaration: + return this.dtdAttList(node, options, level); + case NodeType.ElementDeclaration: + return this.dtdElement(node, options, level); + case NodeType.EntityDeclaration: + return this.dtdEntity(node, options, level); + case NodeType.NotationDeclaration: + return this.dtdNotation(node, options, level); + default: + throw new Error("Unknown XML node type: " + node.constructor.name); + } + } + + processingInstruction(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + ''; + r += this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + } + + raw(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level); + options.state = WriterState.InsideTag; + r += node.value; + options.state = WriterState.CloseTag; + r += this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + } + + text(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level); + options.state = WriterState.InsideTag; + r += node.value; + options.state = WriterState.CloseTag; + r += this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + } + + dtdAttList(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '' + this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + } + + dtdElement(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '' + this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + } + + dtdEntity(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '' + this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + } + + dtdNotation(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '' + this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + } + + openNode(node, options, level) {} + + closeNode(node, options, level) {} + + openAttribute(att, options, level) {} + + closeAttribute(att, options, level) {} + + }; + +}).call(this); + +},{"./NodeType":124,"./Utility":125,"./WriterState":126,"./XMLCData":128,"./XMLComment":130,"./XMLDTDAttList":135,"./XMLDTDElement":136,"./XMLDTDEntity":137,"./XMLDTDNotation":138,"./XMLDeclaration":139,"./XMLDocType":140,"./XMLDummy":143,"./XMLElement":144,"./XMLProcessingInstruction":148,"./XMLRaw":149,"./XMLText":153}],155:[function(_dereq_,module,exports){ +// Generated by CoffeeScript 2.4.1 +(function() { + var NodeType, WriterState, XMLDOMImplementation, XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction; + + ({assign, isFunction} = _dereq_('./Utility')); + + XMLDOMImplementation = _dereq_('./XMLDOMImplementation'); + + XMLDocument = _dereq_('./XMLDocument'); + + XMLDocumentCB = _dereq_('./XMLDocumentCB'); + + XMLStringWriter = _dereq_('./XMLStringWriter'); + + XMLStreamWriter = _dereq_('./XMLStreamWriter'); + + NodeType = _dereq_('./NodeType'); + + WriterState = _dereq_('./WriterState'); + + // Creates a new document and returns the root node for + // chain-building the document tree + + // `name` name of the root element + + // `xmldec.version` A version number string, e.g. 1.0 + // `xmldec.encoding` Encoding declaration, e.g. UTF-8 + // `xmldec.standalone` standalone document declaration: true or false + + // `doctype.pubID` public identifier of the external subset + // `doctype.sysID` system identifier of the external subset + + // `options.headless` whether XML declaration and doctype will be included: + // true or false + // `options.keepNullNodes` whether nodes with null values will be kept + // or ignored: true or false + // `options.keepNullAttributes` whether attributes with null values will be + // kept or ignored: true or false + // `options.ignoreDecorators` whether decorator strings will be ignored when + // converting JS objects: true or false + // `options.separateArrayItems` whether array items are created as separate + // nodes when passed as an object value: true or false + // `options.noDoubleEncoding` whether existing html entities are encoded: + // true or false + // `options.stringify` a set of functions to use for converting values to + // strings + // `options.writer` the default XML writer to use for converting nodes to + // string. If the default writer is not set, the built-in XMLStringWriter + // will be used instead. + module.exports.create = function(name, xmldec, doctype, options) { + var doc, root; + if (name == null) { + throw new Error("Root element needs a name."); + } + options = assign({}, xmldec, doctype, options); + // create the document node + doc = new XMLDocument(options); + // add the root node + root = doc.element(name); + // prolog + if (!options.headless) { + doc.declaration(options); + if ((options.pubID != null) || (options.sysID != null)) { + doc.dtd(options); + } + } + return root; + }; + + // Creates a new document and returns the document node for + // chain-building the document tree + + // `options.keepNullNodes` whether nodes with null values will be kept + // or ignored: true or false + // `options.keepNullAttributes` whether attributes with null values will be + // kept or ignored: true or false + // `options.ignoreDecorators` whether decorator strings will be ignored when + // converting JS objects: true or false + // `options.separateArrayItems` whether array items are created as separate + // nodes when passed as an object value: true or false + // `options.noDoubleEncoding` whether existing html entities are encoded: + // true or false + // `options.stringify` a set of functions to use for converting values to + // strings + // `options.writer` the default XML writer to use for converting nodes to + // string. If the default writer is not set, the built-in XMLStringWriter + // will be used instead. + + // `onData` the function to be called when a new chunk of XML is output. The + // string containing the XML chunk is passed to `onData` as its single + // argument. + // `onEnd` the function to be called when the XML document is completed with + // `end`. `onEnd` does not receive any arguments. + module.exports.begin = function(options, onData, onEnd) { + if (isFunction(options)) { + [onData, onEnd] = [options, onData]; + options = {}; + } + if (onData) { + return new XMLDocumentCB(options, onData, onEnd); + } else { + return new XMLDocument(options); + } + }; + + module.exports.stringWriter = function(options) { + return new XMLStringWriter(options); + }; + + module.exports.streamWriter = function(stream, options) { + return new XMLStreamWriter(stream, options); + }; + + module.exports.implementation = new XMLDOMImplementation(); + + module.exports.nodeType = NodeType; + + module.exports.writerState = WriterState; + +}).call(this); -},{}]},{},[2])(2) +},{"./NodeType":124,"./Utility":125,"./WriterState":126,"./XMLDOMImplementation":133,"./XMLDocument":141,"./XMLDocumentCB":142,"./XMLStreamWriter":150,"./XMLStringWriter":151}]},{},[2])(2) }); //# sourceMappingURL=app-info-parser.js.map diff --git a/dist/app-info-parser.js.map b/dist/app-info-parser.js.map index 0e22815..fa27ebb 100644 --- a/dist/app-info-parser.js.map +++ b/dist/app-info-parser.js.map @@ -10,10 +10,13 @@ "lib/xml-parser/binary.js", "lib/xml-parser/manifest.js", "lib/zip.js", + "node_modules/@xmldom/xmldom/lib/conventions.js", + "node_modules/@xmldom/xmldom/lib/dom-parser.js", + "node_modules/@xmldom/xmldom/lib/dom.js", + "node_modules/@xmldom/xmldom/lib/entities.js", + "node_modules/@xmldom/xmldom/lib/index.js", + "node_modules/@xmldom/xmldom/lib/sax.js", "node_modules/assert/assert.js", - "node_modules/assert/node_modules/inherits/inherits_browser.js", - "node_modules/assert/node_modules/util/support/isBufferBrowser.js", - "node_modules/assert/node_modules/util/util.js", "node_modules/base64-js/index.js", "node_modules/big-integer/BigInteger.js", "node_modules/bplist-parser/bplistParser.js", @@ -23,7 +26,8 @@ "node_modules/browserify/node_modules/buffer/index.js", "node_modules/bufferpack/bufferpack.js", "node_modules/bytebuffer/dist/bytebuffer.js", - "node_modules/bytebuffer/node_modules/long/dist/long.js", + "node_modules/call-bind/callBound.js", + "node_modules/call-bind/index.js", "node_modules/cgbi-to-png/index.js", "node_modules/core-util-is/lib/util.js", "node_modules/crc/lib/crc1.js", @@ -51,7 +55,17 @@ "node_modules/crc/lib/es6/create_buffer.js", "node_modules/crc/lib/es6/define_crc.js", "node_modules/crc/lib/index.js", + "node_modules/define-data-property/index.js", "node_modules/events/events.js", + "node_modules/function-bind/implementation.js", + "node_modules/function-bind/index.js", + "node_modules/get-intrinsic/index.js", + "node_modules/gopd/index.js", + "node_modules/has-property-descriptors/index.js", + "node_modules/has-proto/index.js", + "node_modules/has-symbols/index.js", + "node_modules/has-symbols/shams.js", + "node_modules/hasown/index.js", "node_modules/ieee754/index.js", "node_modules/inherits/inherits_browser.js", "node_modules/is-buffer/index.js", @@ -61,7 +75,12 @@ "node_modules/isomorphic-unzip/lib/browser/zip.js", "node_modules/isomorphic-unzip/lib/utils.js", "node_modules/isomorphic-unzip/zip-browser.js", - "node_modules/object-assign/index.js", + "node_modules/long/dist/long.js", + "node_modules/object-keys/implementation.js", + "node_modules/object-keys/index.js", + "node_modules/object-keys/isArguments.js", + "node_modules/object.assign/implementation.js", + "node_modules/object.assign/polyfill.js", "node_modules/pako/lib/utils/common.js", "node_modules/pako/lib/zlib/adler32.js", "node_modules/pako/lib/zlib/constants.js", @@ -94,17 +113,28 @@ "node_modules/readable-stream/readable-browser.js", "node_modules/readable-stream/transform.js", "node_modules/readable-stream/writable-browser.js", + "node_modules/set-function-length/index.js", "node_modules/stream-browserify/index.js", "node_modules/stream-to-buffer/index.js", "node_modules/stream-to/index.js", "node_modules/streamifier/lib/index.js", "node_modules/timers-browserify/main.js", "node_modules/util-deprecate/browser.js", + "node_modules/util/node_modules/inherits/inherits_browser.js", + "node_modules/util/support/isBufferBrowser.js", "node_modules/util/util.js", + "node_modules/xmlbuilder/lib/DocumentPosition.js", + "node_modules/xmlbuilder/lib/NodeType.js", "node_modules/xmlbuilder/lib/Utility.js", + "node_modules/xmlbuilder/lib/WriterState.js", "node_modules/xmlbuilder/lib/XMLAttribute.js", "node_modules/xmlbuilder/lib/XMLCData.js", + "node_modules/xmlbuilder/lib/XMLCharacterData.js", "node_modules/xmlbuilder/lib/XMLComment.js", + "node_modules/xmlbuilder/lib/XMLDOMConfiguration.js", + "node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js", + "node_modules/xmlbuilder/lib/XMLDOMImplementation.js", + "node_modules/xmlbuilder/lib/XMLDOMStringList.js", "node_modules/xmlbuilder/lib/XMLDTDAttList.js", "node_modules/xmlbuilder/lib/XMLDTDElement.js", "node_modules/xmlbuilder/lib/XMLDTDEntity.js", @@ -113,8 +143,11 @@ "node_modules/xmlbuilder/lib/XMLDocType.js", "node_modules/xmlbuilder/lib/XMLDocument.js", "node_modules/xmlbuilder/lib/XMLDocumentCB.js", + "node_modules/xmlbuilder/lib/XMLDummy.js", "node_modules/xmlbuilder/lib/XMLElement.js", + "node_modules/xmlbuilder/lib/XMLNamedNodeMap.js", "node_modules/xmlbuilder/lib/XMLNode.js", + "node_modules/xmlbuilder/lib/XMLNodeList.js", "node_modules/xmlbuilder/lib/XMLProcessingInstruction.js", "node_modules/xmlbuilder/lib/XMLRaw.js", "node_modules/xmlbuilder/lib/XMLStreamWriter.js", @@ -122,14 +155,10 @@ "node_modules/xmlbuilder/lib/XMLStringifier.js", "node_modules/xmlbuilder/lib/XMLText.js", "node_modules/xmlbuilder/lib/XMLWriterBase.js", - "node_modules/xmlbuilder/lib/index.js", - "node_modules/xmldom/lib/dom-parser.js", - "node_modules/xmldom/lib/dom.js", - "node_modules/xmldom/lib/entities.js", - "node_modules/xmldom/lib/sax.js" + "node_modules/xmlbuilder/lib/index.js" ], "names": [], - "mappings": "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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC76CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3WA;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACxZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACjvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACvSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClqHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3GA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3gBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACp+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACl1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACphDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC9qBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvSA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;;ACDA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/HA;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA", + "mappings": "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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtnEA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC76CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3WA;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACxZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACjvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACvSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClqHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3gBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACp+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACl1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACphDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC5qBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvSA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;;ACDA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/HA;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1oBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACv+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACreA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ @@ -138,16 +167,19 @@ "const ApkParser = require('./apk')\nconst IpaParser = require('./ipa')\nconst supportFileTypes = ['ipa', 'apk']\n\nclass AppInfoParser {\n /**\n * parser for parsing .ipa or .apk file\n * @param {String | File | Blob} file // file's path in Node, instance of File or Blob in Browser\n */\n constructor (file) {\n if (!file) {\n throw new Error('Param miss: file(file\\'s path in Node, instance of File or Blob in browser).')\n }\n const splits = (file.name || file).split('.')\n const fileType = splits[splits.length - 1].toLowerCase()\n if (!supportFileTypes.includes(fileType)) {\n throw new Error('Unsupported file type, only support .ipa or .apk file.')\n }\n this.file = file\n\n switch (fileType) {\n case 'ipa':\n this.parser = new IpaParser(this.file)\n break\n case 'apk':\n this.parser = new ApkParser(this.file)\n break\n }\n }\n parse () {\n return this.parser.parse()\n }\n}\n\nmodule.exports = AppInfoParser\n", "const parsePlist = require('plist').parse\nconst parseBplist = require('bplist-parser').parseBuffer\nconst cgbiToPng = require('cgbi-to-png')\n\nconst Zip = require('./zip')\nconst { findIpaIconPath, getBase64FromBuffer, isBrowser } = require('./utils')\n\nconst PlistName = new RegExp('payload/[^/]+?.app/info.plist$', 'i')\nconst ProvisionName = /payload\\/.+?\\.app\\/embedded.mobileprovision/\n\nclass IpaParser extends Zip {\n /**\n * parser for parsing .ipa file\n * @param {String | File | Blob} file // file's path in Node, instance of File or Blob in Browser\n */\n constructor (file) {\n super(file)\n if (!(this instanceof IpaParser)) {\n return new IpaParser(file)\n }\n }\n parse () {\n return new Promise((resolve, reject) => {\n this.getEntries([PlistName, ProvisionName]).then(buffers => {\n if (!buffers[PlistName]) {\n throw new Error('Info.plist can\\'t be found.')\n }\n const plistInfo = this._parsePlist(buffers[PlistName])\n // parse mobile provision\n const provisionInfo = this._parseProvision(buffers[ProvisionName])\n plistInfo.mobileProvision = provisionInfo\n\n // find icon path and parse icon\n const iconRegex = new RegExp(findIpaIconPath(plistInfo).toLowerCase())\n this.getEntry(iconRegex).then(iconBuffer => {\n try {\n // In general, the ipa file's icon has been specially processed, should be converted\n plistInfo.icon = iconBuffer ? getBase64FromBuffer(cgbiToPng.revert(iconBuffer)) : null\n } catch (err) {\n if (isBrowser()) {\n // Normal conversion in other cases\n plistInfo.icon = iconBuffer ? getBase64FromBuffer(window.btoa(String.fromCharCode(...iconBuffer))) : null\n } else {\n plistInfo.icon = null\n console.warn('[Warning] failed to parse icon: ', err)\n }\n }\n resolve(plistInfo)\n }).catch(e => {\n reject(e)\n })\n }).catch(e => {\n reject(e)\n })\n })\n }\n /**\n * Parse plist\n * @param {Buffer} buffer // plist file's buffer\n */\n _parsePlist (buffer) {\n let result\n const bufferType = buffer[0]\n if (bufferType === 60 || bufferType === '<' || bufferType === 239) {\n result = parsePlist(buffer.toString())\n } else if (bufferType === 98) {\n result = parseBplist(buffer)[0]\n } else {\n throw new Error('Unknown plist buffer type.')\n }\n return result\n }\n /**\n * parse provision\n * @param {Buffer} buffer // provision file's buffer\n */\n _parseProvision (buffer) {\n let info = {}\n if (buffer) {\n let content = buffer.toString('utf-8')\n const firstIndex = content.indexOf('')\n content = content.slice(firstIndex, endIndex + 8)\n if (content) {\n info = parsePlist(content)\n }\n }\n return info\n }\n}\n\nmodule.exports = IpaParser\n", "/**\n * Code translated from a C# project https://github.com/hylander0/Iteedee.ApkReader/blob/master/Iteedee.ApkReader/ApkResourceFinder.cs\n *\n * Decode binary file `resources.arsc` from a .apk file to a JavaScript Object.\n */\n\nvar ByteBuffer = require(\"bytebuffer\");\n\nvar DEBUG = false;\n\nvar RES_STRING_POOL_TYPE = 0x0001;\nvar RES_TABLE_TYPE = 0x0002;\nvar RES_TABLE_PACKAGE_TYPE = 0x0200;\nvar RES_TABLE_TYPE_TYPE = 0x0201;\nvar RES_TABLE_TYPE_SPEC_TYPE = 0x0202;\n\n// The 'data' holds a ResTable_ref, a reference to another resource\n// table entry.\nvar TYPE_REFERENCE = 0x01;\n// The 'data' holds an index into the containing resource table's\n// global value string pool.\nvar TYPE_STRING = 0x03;\n\nfunction ResourceFinder() {\n this.valueStringPool = null;\n this.typeStringPool = null;\n this.keyStringPool = null;\n\n this.package_id = 0;\n\n this.responseMap = {};\n this.entryMap = {};\n}\n\n/**\n * Same to C# BinaryReader.readBytes\n *\n * @param bb ByteBuffer\n * @param len length\n * @returns {Buffer}\n */\nResourceFinder.readBytes = function(bb, len) {\n var uint8Array = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n uint8Array[i] = bb.readUint8();\n }\n\n return ByteBuffer.wrap(uint8Array, \"binary\", true);\n};\n\n//\n/**\n *\n * @param {ByteBuffer} bb\n * @return {Map>}\n */\nResourceFinder.prototype.processResourceTable = function(resourceBuffer) {\n const bb = ByteBuffer.wrap(resourceBuffer, \"binary\", true);\n\n // Resource table structure\n var type = bb.readShort(),\n headerSize = bb.readShort(),\n size = bb.readInt(),\n packageCount = bb.readInt(),\n buffer,\n bb2;\n if (type != RES_TABLE_TYPE) {\n throw new Error(\"No RES_TABLE_TYPE found!\");\n }\n if (size != bb.limit) {\n throw new Error(\"The buffer size not matches to the resource table size.\");\n }\n bb.offset = headerSize;\n\n var realStringPoolCount = 0,\n realPackageCount = 0;\n\n while (true) {\n var pos, t, hs, s;\n try {\n pos = bb.offset;\n t = bb.readShort();\n hs = bb.readShort();\n s = bb.readInt();\n } catch (e) {\n break;\n }\n if (t == RES_STRING_POOL_TYPE) {\n // Process the string pool\n if (realStringPoolCount == 0) {\n // Only the first string pool is processed.\n if (DEBUG) {\n console.log(\"Processing the string pool ...\");\n }\n\n buffer = new ByteBuffer(s);\n bb.offset = pos;\n bb.prependTo(buffer);\n\n bb2 = ByteBuffer.wrap(buffer, \"binary\", true);\n\n bb2.LE();\n this.valueStringPool = this.processStringPool(bb2);\n }\n realStringPoolCount++;\n } else if (t == RES_TABLE_PACKAGE_TYPE) {\n // Process the package\n if (DEBUG) {\n console.log(\"Processing the package \" + realPackageCount + \" ...\");\n }\n\n buffer = new ByteBuffer(s);\n bb.offset = pos;\n bb.prependTo(buffer);\n\n bb2 = ByteBuffer.wrap(buffer, \"binary\", true);\n bb2.LE();\n this.processPackage(bb2);\n\n realPackageCount++;\n } else {\n throw new Error(\"Unsupported type\");\n }\n bb.offset = pos + s;\n if (!bb.remaining()) break;\n }\n\n if (realStringPoolCount != 1) {\n throw new Error(\"More than 1 string pool found!\");\n }\n if (realPackageCount != packageCount) {\n throw new Error(\"Real package count not equals the declared count.\");\n }\n\n return this.responseMap;\n};\n\n/**\n *\n * @param {ByteBuffer} bb\n */\nResourceFinder.prototype.processPackage = function(bb) {\n // Package structure\n var type = bb.readShort(),\n headerSize = bb.readShort(),\n size = bb.readInt(),\n id = bb.readInt();\n\n this.package_id = id;\n\n for (var i = 0; i < 256; ++i) {\n bb.readUint8();\n }\n\n var typeStrings = bb.readInt(),\n lastPublicType = bb.readInt(),\n keyStrings = bb.readInt(),\n lastPublicKey = bb.readInt();\n\n if (typeStrings != headerSize) {\n throw new Error(\n \"TypeStrings must immediately following the package structure header.\"\n );\n }\n\n if (DEBUG) {\n console.log(\"Type strings:\");\n }\n\n var lastPosition = bb.offset;\n bb.offset = typeStrings;\n var bbTypeStrings = ResourceFinder.readBytes(bb, bb.limit - bb.offset);\n bb.offset = lastPosition;\n this.typeStringPool = this.processStringPool(bbTypeStrings);\n\n // Key strings\n if (DEBUG) {\n console.log(\"Key strings:\");\n }\n\n bb.offset = keyStrings;\n var key_type = bb.readShort(),\n key_headerSize = bb.readShort(),\n key_size = bb.readInt();\n\n lastPosition = bb.offset;\n bb.offset = keyStrings;\n var bbKeyStrings = ResourceFinder.readBytes(bb, bb.limit - bb.offset);\n bb.offset = lastPosition;\n this.keyStringPool = this.processStringPool(bbKeyStrings);\n\n // Iterate through all chunks\n var typeSpecCount = 0;\n var typeCount = 0;\n\n bb.offset = keyStrings + key_size;\n\n var bb2;\n\n while (true) {\n var pos = bb.offset;\n try {\n var t = bb.readShort();\n var hs = bb.readShort();\n var s = bb.readInt();\n } catch (e) {\n break;\n }\n\n if (t == RES_TABLE_TYPE_SPEC_TYPE) {\n bb.offset = pos;\n bb2 = ResourceFinder.readBytes(bb, s);\n this.processTypeSpec(bb2);\n\n typeSpecCount++;\n } else if (t == RES_TABLE_TYPE_TYPE) {\n bb.offset = pos;\n bb2 = ResourceFinder.readBytes(bb, s);\n this.processType(bb2);\n\n typeCount++;\n }\n\n if (s == 0) {\n break;\n }\n\n bb.offset = pos + s;\n\n if (!bb.remaining()) {\n break;\n }\n }\n};\n\n/**\n *\n * @param {ByteBuffer} bb\n */\nResourceFinder.prototype.processType = function(bb) {\n var type = bb.readShort(),\n headerSize = bb.readShort(),\n size = bb.readInt(),\n id = bb.readByte(),\n res0 = bb.readByte(),\n res1 = bb.readShort(),\n entryCount = bb.readInt(),\n entriesStart = bb.readInt();\n\n var refKeys = {};\n\n var config_size = bb.readInt();\n\n // Skip the config data\n bb.offset = headerSize;\n\n if (headerSize + entryCount * 4 != entriesStart) {\n throw new Error(\"HeaderSize, entryCount and entriesStart are not valid.\");\n }\n\n // Start to get entry indices\n var entryIndices = new Array(entryCount);\n for (var i = 0; i < entryCount; ++i) {\n entryIndices[i] = bb.readInt();\n }\n\n // Get entries\n for (var i = 0; i < entryCount; ++i) {\n if (entryIndices[i] == -1) continue;\n\n var resource_id = (this.package_id << 24) | (id << 16) | i;\n\n var pos = bb.offset,\n entry_size,\n entry_flag,\n entry_key,\n value_size,\n value_res0,\n value_dataType,\n value_data;\n try {\n entry_size = bb.readShort()\n entry_flag = bb.readShort()\n entry_key = bb.readInt()\n } catch (e) {\n break\n }\n\n // Get the value (simple) or map (complex)\n\n var FLAG_COMPLEX = 0x0001;\n if ((entry_flag & FLAG_COMPLEX) == 0) {\n // Simple case\n value_size = bb.readShort();\n value_res0 = bb.readByte();\n value_dataType = bb.readByte();\n value_data = bb.readInt();\n\n var idStr = Number(resource_id).toString(16);\n var keyStr = this.keyStringPool[entry_key];\n\n var data = null;\n\n if (DEBUG) {\n console.log(\n \"Entry 0x\" + idStr + \", key: \" + keyStr + \", simple value type: \"\n );\n }\n\n var key = parseInt(idStr, 16);\n\n var entryArr = this.entryMap[key];\n if (entryArr == null) {\n entryArr = [];\n }\n entryArr.push(keyStr);\n\n this.entryMap[key] = entryArr;\n\n if (value_dataType == TYPE_STRING) {\n data = this.valueStringPool[value_data];\n\n if (DEBUG) {\n console.log(\", data: \" + this.valueStringPool[value_data] + \"\");\n }\n } else if (value_dataType == TYPE_REFERENCE) {\n var hexIndex = Number(value_data).toString(16);\n\n refKeys[idStr] = value_data;\n } else {\n data = \"\" + value_data;\n if (DEBUG) {\n console.log(\", data: \" + value_data + \"\");\n }\n }\n\n this.putIntoMap(\"@\" + idStr, data);\n } else {\n // Complex case\n var entry_parent = bb.readInt();\n var entry_count = bb.readInt();\n\n for (var j = 0; j < entry_count; ++j) {\n var ref_name = bb.readInt();\n value_size = bb.readShort();\n value_res0 = bb.readByte();\n value_dataType = bb.readByte();\n value_data = bb.readInt();\n }\n\n if (DEBUG) {\n console.log(\n \"Entry 0x\" +\n Number(resource_id).toString(16) +\n \", key: \" +\n this.keyStringPool[entry_key] +\n \", complex value, not printed.\"\n );\n }\n }\n }\n\n for (var refK in refKeys) {\n var values = this.responseMap[\n \"@\" +\n Number(refKeys[refK])\n .toString(16)\n .toUpperCase()\n ];\n if (values != null && Object.keys(values).length < 1000) {\n for (var value in values) {\n this.putIntoMap(\"@\" + refK, values[value]);\n }\n }\n }\n};\n\n/**\n *\n * @param {ByteBuffer} bb\n * @return {Array}\n */\nResourceFinder.prototype.processStringPool = function(bb) {\n // String pool structure\n //\n var type = bb.readShort(),\n headerSize = bb.readShort(),\n size = bb.readInt(),\n stringCount = bb.readInt(),\n styleCount = bb.readInt(),\n flags = bb.readInt(),\n stringsStart = bb.readInt(),\n stylesStart = bb.readInt(),\n u16len,\n buffer;\n\n var isUTF_8 = (flags & 256) != 0;\n\n var offsets = new Array(stringCount);\n for (var i = 0; i < stringCount; ++i) {\n offsets[i] = bb.readInt();\n }\n\n var strings = new Array(stringCount);\n\n for (var i = 0; i < stringCount; ++i) {\n var pos = stringsStart + offsets[i];\n bb.offset = pos;\n\n strings[i] = \"\";\n\n if (isUTF_8) {\n u16len = bb.readUint8();\n\n if ((u16len & 0x80) != 0) {\n u16len = ((u16len & 0x7f) << 8) + bb.readUint8();\n }\n\n var u8len = bb.readUint8();\n if ((u8len & 0x80) != 0) {\n u8len = ((u8len & 0x7f) << 8) + bb.readUint8();\n }\n\n if (u8len > 0) {\n buffer = ResourceFinder.readBytes(bb, u8len);\n try {\n strings[i] = ByteBuffer.wrap(buffer, \"utf8\", true).toString(\"utf8\");\n } catch (e) {\n if (DEBUG) {\n console.error(e);\n console.log(\"Error when turning buffer to utf-8 string.\");\n }\n }\n } else {\n strings[i] = \"\";\n }\n } else {\n u16len = bb.readUint16();\n if ((u16len & 0x8000) != 0) {\n // larger than 32768\n u16len = ((u16len & 0x7fff) << 16) + bb.readUint16();\n }\n\n if (u16len > 0) {\n var len = u16len * 2;\n buffer = ResourceFinder.readBytes(bb, len);\n try {\n strings[i] = ByteBuffer.wrap(buffer, \"utf8\", true).toString(\"utf8\");\n } catch (e) {\n if (DEBUG) {\n console.error(e);\n console.log(\"Error when turning buffer to utf-8 string.\");\n }\n }\n }\n }\n\n if (DEBUG) {\n console.log(\"Parsed value: {0}\", strings[i]);\n }\n }\n\n return strings;\n};\n\n/**\n *\n * @param {ByteBuffer} bb\n */\nResourceFinder.prototype.processTypeSpec = function(bb) {\n var type = bb.readShort(),\n headerSize = bb.readShort(),\n size = bb.readInt(),\n id = bb.readByte(),\n res0 = bb.readByte(),\n res1 = bb.readShort(),\n entryCount = bb.readInt();\n\n if (DEBUG) {\n console.log(\"Processing type spec \" + this.typeStringPool[id - 1] + \"...\");\n }\n\n var flags = new Array(entryCount);\n\n for (var i = 0; i < entryCount; ++i) {\n flags[i] = bb.readInt();\n }\n};\n\nResourceFinder.prototype.putIntoMap = function(resId, value) {\n if (this.responseMap[resId.toUpperCase()] == null) {\n this.responseMap[resId.toUpperCase()] = []\n }\n if(value){\n this.responseMap[resId.toUpperCase()].push(value)\n }\n};\n\nmodule.exports = ResourceFinder;\n", - "function objectType (o) {\n return Object.prototype.toString.call(o).slice(8, -1).toLowerCase()\n}\n\nfunction isArray (o) {\n return objectType(o) === 'array'\n}\n\nfunction isObject (o) {\n return objectType(o) === 'object'\n}\n\nfunction isPrimitive (o) {\n return o === null || ['boolean', 'number', 'string', 'undefined'].includes(objectType(o))\n}\n\nfunction isBrowser () {\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n )\n}\n\n/**\n * map file place with resourceMap\n * @param {Object} apkInfo // json info parsed from .apk file\n * @param {Object} resourceMap // resourceMap\n */\nfunction mapInfoResource (apkInfo, resourceMap) {\n iteratorObj(apkInfo)\n return apkInfo\n function iteratorObj (obj) {\n for (var i in obj) {\n if (isArray(obj[i])) {\n iteratorArray(obj[i])\n } else if (isObject(obj[i])) {\n iteratorObj(obj[i])\n } else if (isPrimitive(obj[i])) {\n if (isResources(obj[i])) {\n obj[i] = resourceMap[transKeyToMatchResourceMap(obj[i])]\n }\n }\n }\n }\n\n function iteratorArray (array) {\n const l = array.length\n for (let i = 0; i < l; i++) {\n if (isArray(array[i])) {\n iteratorArray(array[i])\n } else if (isObject(array[i])) {\n iteratorObj(array[i])\n } else if (isPrimitive(array[i])) {\n if (isResources(array[i])) {\n array[i] = resourceMap[transKeyToMatchResourceMap(array[i])]\n }\n }\n }\n }\n\n function isResources (attrValue) {\n if (!attrValue) return false\n if (typeof attrValue !== 'string') {\n attrValue = attrValue.toString()\n }\n return attrValue.indexOf('resourceId:') === 0\n }\n\n function transKeyToMatchResourceMap (resourceId) {\n return '@' + resourceId.replace('resourceId:0x', '').toUpperCase()\n }\n}\n\n/**\n * find .apk file's icon path from json info\n * @param info // json info parsed from .apk file\n */\nfunction findApkIconPath (info) {\n if (!info.application.icon || !info.application.icon.splice) {\n return ''\n }\n const rulesMap = {\n mdpi: 48,\n hdpi: 72,\n xhdpi: 96,\n xxdpi: 144,\n xxxhdpi: 192\n }\n const resultMap = {}\n const maxDpiIcon = { dpi: 120, icon: '' }\n\n for (const i in rulesMap) {\n info.application.icon.some((icon) => {\n if (icon && icon.indexOf(i) !== -1) {\n resultMap['application-icon-' + rulesMap[i]] = icon\n return true\n }\n })\n\n // get the maximal size icon\n if (\n resultMap['application-icon-' + rulesMap[i]] &&\n rulesMap[i] >= maxDpiIcon.dpi\n ) {\n maxDpiIcon.dpi = rulesMap[i]\n maxDpiIcon.icon = resultMap['application-icon-' + rulesMap[i]]\n }\n }\n\n if (Object.keys(resultMap).length === 0 || !maxDpiIcon.icon) {\n maxDpiIcon.dpi = 120\n maxDpiIcon.icon = info.application.icon[0] || ''\n resultMap['applicataion-icon-120'] = maxDpiIcon.icon\n }\n return maxDpiIcon.icon\n}\n\n/**\n * find .ipa file's icon path from json info\n * @param info // json info parsed from .ipa file\n */\nfunction findIpaIconPath (info) {\n if (\n info.CFBundleIcons &&\n info.CFBundleIcons.CFBundlePrimaryIcon &&\n info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles &&\n info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles.length\n ) {\n return info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles[info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles.length - 1]\n } else if (info.CFBundleIconFiles && info.CFBundleIconFiles.length) {\n return info.CFBundleIconFiles[info.CFBundleIconFiles.length - 1]\n } else {\n return '.app/Icon.png'\n }\n}\n\n/**\n * transform buffer to base64\n * @param {Buffer} buffer\n */\nfunction getBase64FromBuffer (buffer) {\n return 'data:image/png;base64,' + buffer.toString('base64')\n}\n\n/**\n * 去除unicode空字符\n * @param {String} str\n */\nfunction decodeNullUnicode (str) {\n if (typeof str === 'string') {\n // eslint-disable-next-line\n str = str.replace(/\\u0000/g, '')\n }\n return str\n}\n\nmodule.exports = {\n isArray,\n isObject,\n isPrimitive,\n isBrowser,\n mapInfoResource,\n findApkIconPath,\n findIpaIconPath,\n getBase64FromBuffer,\n decodeNullUnicode\n}\n", + "function objectType (o) {\n return Object.prototype.toString.call(o).slice(8, -1).toLowerCase()\n}\n\nfunction isArray (o) {\n return objectType(o) === 'array'\n}\n\nfunction isObject (o) {\n return objectType(o) === 'object'\n}\n\nfunction isPrimitive (o) {\n return o === null || ['boolean', 'number', 'string', 'undefined'].includes(objectType(o))\n}\n\nfunction isBrowser () {\n return (\n typeof process === 'undefined' ||\n Object.prototype.toString.call(process) !== '[object process]'\n )\n}\n\n/**\n * map file place with resourceMap\n * @param {Object} apkInfo // json info parsed from .apk file\n * @param {Object} resourceMap // resourceMap\n */\nfunction mapInfoResource (apkInfo, resourceMap) {\n iteratorObj(apkInfo)\n return apkInfo\n function iteratorObj (obj) {\n for (var i in obj) {\n if (isArray(obj[i])) {\n iteratorArray(obj[i])\n } else if (isObject(obj[i])) {\n iteratorObj(obj[i])\n } else if (isPrimitive(obj[i])) {\n if (isResources(obj[i])) {\n obj[i] = resourceMap[transKeyToMatchResourceMap(obj[i])]\n }\n }\n }\n }\n\n function iteratorArray (array) {\n const l = array.length\n for (let i = 0; i < l; i++) {\n if (isArray(array[i])) {\n iteratorArray(array[i])\n } else if (isObject(array[i])) {\n iteratorObj(array[i])\n } else if (isPrimitive(array[i])) {\n if (isResources(array[i])) {\n array[i] = resourceMap[transKeyToMatchResourceMap(array[i])]\n }\n }\n }\n }\n\n function isResources (attrValue) {\n if (!attrValue) return false\n if (typeof attrValue !== 'string') {\n attrValue = attrValue.toString()\n }\n return attrValue.indexOf('resourceId:') === 0\n }\n\n function transKeyToMatchResourceMap (resourceId) {\n return '@' + resourceId.replace('resourceId:0x', '').toUpperCase()\n }\n}\n\n/**\n * find .apk file's icon path from json info\n * @param info // json info parsed from .apk file\n */\nfunction findApkIconPath (info) {\n if (!info.application.icon || !info.application.icon.splice) {\n return ''\n }\n const rulesMap = {\n mdpi: 48,\n hdpi: 72,\n xhdpi: 96,\n xxdpi: 144,\n xxxhdpi: 192\n }\n const resultMap = {}\n const maxDpiIcon = { dpi: 120, icon: '' }\n\n for (const i in rulesMap) {\n info.application.icon.some((icon) => {\n if (icon && icon.indexOf(i) !== -1) {\n resultMap['application-icon-' + rulesMap[i]] = icon\n return true\n }\n })\n\n // get the maximal size icon\n if (\n resultMap['application-icon-' + rulesMap[i]] &&\n rulesMap[i] >= maxDpiIcon.dpi\n ) {\n maxDpiIcon.dpi = rulesMap[i]\n maxDpiIcon.icon = resultMap['application-icon-' + rulesMap[i]]\n }\n }\n\n if (Object.keys(resultMap).length === 0 || !maxDpiIcon.icon) {\n maxDpiIcon.dpi = 120\n maxDpiIcon.icon = info.application.icon[0] || ''\n resultMap['applicataion-icon-120'] = maxDpiIcon.icon\n }\n return maxDpiIcon.icon\n}\n\n/**\n * find .ipa file's icon path from json info\n * @param info // json info parsed from .ipa file\n */\nfunction findIpaIconPath (info) {\n if (\n info.CFBundleIcons &&\n info.CFBundleIcons.CFBundlePrimaryIcon &&\n info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles &&\n info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles.length\n ) {\n return info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles[info.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles.length - 1]\n } else if (info.CFBundleIconFiles && info.CFBundleIconFiles.length) {\n return info.CFBundleIconFiles[info.CFBundleIconFiles.length - 1]\n } else {\n return '.app/Icon.png'\n }\n}\n\n/**\n * transform buffer to base64\n * @param {Buffer} buffer\n */\nfunction getBase64FromBuffer (buffer) {\n return 'data:image/png;base64,' + buffer.toString('base64')\n}\n\n/**\n * 去除unicode空字符\n * @param {String} str\n */\nfunction decodeNullUnicode (str) {\n if (typeof str === 'string') {\n // eslint-disable-next-line\n str = str.replace(/\\u0000/g, '')\n }\n return str\n}\n\nmodule.exports = {\n isArray,\n isObject,\n isPrimitive,\n isBrowser,\n mapInfoResource,\n findApkIconPath,\n findIpaIconPath,\n getBase64FromBuffer,\n decodeNullUnicode\n}\n", "// From https://github.com/openstf/adbkit-apkreader\nconst NodeType = {\n ELEMENT_NODE: 1,\n ATTRIBUTE_NODE: 2,\n CDATA_SECTION_NODE: 4\n}\n\nconst ChunkType = {\n NULL: 0x0000,\n STRING_POOL: 0x0001,\n TABLE: 0x0002,\n XML: 0x0003,\n XML_FIRST_CHUNK: 0x0100,\n XML_START_NAMESPACE: 0x0100,\n XML_END_NAMESPACE: 0x0101,\n XML_START_ELEMENT: 0x0102,\n XML_END_ELEMENT: 0x0103,\n XML_CDATA: 0x0104,\n XML_LAST_CHUNK: 0x017f,\n XML_RESOURCE_MAP: 0x0180,\n TABLE_PACKAGE: 0x0200,\n TABLE_TYPE: 0x0201,\n TABLE_TYPE_SPEC: 0x0202\n}\n\nconst StringFlags = {\n SORTED: 1 << 0,\n UTF8: 1 << 8\n}\n\n// Taken from android.util.TypedValue\nconst TypedValue = {\n COMPLEX_MANTISSA_MASK: 0x00ffffff,\n COMPLEX_MANTISSA_SHIFT: 0x00000008,\n COMPLEX_RADIX_0p23: 0x00000003,\n COMPLEX_RADIX_16p7: 0x00000001,\n COMPLEX_RADIX_23p0: 0x00000000,\n COMPLEX_RADIX_8p15: 0x00000002,\n COMPLEX_RADIX_MASK: 0x00000003,\n COMPLEX_RADIX_SHIFT: 0x00000004,\n COMPLEX_UNIT_DIP: 0x00000001,\n COMPLEX_UNIT_FRACTION: 0x00000000,\n COMPLEX_UNIT_FRACTION_PARENT: 0x00000001,\n COMPLEX_UNIT_IN: 0x00000004,\n COMPLEX_UNIT_MASK: 0x0000000f,\n COMPLEX_UNIT_MM: 0x00000005,\n COMPLEX_UNIT_PT: 0x00000003,\n COMPLEX_UNIT_PX: 0x00000000,\n COMPLEX_UNIT_SHIFT: 0x00000000,\n COMPLEX_UNIT_SP: 0x00000002,\n DENSITY_DEFAULT: 0x00000000,\n DENSITY_NONE: 0x0000ffff,\n TYPE_ATTRIBUTE: 0x00000002,\n TYPE_DIMENSION: 0x00000005,\n TYPE_FIRST_COLOR_INT: 0x0000001c,\n TYPE_FIRST_INT: 0x00000010,\n TYPE_FLOAT: 0x00000004,\n TYPE_FRACTION: 0x00000006,\n TYPE_INT_BOOLEAN: 0x00000012,\n TYPE_INT_COLOR_ARGB4: 0x0000001e,\n TYPE_INT_COLOR_ARGB8: 0x0000001c,\n TYPE_INT_COLOR_RGB4: 0x0000001f,\n TYPE_INT_COLOR_RGB8: 0x0000001d,\n TYPE_INT_DEC: 0x00000010,\n TYPE_INT_HEX: 0x00000011,\n TYPE_LAST_COLOR_INT: 0x0000001f,\n TYPE_LAST_INT: 0x0000001f,\n TYPE_NULL: 0x00000000,\n TYPE_REFERENCE: 0x00000001,\n TYPE_STRING: 0x00000003\n}\n\nclass BinaryXmlParser {\n constructor (buffer, options = {}) {\n this.buffer = buffer\n this.cursor = 0\n this.strings = []\n this.resources = []\n this.document = null\n this.parent = null\n this.stack = []\n this.debug = options.debug || false\n }\n\n readU8 () {\n this.debug && console.group('readU8')\n this.debug && console.debug('cursor:', this.cursor)\n const val = this.buffer[this.cursor]\n this.debug && console.debug('value:', val)\n this.cursor += 1\n this.debug && console.groupEnd()\n return val\n }\n\n readU16 () {\n this.debug && console.group('readU16')\n this.debug && console.debug('cursor:', this.cursor)\n const val = this.buffer.readUInt16LE(this.cursor)\n this.debug && console.debug('value:', val)\n this.cursor += 2\n this.debug && console.groupEnd()\n return val\n }\n\n readS32 () {\n this.debug && console.group('readS32')\n this.debug && console.debug('cursor:', this.cursor)\n const val = this.buffer.readInt32LE(this.cursor)\n this.debug && console.debug('value:', val)\n this.cursor += 4\n this.debug && console.groupEnd()\n return val\n }\n\n readU32 () {\n this.debug && console.group('readU32')\n this.debug && console.debug('cursor:', this.cursor)\n const val = this.buffer.readUInt32LE(this.cursor)\n this.debug && console.debug('value:', val)\n this.cursor += 4\n this.debug && console.groupEnd()\n return val\n }\n\n readLength8 () {\n this.debug && console.group('readLength8')\n let len = this.readU8()\n if (len & 0x80) {\n len = (len & 0x7f) << 8\n len += this.readU8()\n }\n this.debug && console.debug('length:', len)\n this.debug && console.groupEnd()\n return len\n }\n\n readLength16 () {\n this.debug && console.group('readLength16')\n let len = this.readU16()\n if (len & 0x8000) {\n len = (len & 0x7fff) << 16\n len += this.readU16()\n }\n this.debug && console.debug('length:', len)\n this.debug && console.groupEnd()\n return len\n }\n\n readDimension () {\n this.debug && console.group('readDimension')\n\n const dimension = {\n value: null,\n unit: null,\n rawUnit: null\n }\n\n const value = this.readU32()\n const unit = dimension.value & 0xff\n\n dimension.value = value >> 8\n dimension.rawUnit = unit\n\n switch (unit) {\n case TypedValue.COMPLEX_UNIT_MM:\n dimension.unit = 'mm'\n break\n case TypedValue.COMPLEX_UNIT_PX:\n dimension.unit = 'px'\n break\n case TypedValue.COMPLEX_UNIT_DIP:\n dimension.unit = 'dp'\n break\n case TypedValue.COMPLEX_UNIT_SP:\n dimension.unit = 'sp'\n break\n case TypedValue.COMPLEX_UNIT_PT:\n dimension.unit = 'pt'\n break\n case TypedValue.COMPLEX_UNIT_IN:\n dimension.unit = 'in'\n break\n }\n\n this.debug && console.groupEnd()\n\n return dimension\n }\n\n readFraction () {\n this.debug && console.group('readFraction')\n\n const fraction = {\n value: null,\n type: null,\n rawType: null\n }\n\n const value = this.readU32()\n const type = value & 0xf\n\n fraction.value = this.convertIntToFloat(value >> 4)\n fraction.rawType = type\n\n switch (type) {\n case TypedValue.COMPLEX_UNIT_FRACTION:\n fraction.type = '%'\n break\n case TypedValue.COMPLEX_UNIT_FRACTION_PARENT:\n fraction.type = '%p'\n break\n }\n\n this.debug && console.groupEnd()\n\n return fraction\n }\n\n readHex24 () {\n this.debug && console.group('readHex24')\n var val = (this.readU32() & 0xffffff).toString(16)\n this.debug && console.groupEnd()\n return val\n }\n\n readHex32 () {\n this.debug && console.group('readHex32')\n var val = this.readU32().toString(16)\n this.debug && console.groupEnd()\n return val\n }\n\n readTypedValue () {\n this.debug && console.group('readTypedValue')\n\n const typedValue = {\n value: null,\n type: null,\n rawType: null\n }\n\n const start = this.cursor\n\n let size = this.readU16()\n /* const zero = */ this.readU8()\n const dataType = this.readU8()\n\n // Yes, there has been a real world APK where the size is malformed.\n if (size === 0) {\n size = 8\n }\n\n typedValue.rawType = dataType\n\n switch (dataType) {\n case TypedValue.TYPE_INT_DEC:\n typedValue.value = this.readS32()\n typedValue.type = 'int_dec'\n break\n case TypedValue.TYPE_INT_HEX:\n typedValue.value = this.readS32()\n typedValue.type = 'int_hex'\n break\n case TypedValue.TYPE_STRING:\n var ref = this.readS32()\n typedValue.value = ref > 0 ? this.strings[ref] : ''\n typedValue.type = 'string'\n break\n case TypedValue.TYPE_REFERENCE:\n var id = this.readU32()\n typedValue.value = `resourceId:0x${id.toString(16)}`\n typedValue.type = 'reference'\n break\n case TypedValue.TYPE_INT_BOOLEAN:\n typedValue.value = this.readS32() !== 0\n typedValue.type = 'boolean'\n break\n case TypedValue.TYPE_NULL:\n this.readU32()\n typedValue.value = null\n typedValue.type = 'null'\n break\n case TypedValue.TYPE_INT_COLOR_RGB8:\n typedValue.value = this.readHex24()\n typedValue.type = 'rgb8'\n break\n case TypedValue.TYPE_INT_COLOR_RGB4:\n typedValue.value = this.readHex24()\n typedValue.type = 'rgb4'\n break\n case TypedValue.TYPE_INT_COLOR_ARGB8:\n typedValue.value = this.readHex32()\n typedValue.type = 'argb8'\n break\n case TypedValue.TYPE_INT_COLOR_ARGB4:\n typedValue.value = this.readHex32()\n typedValue.type = 'argb4'\n break\n case TypedValue.TYPE_DIMENSION:\n typedValue.value = this.readDimension()\n typedValue.type = 'dimension'\n break\n case TypedValue.TYPE_FRACTION:\n typedValue.value = this.readFraction()\n typedValue.type = 'fraction'\n break\n default: {\n const type = dataType.toString(16)\n console.debug(`Not sure what to do with typed value of type 0x${type}, falling back to reading an uint32.`)\n typedValue.value = this.readU32()\n typedValue.type = 'unknown'\n }\n }\n\n // Ensure we consume the whole value\n const end = start + size\n if (this.cursor !== end) {\n const type = dataType.toString(16)\n const diff = end - this.cursor\n console.debug(`Cursor is off by ${diff} bytes at ${this.cursor} at supposed end \\\nof typed value of type 0x${type}. The typed value started at offset ${start} \\\nand is supposed to end at offset ${end}. Ignoring the rest of the value.`)\n this.cursor = end\n }\n\n this.debug && console.groupEnd()\n\n return typedValue\n }\n\n // https://twitter.com/kawasima/status/427730289201139712\n convertIntToFloat (int) {\n const buf = new ArrayBuffer(4)\n ;(new Int32Array(buf))[0] = int\n return (new Float32Array(buf))[0]\n }\n\n readString (encoding) {\n this.debug && console.group('readString', encoding)\n switch (encoding) {\n case 'utf-8':\n var stringLength = this.readLength8(encoding)\n this.debug && console.debug('stringLength:', stringLength)\n var byteLength = this.readLength8(encoding)\n this.debug && console.debug('byteLength:', byteLength)\n var value = this.buffer.toString(encoding, this.cursor, (this.cursor += byteLength))\n this.debug && console.debug('value:', value)\n this.debug && console.groupEnd()\n return value\n case 'ucs2':\n stringLength = this.readLength16(encoding)\n this.debug && console.debug('stringLength:', stringLength)\n byteLength = stringLength * 2\n this.debug && console.debug('byteLength:', byteLength)\n value = this.buffer.toString(encoding, this.cursor, (this.cursor += byteLength))\n this.debug && console.debug('value:', value)\n this.debug && console.groupEnd()\n return value\n default:\n throw new Error(`Unsupported encoding '${encoding}'`)\n }\n }\n\n readChunkHeader () {\n this.debug && console.group('readChunkHeader')\n var header = {\n startOffset: this.cursor,\n chunkType: this.readU16(),\n headerSize: this.readU16(),\n chunkSize: this.readU32()\n }\n this.debug && console.debug('startOffset:', header.startOffset)\n this.debug && console.debug('chunkType:', header.chunkType)\n this.debug && console.debug('headerSize:', header.headerSize)\n this.debug && console.debug('chunkSize:', header.chunkSize)\n this.debug && console.groupEnd()\n return header\n }\n\n readStringPool (header) {\n this.debug && console.group('readStringPool')\n\n header.stringCount = this.readU32()\n this.debug && console.debug('stringCount:', header.stringCount)\n header.styleCount = this.readU32()\n this.debug && console.debug('styleCount:', header.styleCount)\n header.flags = this.readU32()\n this.debug && console.debug('flags:', header.flags)\n header.stringsStart = this.readU32()\n this.debug && console.debug('stringsStart:', header.stringsStart)\n header.stylesStart = this.readU32()\n this.debug && console.debug('stylesStart:', header.stylesStart)\n\n if (header.chunkType !== ChunkType.STRING_POOL) {\n throw new Error('Invalid string pool header')\n }\n\n const offsets = []\n for (let i = 0, l = header.stringCount; i < l; ++i) {\n this.debug && console.debug('offset:', i)\n offsets.push(this.readU32())\n }\n\n const sorted = (header.flags & StringFlags.SORTED) === StringFlags.SORTED\n this.debug && console.debug('sorted:', sorted)\n const encoding = (header.flags & StringFlags.UTF8) === StringFlags.UTF8\n ? 'utf-8'\n : 'ucs2'\n this.debug && console.debug('encoding:', encoding)\n\n const stringsStart = header.startOffset + header.stringsStart\n this.cursor = stringsStart\n for (let i = 0, l = header.stringCount; i < l; ++i) {\n this.debug && console.debug('string:', i)\n this.debug && console.debug('offset:', offsets[i])\n this.cursor = stringsStart + offsets[i]\n this.strings.push(this.readString(encoding))\n }\n\n // Skip styles\n this.cursor = header.startOffset + header.chunkSize\n\n this.debug && console.groupEnd()\n\n return null\n }\n\n readResourceMap (header) {\n this.debug && console.group('readResourceMap')\n const count = Math.floor((header.chunkSize - header.headerSize) / 4)\n for (let i = 0; i < count; ++i) {\n this.resources.push(this.readU32())\n }\n this.debug && console.groupEnd()\n return null\n }\n\n readXmlNamespaceStart (/* header */) {\n this.debug && console.group('readXmlNamespaceStart')\n\n /* const line = */ this.readU32()\n /* const commentRef = */ this.readU32()\n /* const prefixRef = */ this.readS32()\n /* const uriRef = */ this.readS32()\n\n // We don't currently care about the values, but they could\n // be accessed like so:\n //\n // namespaceURI.prefix = this.strings[prefixRef] // if prefixRef > 0\n // namespaceURI.uri = this.strings[uriRef] // if uriRef > 0\n\n this.debug && console.groupEnd()\n\n return null\n }\n\n readXmlNamespaceEnd (/* header */) {\n this.debug && console.group('readXmlNamespaceEnd')\n\n /* const line = */ this.readU32()\n /* const commentRef = */ this.readU32()\n /* const prefixRef = */ this.readS32()\n /* const uriRef = */ this.readS32()\n\n // We don't currently care about the values, but they could\n // be accessed like so:\n //\n // namespaceURI.prefix = this.strings[prefixRef] // if prefixRef > 0\n // namespaceURI.uri = this.strings[uriRef] // if uriRef > 0\n\n this.debug && console.groupEnd()\n\n return null\n }\n\n readXmlElementStart (/* header */) {\n this.debug && console.group('readXmlElementStart')\n\n const node = {\n namespaceURI: null,\n nodeType: NodeType.ELEMENT_NODE,\n nodeName: null,\n attributes: [],\n childNodes: []\n }\n\n /* const line = */ this.readU32()\n /* const commentRef = */ this.readU32()\n const nsRef = this.readS32()\n const nameRef = this.readS32()\n\n if (nsRef > 0) {\n node.namespaceURI = this.strings[nsRef]\n }\n\n node.nodeName = this.strings[nameRef]\n\n /* const attrStart = */ this.readU16()\n /* const attrSize = */ this.readU16()\n const attrCount = this.readU16()\n /* const idIndex = */ this.readU16()\n /* const classIndex = */ this.readU16()\n /* const styleIndex = */ this.readU16()\n\n for (let i = 0; i < attrCount; ++i) {\n node.attributes.push(this.readXmlAttribute())\n }\n\n if (this.document) {\n this.parent.childNodes.push(node)\n this.parent = node\n } else {\n this.document = (this.parent = node)\n }\n\n this.stack.push(node)\n\n this.debug && console.groupEnd()\n\n return node\n }\n\n readXmlAttribute () {\n this.debug && console.group('readXmlAttribute')\n\n const attr = {\n namespaceURI: null,\n nodeType: NodeType.ATTRIBUTE_NODE,\n nodeName: null,\n name: null,\n value: null,\n typedValue: null\n }\n\n const nsRef = this.readS32()\n const nameRef = this.readS32()\n const valueRef = this.readS32()\n\n if (nsRef > 0) {\n attr.namespaceURI = this.strings[nsRef]\n }\n\n attr.nodeName = attr.name = this.strings[nameRef]\n\n if (valueRef > 0) {\n // some apk have versionName with special characters\n if (attr.name === 'versionName') {\n this.strings[valueRef] = this.strings[valueRef].replace(/[^\\d\\w-.]/g, '')\n }\n attr.value = this.strings[valueRef]\n }\n\n attr.typedValue = this.readTypedValue()\n\n this.debug && console.groupEnd()\n\n return attr\n }\n\n readXmlElementEnd (/* header */) {\n this.debug && console.group('readXmlCData')\n\n /* const line = */ this.readU32()\n /* const commentRef = */ this.readU32()\n /* const nsRef = */ this.readS32()\n /* const nameRef = */ this.readS32()\n\n this.stack.pop()\n this.parent = this.stack[this.stack.length - 1]\n\n this.debug && console.groupEnd()\n\n return null\n }\n\n readXmlCData (/* header */) {\n this.debug && console.group('readXmlCData')\n\n const cdata = {\n namespaceURI: null,\n nodeType: NodeType.CDATA_SECTION_NODE,\n nodeName: '#cdata',\n data: null,\n typedValue: null\n }\n\n /* const line = */ this.readU32()\n /* const commentRef = */ this.readU32()\n const dataRef = this.readS32()\n\n if (dataRef > 0) {\n cdata.data = this.strings[dataRef]\n }\n\n cdata.typedValue = this.readTypedValue()\n\n this.parent.childNodes.push(cdata)\n\n this.debug && console.groupEnd()\n\n return cdata\n }\n\n readNull (header) {\n this.debug && console.group('readNull')\n this.cursor += header.chunkSize - header.headerSize\n this.debug && console.groupEnd()\n return null\n }\n\n parse () {\n this.debug && console.group('BinaryXmlParser.parse')\n\n const xmlHeader = this.readChunkHeader()\n if (xmlHeader.chunkType !== ChunkType.XML) {\n throw new Error('Invalid XML header')\n }\n\n while (this.cursor < this.buffer.length) {\n this.debug && console.group('chunk')\n const start = this.cursor\n const header = this.readChunkHeader()\n switch (header.chunkType) {\n case ChunkType.STRING_POOL:\n this.readStringPool(header)\n break\n case ChunkType.XML_RESOURCE_MAP:\n this.readResourceMap(header)\n break\n case ChunkType.XML_START_NAMESPACE:\n this.readXmlNamespaceStart(header)\n break\n case ChunkType.XML_END_NAMESPACE:\n this.readXmlNamespaceEnd(header)\n break\n case ChunkType.XML_START_ELEMENT:\n this.readXmlElementStart(header)\n break\n case ChunkType.XML_END_ELEMENT:\n this.readXmlElementEnd(header)\n break\n case ChunkType.XML_CDATA:\n this.readXmlCData(header)\n break\n case ChunkType.NULL:\n this.readNull(header)\n break\n default:\n throw new Error(`Unsupported chunk type '${header.chunkType}'`)\n }\n\n // Ensure we consume the whole chunk\n const end = start + header.chunkSize\n if (this.cursor !== end) {\n const diff = end - this.cursor\n const type = header.chunkType.toString(16)\n console.debug(`Cursor is off by ${diff} bytes at ${this.cursor} at supposed \\\nend of chunk of type 0x${type}. The chunk started at offset ${start} and is \\\nsupposed to end at offset ${end}. Ignoring the rest of the chunk.`)\n this.cursor = end\n }\n\n this.debug && console.groupEnd()\n }\n\n this.debug && console.groupEnd()\n\n return this.document\n }\n}\n\nmodule.exports = BinaryXmlParser\n", "// From https://github.com/openstf/adbkit-apkreader\nconst BinaryXmlParser = require('./binary')\n\nconst INTENT_MAIN = 'android.intent.action.MAIN'\nconst CATEGORY_LAUNCHER = 'android.intent.category.LAUNCHER'\n\nclass ManifestParser {\n constructor (buffer, options = {}) {\n this.buffer = buffer\n this.xmlParser = new BinaryXmlParser(this.buffer, options)\n }\n\n collapseAttributes (element) {\n const collapsed = Object.create(null)\n for (let attr of Array.from(element.attributes)) {\n collapsed[attr.name] = attr.typedValue.value\n }\n return collapsed\n }\n\n parseIntents (element, target) {\n target.intentFilters = []\n target.metaData = []\n\n return element.childNodes.forEach(element => {\n switch (element.nodeName) {\n case 'intent-filter': {\n const intentFilter = this.collapseAttributes(element)\n\n intentFilter.actions = []\n intentFilter.categories = []\n intentFilter.data = []\n\n element.childNodes.forEach(element => {\n switch (element.nodeName) {\n case 'action':\n intentFilter.actions.push(this.collapseAttributes(element))\n break\n case 'category':\n intentFilter.categories.push(this.collapseAttributes(element))\n break\n case 'data':\n intentFilter.data.push(this.collapseAttributes(element))\n break\n }\n })\n\n target.intentFilters.push(intentFilter)\n break\n }\n case 'meta-data':\n target.metaData.push(this.collapseAttributes(element))\n break\n }\n })\n }\n\n parseApplication (element) {\n const app = this.collapseAttributes(element)\n\n app.activities = []\n app.activityAliases = []\n app.launcherActivities = []\n app.services = []\n app.receivers = []\n app.providers = []\n app.usesLibraries = []\n app.metaData = []\n\n element.childNodes.forEach(element => {\n switch (element.nodeName) {\n case 'activity': {\n const activity = this.collapseAttributes(element)\n this.parseIntents(element, activity)\n app.activities.push(activity)\n if (this.isLauncherActivity(activity)) {\n app.launcherActivities.push(activity)\n }\n break\n }\n case 'activity-alias': {\n const activityAlias = this.collapseAttributes(element)\n this.parseIntents(element, activityAlias)\n app.activityAliases.push(activityAlias)\n if (this.isLauncherActivity(activityAlias)) {\n app.launcherActivities.push(activityAlias)\n }\n break\n }\n case 'service': {\n const service = this.collapseAttributes(element)\n this.parseIntents(element, service)\n app.services.push(service)\n break\n }\n case 'receiver': {\n const receiver = this.collapseAttributes(element)\n this.parseIntents(element, receiver)\n app.receivers.push(receiver)\n break\n }\n case 'provider': {\n const provider = this.collapseAttributes(element)\n\n provider.grantUriPermissions = []\n provider.metaData = []\n provider.pathPermissions = []\n\n element.childNodes.forEach(element => {\n switch (element.nodeName) {\n case 'grant-uri-permission':\n provider.grantUriPermissions.push(this.collapseAttributes(element))\n break\n case 'meta-data':\n provider.metaData.push(this.collapseAttributes(element))\n break\n case 'path-permission':\n provider.pathPermissions.push(this.collapseAttributes(element))\n break\n }\n })\n\n app.providers.push(provider)\n break\n }\n case 'uses-library':\n app.usesLibraries.push(this.collapseAttributes(element))\n break\n case 'meta-data':\n app.metaData.push(this.collapseAttributes(element))\n break\n }\n })\n\n return app\n }\n\n isLauncherActivity (activity) {\n return activity.intentFilters.some(function (filter) {\n const hasMain = filter.actions.some(action => action.name === INTENT_MAIN)\n if (!hasMain) {\n return false\n }\n return filter.categories.some(category => category.name === CATEGORY_LAUNCHER)\n })\n }\n\n parse () {\n const document = this.xmlParser.parse()\n const manifest = this.collapseAttributes(document)\n\n manifest.usesPermissions = []\n manifest.usesPermissionsSDK23 = []\n manifest.permissions = []\n manifest.permissionTrees = []\n manifest.permissionGroups = []\n manifest.instrumentation = null\n manifest.usesSdk = null\n manifest.usesConfiguration = null\n manifest.usesFeatures = []\n manifest.supportsScreens = null\n manifest.compatibleScreens = []\n manifest.supportsGlTextures = []\n manifest.application = Object.create(null)\n\n document.childNodes.forEach(element => {\n switch (element.nodeName) {\n case 'uses-permission':\n manifest.usesPermissions.push(this.collapseAttributes(element))\n break\n case 'uses-permission-sdk-23':\n manifest.usesPermissionsSDK23.push(this.collapseAttributes(element))\n break\n case 'permission':\n manifest.permissions.push(this.collapseAttributes(element))\n break\n case 'permission-tree':\n manifest.permissionTrees.push(this.collapseAttributes(element))\n break\n case 'permission-group':\n manifest.permissionGroups.push(this.collapseAttributes(element))\n break\n case 'instrumentation':\n manifest.instrumentation = this.collapseAttributes(element)\n break\n case 'uses-sdk':\n manifest.usesSdk = this.collapseAttributes(element)\n break\n case 'uses-configuration':\n manifest.usesConfiguration = this.collapseAttributes(element)\n break\n case 'uses-feature':\n manifest.usesFeatures.push(this.collapseAttributes(element))\n break\n case 'supports-screens':\n manifest.supportsScreens = this.collapseAttributes(element)\n break\n case 'compatible-screens':\n element.childNodes.forEach(screen => {\n return manifest.compatibleScreens.push(this.collapseAttributes(screen))\n })\n break\n case 'supports-gl-texture':\n manifest.supportsGlTextures.push(this.collapseAttributes(element))\n break\n case 'application':\n manifest.application = this.parseApplication(element)\n break\n }\n })\n\n return manifest\n }\n}\n\nmodule.exports = ManifestParser\n", "const Unzip = require('isomorphic-unzip')\nconst { isBrowser, decodeNullUnicode } = require('./utils')\n\nclass Zip {\n constructor (file) {\n if (isBrowser()) {\n if (!(file instanceof window.Blob || typeof file.size !== 'undefined')) {\n throw new Error('Param error: [file] must be an instance of Blob or File in browser.')\n }\n this.file = file\n } else {\n if (typeof file !== 'string') {\n throw new Error('Param error: [file] must be file path in Node.')\n }\n this.file = require('path').resolve(file)\n }\n this.unzip = new Unzip(this.file)\n }\n\n /**\n * get entries by regexps, the return format is: { : }\n * @param {Array} regexps // regexps for matching files\n * @param {String} type // return type, can be buffer or blob, default buffer\n */\n getEntries (regexps, type = 'buffer') {\n regexps = regexps.map(regex => decodeNullUnicode(regex))\n return new Promise((resolve, reject) => {\n this.unzip.getBuffer(regexps, { type }, (err, buffers) => {\n err ? reject(err) : resolve(buffers)\n })\n })\n }\n /**\n * get entry by regex, return an instance of Buffer or Blob\n * @param {Regex} regex // regex for matching file\n * @param {String} type // return type, can be buffer or blob, default buffer\n */\n getEntry (regex, type = 'buffer') {\n regex = decodeNullUnicode(regex)\n return new Promise((resolve, reject) => {\n this.unzip.getBuffer([regex], { type }, (err, buffers) => {\n err ? reject(err) : resolve(buffers[regex])\n })\n })\n }\n}\n\nmodule.exports = Zip\n", - "'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n", - "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n", - "module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}", - "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n", + "'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n", + "var conventions = require(\"./conventions\");\nvar dom = require('./dom')\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar NAMESPACE = conventions.NAMESPACE;\n\nvar ParseError = sax.ParseError;\nvar XMLReader = sax.XMLReader;\n\n/**\n * Normalizes line ending according to https://www.w3.org/TR/xml11/#sec-line-ends:\n *\n * > XML parsed entities are often stored in computer files which,\n * > for editing convenience, are organized into lines.\n * > These lines are typically separated by some combination\n * > of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).\n * >\n * > To simplify the tasks of applications, the XML processor must behave\n * > as if it normalized all line breaks in external parsed entities (including the document entity)\n * > on input, before parsing, by translating all of the following to a single #xA character:\n * >\n * > 1. the two-character sequence #xD #xA\n * > 2. the two-character sequence #xD #x85\n * > 3. the single character #x85\n * > 4. the single character #x2028\n * > 5. any #xD character that is not immediately followed by #xA or #x85.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizeLineEndings(input) {\n\treturn input\n\t\t.replace(/\\r[\\n\\u0085]/g, '\\n')\n\t\t.replace(/[\\r\\u0085\\u2028]/g, '\\n')\n}\n\n/**\n * @typedef Locator\n * @property {number} [columnNumber]\n * @property {number} [lineNumber]\n */\n\n/**\n * @typedef DOMParserOptions\n * @property {DOMHandler} [domBuilder]\n * @property {Function} [errorHandler]\n * @property {(string) => string} [normalizeLineEndings] used to replace line endings before parsing\n * \t\t\t\t\t\tdefaults to `normalizeLineEndings`\n * @property {Locator} [locator]\n * @property {Record} [xmlns]\n *\n * @see normalizeLineEndings\n */\n\n/**\n * The DOMParser interface provides the ability to parse XML or HTML source code\n * from a string into a DOM `Document`.\n *\n * _xmldom is different from the spec in that it allows an `options` parameter,\n * to override the default behavior._\n *\n * @param {DOMParserOptions} [options]\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization\n */\nfunction DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax = new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n \tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap[''] = NAMESPACE.HTML;\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\tvar normalize = options.normalizeLineEndings || normalizeLineEndings;\n\tif (source && typeof source === 'string') {\n\t\tsax.parse(\n\t\t\tnormalize(source),\n\t\t\tdefaultNSMap,\n\t\t\tentityMap\n\t\t)\n\t} else {\n\t\tsax.errorHandler.error('invalid doc source')\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n \tif (this.locator) {\n \tthis.doc.documentURI = this.locator.systemId;\n \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\n\t var len = attrs.length;\n\t appendElement(this, el);\n\t this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t for (var i = 0 ; i < len; i++) {\n\t var namespaceURI = attrs.getURI(i);\n\t var value = attrs.getValue(i);\n\t var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t var ins = this.doc.createProcessingInstruction(target, data);\n\t this.locator && position(this.locator,ins)\n\t appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\n\t \tlocator.lineNumber = 0;\n\t }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t var comm = this.doc.createComment(chars);\n\t this.locator && position(this.locator,comm)\n\t appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t //used in characters() methods\n\t this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t if (impl && impl.createDocumentType) {\n\t var dt = impl.createDocumentType(name, publicId, systemId);\n\t this.locator && position(this.locator,dt)\n\t appendElement(this, dt);\n\t\t\t\t\tthis.doc.doctype = dt;\n\t }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n * #comment(chars, start, length)\n * #startCDATA()\n * #endCDATA()\n * #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n * #endDTD()\n * #startEntity(name)\n * #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n * #elementDecl(name, model)\n * #externalEntityDecl(name, publicId, systemId)\n * #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\n * #resolveEntity(publicId, systemId)\n * #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n * #notationDecl(name, publicId, systemId) {};\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n if (!hander.currentElement) {\n hander.doc.appendChild(node);\n } else {\n hander.currentElement.appendChild(node);\n }\n}//appendChild and setAttributeNS are preformance key\n\nexports.__DOMHandler = DOMHandler;\nexports.normalizeLineEndings = normalizeLineEndings;\nexports.DOMParser = DOMParser;\n", + "var conventions = require(\"./conventions\");\n\nvar find = conventions.find;\nvar NAMESPACE = conventions.NAMESPACE;\n\n/**\n * A prerequisite for `[].filter`, to drop elements that are empty\n * @param {string} input\n * @returns {boolean}\n */\nfunction notEmptyString (input) {\n\treturn input !== ''\n}\n/**\n * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * @param {string} input\n * @returns {string[]} (can be empty)\n */\nfunction splitOnASCIIWhitespace(input) {\n\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\n\treturn input ? input.split(/[\\t\\n\\f\\r ]+/).filter(notEmptyString) : []\n}\n\n/**\n * Adds element as a key to current if it is not already present.\n *\n * @param {Record} current\n * @param {string} element\n * @returns {Record}\n */\nfunction orderedSetReducer (current, element) {\n\tif (!current.hasOwnProperty(element)) {\n\t\tcurrent[element] = true;\n\t}\n\treturn current;\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ordered-set\n * @param {string} input\n * @returns {string[]}\n */\nfunction toOrderedSet(input) {\n\tif (!input) return [];\n\tvar list = splitOnASCIIWhitespace(input);\n\treturn Object.keys(list.reduce(orderedSetReducer, {}))\n}\n\n/**\n * Uses `list.indexOf` to implement something like `Array.prototype.includes`,\n * which we can not rely on being available.\n *\n * @param {any[]} list\n * @returns {function(any): boolean}\n */\nfunction arrayIncludes (list) {\n\treturn function(element) {\n\t\treturn list && list.indexOf(element) !== -1;\n\t}\n}\n\nfunction copy(src,dest){\n\tfor(var p in src){\n\t\tif (Object.prototype.hasOwnProperty.call(src, p)) {\n\t\t\tdest[p] = src[p];\n\t\t}\n\t}\n}\n\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknown Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\n\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE = NodeType.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE = NodeType.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE = NodeType.COMMENT_NODE = 8;\nvar DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE = NodeType.NOTATION_NODE = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR \t= ExceptionCode.INVALID_STATE_ERR \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR \t= ExceptionCode.SYNTAX_ERR \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR \t= ExceptionCode.NAMESPACE_ERR \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR \t= ExceptionCode.INVALID_ACCESS_ERR \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n/**\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0,\n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index unsigned long\n\t * Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index.\n\t */\n\titem: function(index) {\n\t\treturn index >= 0 && index < this.length ? this[index] : null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\n\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n\n/**\n * The DOMImplementation interface represents an object providing methods\n * which are not dependent on any particular document.\n * Such an object is returned by the `Document.implementation` property.\n *\n * __The individual methods describe the differences compared to the specs.__\n *\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial)\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\n */\nfunction DOMImplementation() {\n}\n\nDOMImplementation.prototype = {\n\t/**\n\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.\n\t * The different implementations fairly diverged in what kind of features were reported.\n\t * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.\n\t *\n\t * @deprecated It is deprecated and modern browsers return true in all cases.\n\t *\n\t * @param {string} feature\n\t * @param {string} [version]\n\t * @returns {boolean} always true\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\n\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\n\t */\n\thasFeature: function(feature, version) {\n\t\t\treturn true;\n\t},\n\t/**\n\t * Creates an XML Document object of the specified type with its document element.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - There is no interface/class `XMLDocument`, it returns a `Document` instance.\n\t * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string|null} namespaceURI\n\t * @param {string} qualifiedName\n\t * @param {DocumentType=null} doctype\n\t * @returns {Document}\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Level 2 Core\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocument: function(namespaceURI, qualifiedName, doctype){\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype || null;\n\t\tif (doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif (qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t/**\n\t * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.\n\t *\n\t * __This behavior is slightly different from the in the specs__:\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string} qualifiedName\n\t * @param {string} [publicId]\n\t * @param {string} [systemId]\n\t * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation\n\t * \t\t\t\t or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocumentType: function(qualifiedName, publicId, systemId){\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId || '';\n\t\tnode.systemId = systemId || '';\n\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises\n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises\n\t\t_insertBefore(this, newChild,oldChild, assertPreReplacementValidityInDocument);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n // Introduced in DOM Level 2:\n hasAttributes:function(){\n \treturn this.attributes.length>0;\n },\n\t/**\n\t * Look up the prefix associated to the given namespace URI, starting from this node.\n\t * **The default namespace declarations are ignored by this method.**\n\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\n\t *\n\t * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._\n\t *\n\t * @param {string | null} namespaceURI\n\t * @returns {string | null}\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\n\t * @see https://github.com/xmldom/xmldom/issues/322\n\t */\n lookupPrefix:function(namespaceURI){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tfor(var n in map){\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(map, n) && map[n] === namespaceURI) {\n\t\t\t\t\t\t\treturn n;\n\t\t\t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n lookupNamespaceURI:function(prefix){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tif(Object.prototype.hasOwnProperty.call(map, prefix)){\n \t\t\t\treturn map[prefix] ;\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n isDefaultNamespace:function(namespaceURI){\n \tvar prefix = this.lookupPrefix(namespaceURI);\n \treturn prefix == null;\n }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '<' ||\n c == '>' && '>' ||\n c == '&' && '&' ||\n c == '\"' && '"' ||\n '&#'+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n }while(node=node.nextSibling)\n }\n}\n\n\n\nfunction Document(){\n\tthis.ownerDocument = this;\n}\n\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\n\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\n\n/**\n * Updates `el.childNodes`, updating the indexed items and it's `length`.\n * Passing `newChild` means it will be appended.\n * Otherwise it's assumed that an item has been removed,\n * and `el.firstNode` and it's `.nextSibling` are used\n * to walk the current list of child nodes.\n *\n * @param {Document} doc\n * @param {Node} el\n * @param {Node} [newChild]\n * @private\n */\nfunction _onUpdateChild (doc, el, newChild) {\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif (newChild) {\n\t\t\tcs[cs.length++] = newChild;\n\t\t} else {\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile (child) {\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild = child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t\tdelete cs[cs.length];\n\t\t}\n\t}\n}\n\n/**\n * Removes the connections between `parentNode` and `child`\n * and any existing `child.previousSibling` or `child.nextSibling`.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n *\n * @param {Node} parentNode\n * @param {Node} child\n * @returns {Node} the child that was removed.\n * @private\n */\nfunction _removeChild (parentNode, child) {\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif (previous) {\n\t\tprevious.nextSibling = next;\n\t} else {\n\t\tparentNode.firstChild = next;\n\t}\n\tif (next) {\n\t\tnext.previousSibling = previous;\n\t} else {\n\t\tparentNode.lastChild = previous;\n\t}\n\tchild.parentNode = null;\n\tchild.previousSibling = null;\n\tchild.nextSibling = null;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode);\n\treturn child;\n}\n\n/**\n * Returns `true` if `node` can be a parent for insertion.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasValidParentNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || node.nodeType === Node.ELEMENT_NODE)\n\t);\n}\n\n/**\n * Returns `true` if `node` can be inserted according to it's `nodeType`.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasInsertableNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(isElementNode(node) ||\n\t\t\tisTextNode(node) ||\n\t\t\tisDocTypeNode(node) ||\n\t\t\tnode.nodeType === Node.DOCUMENT_FRAGMENT_NODE ||\n\t\t\tnode.nodeType === Node.COMMENT_NODE ||\n\t\t\tnode.nodeType === Node.PROCESSING_INSTRUCTION_NODE)\n\t);\n}\n\n/**\n * Returns true if `node` is a DOCTYPE node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isDocTypeNode(node) {\n\treturn node && node.nodeType === Node.DOCUMENT_TYPE_NODE;\n}\n\n/**\n * Returns true if the node is an element\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isElementNode(node) {\n\treturn node && node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Returns true if `node` is a text node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isTextNode(node) {\n\treturn node && node.nodeType === Node.TEXT_NODE;\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Document} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementInsertionPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\tif (find(parentChildNodes, isElementNode) || isDocTypeNode(child)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Node} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementReplacementPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\n\tfunction hasElementChildThatIsNotChild(node) {\n\t\treturn isElementNode(node) && node !== child;\n\t}\n\n\tif (find(parentChildNodes, hasElementChildThatIsNotChild)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * @private\n * Steps 1-5 of the checks before inserting and before replacing a child are the same.\n *\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidity1to5(parent, node, child) {\n\t// 1. If `parent` is not a Document, DocumentFragment, or Element node, then throw a \"HierarchyRequestError\" DOMException.\n\tif (!hasValidParentNodeType(parent)) {\n\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Unexpected parent node type ' + parent.nodeType);\n\t}\n\t// 2. If `node` is a host-including inclusive ancestor of `parent`, then throw a \"HierarchyRequestError\" DOMException.\n\t// not implemented!\n\t// 3. If `child` is non-null and its parent is not `parent`, then throw a \"NotFoundError\" DOMException.\n\tif (child && child.parentNode !== parent) {\n\t\tthrow new DOMException(NOT_FOUND_ERR, 'child not in parent');\n\t}\n\tif (\n\t\t// 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a \"HierarchyRequestError\" DOMException.\n\t\t!hasInsertableNodeType(node) ||\n\t\t// 5. If either `node` is a Text node and `parent` is a document,\n\t\t// the sax parser currently adds top level text nodes, this will be fixed in 0.9.0\n\t\t// || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE)\n\t\t// or `node` is a doctype and `parent` is not a document, then throw a \"HierarchyRequestError\" DOMException.\n\t\t(isDocTypeNode(node) && parent.nodeType !== Node.DOCUMENT_NODE)\n\t) {\n\t\tthrow new DOMException(\n\t\t\tHIERARCHY_REQUEST_ERR,\n\t\t\t'Unexpected node type ' + node.nodeType + ' for parent node type ' + parent.nodeType\n\t\t);\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If node has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child,\n\t\t// `child` is a doctype, or `child` is non-null and a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child, `child` is a doctype,\n\t\t// or `child` is non-null and a doctype is following `child`.\n\t\tif (!isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\t// `parent` has a doctype child,\n\t\tif (find(parentChildNodes, isDocTypeNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// `child` is non-null and an element is preceding `child`,\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t\t// or `child` is null and `parent` has an element child.\n\t\tif (!child && parentElementChild) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can not be appended since element is present');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreReplacementValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If `node` has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (!isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\tfunction hasDoctypeChildThatIsNotChild(node) {\n\t\t\treturn isDocTypeNode(node) && node !== child;\n\t\t}\n\n\t\t// `parent` has a doctype child that is not `child`,\n\t\tif (find(parentChildNodes, hasDoctypeChildThatIsNotChild)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// or an element is preceding `child`.\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction _insertBefore(parent, node, child, _inDocumentAssertion) {\n\t// To ensure pre-insertion validity of a node into a parent before a child, run these steps:\n\tassertPreInsertionValidity1to5(parent, node, child);\n\n\t// If parent is a document, and any of the statements below, switched on the interface node implements,\n\t// are true, then throw a \"HierarchyRequestError\" DOMException.\n\tif (parent.nodeType === Node.DOCUMENT_NODE) {\n\t\t(_inDocumentAssertion || assertPreInsertionValidityInDocument)(parent, node, child);\n\t}\n\n\tvar cp = node.parentNode;\n\tif(cp){\n\t\tcp.removeChild(node);//remove and update\n\t}\n\tif(node.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = node.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn node;\n\t\t}\n\t\tvar newLast = node.lastChild;\n\t}else{\n\t\tnewFirst = newLast = node;\n\t}\n\tvar pre = child ? child.previousSibling : parent.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = child;\n\n\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparent.firstChild = newFirst;\n\t}\n\tif(child == null){\n\t\tparent.lastChild = newLast;\n\t}else{\n\t\tchild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parent;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parent.ownerDocument||parent, parent);\n\t//console.log(parent.lastChild.nextSibling == null)\n\tif (node.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnode.firstChild = node.lastChild = null;\n\t}\n\treturn node;\n}\n\n/**\n * Appends `newChild` to `parentNode`.\n * If `newChild` is already connected to a `parentNode` it is first removed from it.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n * @param {Node} parentNode\n * @param {Node} newChild\n * @returns {Node}\n * @private\n */\nfunction _appendSingleChild (parentNode, newChild) {\n\tif (newChild.parentNode) {\n\t\tnewChild.parentNode.removeChild(newChild);\n\t}\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = parentNode.lastChild;\n\tnewChild.nextSibling = null;\n\tif (newChild.previousSibling) {\n\t\tnewChild.previousSibling.nextSibling = newChild;\n\t} else {\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode, newChild);\n\treturn newChild;\n}\n\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName : '#document',\n\tnodeType : DOCUMENT_NODE,\n\t/**\n\t * The DocumentType node of the document.\n\t *\n\t * @readonly\n\t * @type DocumentType\n\t */\n\tdoctype : null,\n\tdocumentElement : null,\n\t_inc : 1,\n\n\tinsertBefore : function(newChild, refChild){//raises\n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\t_insertBefore(this, newChild, refChild);\n\t\tnewChild.ownerDocument = this;\n\t\tif (this.documentElement === null && newChild.nodeType === ELEMENT_NODE) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\n\t\treturn newChild;\n\t},\n\tremoveChild : function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\treplaceChild: function (newChild, oldChild) {\n\t\t//raises\n\t\t_insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument);\n\t\tnewChild.ownerDocument = this;\n\t\tif (oldChild) {\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t\tif (isElementNode(newChild)) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\n\t/**\n\t * The `getElementsByClassName` method of `Document` interface returns an array-like object\n\t * of all child elements which have **all** of the given class name(s).\n\t *\n\t * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.\n\t *\n\t *\n\t * Warning: This is a live LiveNodeList.\n\t * Changes in the DOM will reflect in the array as the changes occur.\n\t * If an element selected by this array no longer qualifies for the selector,\n\t * it will automatically be removed. Be aware of this for iteration purposes.\n\t *\n\t * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\n\t */\n\tgetElementsByClassName: function(classNames) {\n\t\tvar classNamesSet = toOrderedSet(classNames)\n\t\treturn new LiveNodeList(this, function(base) {\n\t\t\tvar ls = [];\n\t\t\tif (classNamesSet.length > 0) {\n\t\t\t\t_visitNode(base.documentElement, function(node) {\n\t\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tvar nodeClassNames = node.getAttribute('class')\n\t\t\t\t\t\t// can be null if the attribute does not exist\n\t\t\t\t\t\tif (nodeClassNames) {\n\t\t\t\t\t\t\t// before splitting and iterating just compare them for the most common case\n\t\t\t\t\t\t\tvar matches = classNames === nodeClassNames;\n\t\t\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\t\t\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames)\n\t\t\t\t\t\t\t\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(matches) {\n\t\t\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ls;\n\t\t});\n\t},\n\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.localName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.nodeName = node.target = target;\n\t\tnode.nodeValue = node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9 && this.documentElement || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\n\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix || '';\n\tvar uri = node.namespaceURI;\n\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\n\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\n\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\n\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\n\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\n\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\n\t// so serializing empty namespace value like xmlns:ds=\"\" would produce an invalid XML document.\n\tif (!uri) {\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) {\n\t\treturn false;\n\t}\n\n\tvar i = visibleNamespaces.length\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\tif (ns.prefix === prefix) {\n\t\t\treturn ns.namespace !== uri;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n * Well-formed constraint: No < in Attribute Values\n * > The replacement text of any entity referred to directly or indirectly\n * > in an attribute value must not contain a <.\n * @see https://www.w3.org/TR/xml11/#CleanAttrVals\n * @see https://www.w3.org/TR/xml11/#NT-AttValue\n *\n * Literal whitespace other than space that appear in attribute values\n * are serialized as their entity references, so they will be preserved.\n * (In contrast to whitespace literals in the input which are normalized to spaces)\n * @see https://www.w3.org/TR/xml11/#AVNormalize\n * @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes\n */\nfunction addSerializedAttribute(buf, qualifiedName, value) {\n\tbuf.push(' ', qualifiedName, '=\"', value.replace(/[<>&\"\\t\\n\\r]/g, _xmlEncoder), '\"')\n}\n\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif (!visibleNamespaces) {\n\t\tvisibleNamespaces = [];\n\t}\n\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\n\t\tisHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML\n\n\t\tvar prefixedNodeName = nodeName\n\t\tif (!isHTML && !node.prefix && node.namespaceURI) {\n\t\t\tvar defaultNS\n\t\t\t// lookup current default ns from `xmlns` attribute\n\t\t\tfor (var ai = 0; ai < attrs.length; ai++) {\n\t\t\t\tif (attrs.item(ai).name === 'xmlns') {\n\t\t\t\t\tdefaultNS = attrs.item(ai).value\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!defaultNS) {\n\t\t\t\t// lookup current default ns in visibleNamespaces\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.prefix === '' && namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tdefaultNS = namespace.namespace\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (defaultNS !== node.namespaceURI) {\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tif (namespace.prefix) {\n\t\t\t\t\t\t\tprefixedNodeName = namespace.prefix + ':' + nodeName\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbuf.push('<', prefixedNodeName);\n\n\t\tfor(var i=0;i');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn addSerializedAttribute(buf, node.name, node.value);\n\tcase TEXT_NODE:\n\t\t/**\n\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\n\t\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\n\t\t * `&` and `<` respectively.\n\t\t * The right angle bracket (>) may be represented using the string \" > \", and must, for compatibility,\n\t\t * be escaped using either `>` or a character reference when it appears in the string `]]>` in content,\n\t\t * when that string is not marking the end of a CDATA section.\n\t\t *\n\t\t * In the content of elements, character data is any string of characters\n\t\t * which does not contain the start-delimiter of any markup\n\t\t * and does not include the CDATA-section-close delimiter, `]]>`.\n\t\t *\n\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t * @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node\n\t\t */\n\t\treturn buf.push(node.data\n\t\t\t.replace(/[<&>]/g,_xmlEncoder)\n\t\t);\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n", + "var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\n", + "var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//,\n * and raw CDATA nodes.\n *\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\n\nfunction shouldIgnoreNode (node) {\n return node.nodeType === TEXT_NODE\n || node.nodeType === COMMENT_NODE\n || node.nodeType === CDATA_NODE;\n}\n\n/**\n * Check if the node is empty. Some plist file has such node:\n * \n * this node shoud be ignored.\n *\n * @see https://github.com/TooTallNate/plist.js/issues/66\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\nfunction isEmptyNode(node){\n if(!node.childNodes || node.childNodes.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction invariant(test, message) {\n if (!test) {\n throw new Error(message);\n }\n}\n\n/**\n * Parses a Plist XML string. Returns an Object.\n *\n * @param {String} xml - the XML String to decode\n * @returns {Mixed} the decoded value from the Plist XML\n * @api public\n */\n\nfunction parse (xml) {\n var doc = new DOMParser().parseFromString(xml);\n invariant(\n doc.documentElement.nodeName === 'plist',\n 'malformed document. First element should be '\n );\n var plist = parsePlistXML(doc.documentElement);\n\n // the root node gets interpreted as an Array,\n // so pull out the inner data first\n if (plist.length == 1) plist = plist[0];\n\n return plist;\n}\n\n/**\n * Convert an XML based plist document into a JSON representation.\n *\n * @param {Object} xml_node - current XML node in the plist\n * @returns {Mixed} built up JSON object\n * @api private\n */\n\nfunction parsePlistXML (node) {\n var i, new_obj, key, val, new_arr, res, counter, type;\n\n if (!node)\n return null;\n\n if (node.nodeName === 'plist') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n new_arr.push( parsePlistXML(node.childNodes[i]));\n }\n }\n return new_arr;\n } else if (node.nodeName === 'dict') {\n new_obj = {};\n key = null;\n counter = 0;\n if (isEmptyNode(node)) {\n return new_obj;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (shouldIgnoreNode(node.childNodes[i])) continue;\n if (counter % 2 === 0) {\n invariant(\n node.childNodes[i].nodeName === 'key',\n 'Missing key while parsing .'\n );\n key = parsePlistXML(node.childNodes[i]);\n } else {\n invariant(\n node.childNodes[i].nodeName !== 'key',\n 'Unexpected key \"'\n + parsePlistXML(node.childNodes[i])\n + '\" while parsing .'\n );\n new_obj[key] = parsePlistXML(node.childNodes[i]);\n }\n counter += 1;\n }\n if (counter % 2 === 1) {\n throw new Error('Missing value for \"' + key + '\" while parsing ');\n }\n return new_obj;\n\n } else if (node.nodeName === 'array') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n res = parsePlistXML(node.childNodes[i]);\n if (null != res) new_arr.push(res);\n }\n }\n return new_arr;\n\n } else if (node.nodeName === '#text') {\n // TODO: what should we do with text types? (CDATA sections)\n\n } else if (node.nodeName === 'key') {\n if (isEmptyNode(node)) {\n return '';\n }\n return node.childNodes[0].nodeValue;\n } else if (node.nodeName === 'string') {\n res = '';\n if (isEmptyNode(node)) {\n return res;\n }\n for (i=0; i < node.childNodes.length; i++) {\n var type = node.childNodes[i].nodeType;\n if (type === TEXT_NODE || type === CDATA_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return res;\n\n } else if (node.nodeName === 'integer') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as integer.'\n );\n return parseInt(node.childNodes[0].nodeValue, 10);\n\n } else if (node.nodeName === 'real') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as real.'\n );\n res = '';\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return parseFloat(res);\n\n } else if (node.nodeName === 'data') {\n res = '';\n if (isEmptyNode(node)) {\n return Buffer.from(res, 'base64');\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue.replace(/\\s+/g, '');\n }\n }\n return Buffer.from(res, 'base64');\n\n } else if (node.nodeName === 'date') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as Date.'\n )\n return new Date(node.childNodes[0].nodeValue);\n\n } else if (node.nodeName === 'true') {\n return true;\n\n } else if (node.nodeName === 'false') {\n return false;\n }\n}\n", + "/**\n * Module dependencies.\n */\n\nvar base64 = require('base64-js');\nvar xmlbuilder = require('xmlbuilder');\n\n/**\n * Module exports.\n */\n\nexports.build = build;\n\n/**\n * Accepts a `Date` instance and returns an ISO date string.\n *\n * @param {Date} d - Date instance to serialize\n * @returns {String} ISO date string representation of `d`\n * @api private\n */\n\nfunction ISODateString(d){\n function pad(n){\n return n < 10 ? '0' + n : n;\n }\n return d.getUTCFullYear()+'-'\n + pad(d.getUTCMonth()+1)+'-'\n + pad(d.getUTCDate())+'T'\n + pad(d.getUTCHours())+':'\n + pad(d.getUTCMinutes())+':'\n + pad(d.getUTCSeconds())+'Z';\n}\n\n/**\n * Returns the internal \"type\" of `obj` via the\n * `Object.prototype.toString()` trick.\n *\n * @param {Mixed} obj - any value\n * @returns {String} the internal \"type\" name\n * @api private\n */\n\nvar toString = Object.prototype.toString;\nfunction type (obj) {\n var m = toString.call(obj).match(/\\[object (.*)\\]/);\n return m ? m[1] : m;\n}\n\n/**\n * Generate an XML plist string from the input object `obj`.\n *\n * @param {Object} obj - the object to convert\n * @param {Object} [opts] - optional options object\n * @returns {String} converted plist XML string\n * @api public\n */\n\nfunction build (obj, opts) {\n var XMLHDR = {\n version: '1.0',\n encoding: 'UTF-8'\n };\n\n var XMLDTD = {\n pubid: '-//Apple//DTD PLIST 1.0//EN',\n sysid: 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'\n };\n\n var doc = xmlbuilder.create('plist');\n\n doc.dec(XMLHDR.version, XMLHDR.encoding, XMLHDR.standalone);\n doc.dtd(XMLDTD.pubid, XMLDTD.sysid);\n doc.att('version', '1.0');\n\n walk_obj(obj, doc);\n\n if (!opts) opts = {};\n // default `pretty` to `true`\n opts.pretty = opts.pretty !== false;\n return doc.end(opts);\n}\n\n/**\n * depth first, recursive traversal of a javascript object. when complete,\n * next_child contains a reference to the build XML object.\n *\n * @api private\n */\n\nfunction walk_obj(next, next_child) {\n var tag_type, i, prop;\n var name = type(next);\n\n if ('Undefined' == name) {\n return;\n } else if (Array.isArray(next)) {\n next_child = next_child.ele('array');\n for (i = 0; i < next.length; i++) {\n walk_obj(next[i], next_child);\n }\n\n } else if (Buffer.isBuffer(next)) {\n next_child.ele('data').raw(next.toString('base64'));\n\n } else if ('Object' == name) {\n next_child = next_child.ele('dict');\n for (prop in next) {\n if (next.hasOwnProperty(prop)) {\n next_child.ele('key').txt(prop);\n walk_obj(next[prop], next_child);\n }\n }\n\n } else if ('Number' == name) {\n // detect if this is an integer or real\n // TODO: add an ability to force one way or another via a \"cast\"\n tag_type = (next % 1 === 0) ? 'integer' : 'real';\n next_child.ele(tag_type).txt(next.toString());\n\n } else if ('BigInt' == name) {\n next_child.ele('integer').txt(next);\n\n } else if ('Date' == name) {\n next_child.ele('date').txt(ISODateString(new Date(next)));\n\n } else if ('Boolean' == name) {\n next_child.ele(next ? 'true' : 'false');\n\n } else if ('String' == name) {\n next_child.ele('string').txt(next);\n\n } else if ('ArrayBuffer' == name) {\n next_child.ele('data').raw(base64.fromByteArray(next));\n\n } else if (next && next.buffer && 'ArrayBuffer' == type(next.buffer)) {\n // a typed array\n next_child.ele('data').raw(base64.fromByteArray(new Uint8Array(next.buffer), next_child));\n\n } else if ('Null' === name) {\n next_child.ele('null').txt('');\n\n }\n}\n", + "/**\n * Module dependencies.\n */\n\nconst { DOMParser } = require('@xmldom/xmldom');\n\n/**\n * Module exports.\n */\n\nexports.parse = parse;\n\nvar TEXT_NODE = 3;\nvar CDATA_NODE = 4;\nvar COMMENT_NODE = 8;\n\n\n/**\n * We ignore raw text (usually whitespace), ,\n * and raw CDATA nodes.\n *\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\n\nfunction shouldIgnoreNode (node) {\n return node.nodeType === TEXT_NODE\n || node.nodeType === COMMENT_NODE\n || node.nodeType === CDATA_NODE;\n}\n\n/**\n * Check if the node is empty. Some plist file has such node:\n * \n * this node shoud be ignored.\n *\n * @see https://github.com/TooTallNate/plist.js/issues/66\n * @param {Element} node\n * @returns {Boolean}\n * @api private\n */\nfunction isEmptyNode(node){\n if(!node.childNodes || node.childNodes.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction invariant(test, message) {\n if (!test) {\n throw new Error(message);\n }\n}\n\n/**\n * Parses a Plist XML string. Returns an Object.\n *\n * @param {String} xml - the XML String to decode\n * @returns {Mixed} the decoded value from the Plist XML\n * @api public\n */\n\nfunction parse (xml) {\n var doc = new DOMParser().parseFromString(xml);\n invariant(\n doc.documentElement.nodeName === 'plist',\n 'malformed document. First element should be '\n );\n var plist = parsePlistXML(doc.documentElement);\n\n // the root node gets interpreted as an Array,\n // so pull out the inner data first\n if (plist.length == 1) plist = plist[0];\n\n return plist;\n}\n\n/**\n * Convert an XML based plist document into a JSON representation.\n *\n * @param {Object} xml_node - current XML node in the plist\n * @returns {Mixed} built up JSON object\n * @api private\n */\n\nfunction parsePlistXML (node) {\n var i, new_obj, key, val, new_arr, res, counter, type;\n\n if (!node)\n return null;\n\n if (node.nodeName === 'plist') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n new_arr.push( parsePlistXML(node.childNodes[i]));\n }\n }\n return new_arr;\n } else if (node.nodeName === 'dict') {\n new_obj = {};\n key = null;\n counter = 0;\n if (isEmptyNode(node)) {\n return new_obj;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (shouldIgnoreNode(node.childNodes[i])) continue;\n if (counter % 2 === 0) {\n invariant(\n node.childNodes[i].nodeName === 'key',\n 'Missing key while parsing .'\n );\n key = parsePlistXML(node.childNodes[i]);\n } else {\n invariant(\n node.childNodes[i].nodeName !== 'key',\n 'Unexpected key \"'\n + parsePlistXML(node.childNodes[i])\n + '\" while parsing .'\n );\n new_obj[key] = parsePlistXML(node.childNodes[i]);\n }\n counter += 1;\n }\n if (counter % 2 === 1) {\n new_obj[key] = '';\n }\n \n return new_obj;\n\n } else if (node.nodeName === 'array') {\n new_arr = [];\n if (isEmptyNode(node)) {\n return new_arr;\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (!shouldIgnoreNode(node.childNodes[i])) {\n res = parsePlistXML(node.childNodes[i]);\n if (null != res) new_arr.push(res);\n }\n }\n return new_arr;\n\n } else if (node.nodeName === '#text') {\n // TODO: what should we do with text types? (CDATA sections)\n\n } else if (node.nodeName === 'key') {\n if (isEmptyNode(node)) {\n return '';\n }\n\n invariant(\n node.childNodes[0].nodeValue !== '__proto__',\n '__proto__ keys can lead to prototype pollution. More details on CVE-2022-22912'\n );\n\n return node.childNodes[0].nodeValue;\n } else if (node.nodeName === 'string') {\n res = '';\n if (isEmptyNode(node)) {\n return res;\n }\n for (i=0; i < node.childNodes.length; i++) {\n var type = node.childNodes[i].nodeType;\n if (type === TEXT_NODE || type === CDATA_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return res;\n\n } else if (node.nodeName === 'integer') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as integer.'\n );\n return parseInt(node.childNodes[0].nodeValue, 10);\n\n } else if (node.nodeName === 'real') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as real.'\n );\n res = '';\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue;\n }\n }\n return parseFloat(res);\n\n } else if (node.nodeName === 'data') {\n res = '';\n if (isEmptyNode(node)) {\n return Buffer.from(res, 'base64');\n }\n for (i=0; i < node.childNodes.length; i++) {\n if (node.childNodes[i].nodeType === TEXT_NODE) {\n res += node.childNodes[i].nodeValue.replace(/\\s+/g, '');\n }\n }\n return Buffer.from(res, 'base64');\n\n } else if (node.nodeName === 'date') {\n invariant(\n !isEmptyNode(node),\n 'Cannot parse \"\" as Date.'\n )\n return new Date(node.childNodes[0].nodeValue);\n\n } else if (node.nodeName === 'null') {\n return null;\n\n } else if (node.nodeName === 'true') {\n return true;\n\n } else if (node.nodeName === 'false') {\n return false;\n } else {\n throw new Error('Invalid PLIST tag ' + node.nodeName);\n }\n}\n", "'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n", "// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n", "module.exports = require('./lib/_stream_duplex.js');\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};", - "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}", + "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, { hasUnpiped: false });\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}", - "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};", - "'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}", - "'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};", + "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};", + "'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}", + "'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};", "module.exports = require('events').EventEmitter;\n", "/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}", @@ -226,38 +274,48 @@ "exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n", "module.exports = require('./readable').Transform\n", "module.exports = require('./lib/_stream_writable.js');\n", + "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $floor = GetIntrinsic('%Math.floor%');\n\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(fn, 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(fn, 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n", "module.exports = require('stream-to').buffer", "exports.array = toArray\nexports.buffer = toBuffer\n\nfunction toArray(stream, callback) {\n var arr = []\n\n stream.on('data', onData)\n stream.once('end', onEnd)\n stream.once('error', callback)\n stream.once('error', cleanup)\n stream.once('close', cleanup)\n\n function onData(doc) {\n arr.push(doc)\n }\n\n function onEnd() {\n callback(null, arr)\n cleanup()\n }\n\n function cleanup() {\n arr = null\n stream.removeListener('data', onData)\n stream.removeListener('end', onEnd)\n stream.removeListener('error', callback)\n stream.removeListener('error', cleanup)\n stream.removeListener('close', cleanup)\n }\n\n return stream\n}\n\nfunction toBuffer(stream, callback) {\n toArray(stream, function (err, arr) {\n if (err || !arr)\n callback(err)\n else\n callback(null, Buffer.concat(arr))\n })\n\n return stream\n}", "'use strict';\n\nvar util = require('util');\nvar stream = require('stream');\n\nmodule.exports.createReadStream = function (object, options) {\n return new MultiStream (object, options);\n};\n\nvar MultiStream = function (object, options) {\n if (object instanceof Buffer || typeof object === 'string') {\n options = options || {};\n stream.Readable.call(this, {\n highWaterMark: options.highWaterMark,\n encoding: options.encoding\n });\n } else {\n stream.Readable.call(this, { objectMode: true });\n }\n this._object = object;\n};\n\nutil.inherits(MultiStream, stream.Readable);\n\nMultiStream.prototype._read = function () {\n this.push(this._object);\n this._object = null;\n};", "var nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};", "\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n", + "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n", + "module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var assign, isArray, isEmpty, isFunction, isObject, isPlainObject,\n slice = [].slice,\n hasProp = {}.hasOwnProperty;\n\n assign = function() {\n var i, key, len, source, sources, target;\n target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n if (isFunction(Object.assign)) {\n Object.assign.apply(null, arguments);\n } else {\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n if (source != null) {\n for (key in source) {\n if (!hasProp.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n isFunction = function(val) {\n return !!val && Object.prototype.toString.call(val) === '[object Function]';\n };\n\n isObject = function(val) {\n var ref;\n return !!val && ((ref = typeof val) === 'function' || ref === 'object');\n };\n\n isArray = function(val) {\n if (isFunction(Array.isArray)) {\n return Array.isArray(val);\n } else {\n return Object.prototype.toString.call(val) === '[object Array]';\n }\n };\n\n isEmpty = function(val) {\n var key;\n if (isArray(val)) {\n return !val.length;\n } else {\n for (key in val) {\n if (!hasProp.call(val, key)) continue;\n return false;\n }\n return true;\n }\n };\n\n isPlainObject = function(val) {\n var ctor, proto;\n return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));\n };\n\n module.exports.assign = assign;\n\n module.exports.isFunction = isFunction;\n\n module.exports.isObject = isObject;\n\n module.exports.isArray = isArray;\n\n module.exports.isEmpty = isEmpty;\n\n module.exports.isPlainObject = isPlainObject;\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute;\n\n module.exports = XMLAttribute = (function() {\n function XMLAttribute(parent, name, value) {\n this.options = parent.options;\n this.stringify = parent.stringify;\n if (name == null) {\n throw new Error(\"Missing attribute name of element \" + parent.name);\n }\n if (value == null) {\n throw new Error(\"Missing attribute value for attribute \" + name + \" of element \" + parent.name);\n }\n this.name = this.stringify.attName(name);\n this.value = this.stringify.attValue(value);\n }\n\n XMLAttribute.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLAttribute.prototype.toString = function(options) {\n return this.options.writer.set(options).attribute(this);\n };\n\n return XMLAttribute;\n\n })();\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLCData = (function(superClass) {\n extend(XMLCData, superClass);\n\n function XMLCData(parent, text) {\n XMLCData.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing CDATA text\");\n }\n this.text = this.stringify.cdata(text);\n }\n\n XMLCData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCData.prototype.toString = function(options) {\n return this.options.writer.set(options).cdata(this);\n };\n\n return XMLCData;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLComment, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLComment = (function(superClass) {\n extend(XMLComment, superClass);\n\n function XMLComment(parent, text) {\n XMLComment.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing comment text\");\n }\n this.text = this.stringify.comment(text);\n }\n\n XMLComment.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLComment.prototype.toString = function(options) {\n return this.options.writer.set(options).comment(this);\n };\n\n return XMLComment;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDAttList, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDAttList = (function(superClass) {\n extend(XMLDTDAttList, superClass);\n\n function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n XMLDTDAttList.__super__.constructor.call(this, parent);\n if (elementName == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (attributeName == null) {\n throw new Error(\"Missing DTD attribute name\");\n }\n if (!attributeType) {\n throw new Error(\"Missing DTD attribute type\");\n }\n if (!defaultValueType) {\n throw new Error(\"Missing DTD attribute default\");\n }\n if (defaultValueType.indexOf('#') !== 0) {\n defaultValueType = '#' + defaultValueType;\n }\n if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT\");\n }\n if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Default value only applies to #FIXED or #DEFAULT\");\n }\n this.elementName = this.stringify.eleName(elementName);\n this.attributeName = this.stringify.attName(attributeName);\n this.attributeType = this.stringify.dtdAttType(attributeType);\n this.defaultValue = this.stringify.dtdAttDefault(defaultValue);\n this.defaultValueType = defaultValueType;\n }\n\n XMLDTDAttList.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdAttList(this);\n };\n\n return XMLDTDAttList;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDElement, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDElement = (function(superClass) {\n extend(XMLDTDElement, superClass);\n\n function XMLDTDElement(parent, name, value) {\n XMLDTDElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (!value) {\n value = '(#PCDATA)';\n }\n if (Array.isArray(value)) {\n value = '(' + value.join(',') + ')';\n }\n this.name = this.stringify.eleName(name);\n this.value = this.stringify.dtdElementValue(value);\n }\n\n XMLDTDElement.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdElement(this);\n };\n\n return XMLDTDElement;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDEntity, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDEntity = (function(superClass) {\n extend(XMLDTDEntity, superClass);\n\n function XMLDTDEntity(parent, pe, name, value) {\n XMLDTDEntity.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing entity name\");\n }\n if (value == null) {\n throw new Error(\"Missing entity value\");\n }\n this.pe = !!pe;\n this.name = this.stringify.eleName(name);\n if (!isObject(value)) {\n this.value = this.stringify.dtdEntityValue(value);\n } else {\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public and/or system identifiers are required for an external entity\");\n }\n if (value.pubID && !value.sysID) {\n throw new Error(\"System identifier is required for a public external entity\");\n }\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n if (value.nData != null) {\n this.nData = this.stringify.dtdNData(value.nData);\n }\n if (this.pe && this.nData) {\n throw new Error(\"Notation declaration is not allowed in a parameter entity\");\n }\n }\n }\n\n XMLDTDEntity.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdEntity(this);\n };\n\n return XMLDTDEntity;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDNotation, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDNotation = (function(superClass) {\n extend(XMLDTDNotation, superClass);\n\n function XMLDTDNotation(parent, name, value) {\n XMLDTDNotation.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing notation name\");\n }\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public or system identifiers are required for an external entity\");\n }\n this.name = this.stringify.eleName(name);\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n }\n\n XMLDTDNotation.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdNotation(this);\n };\n\n return XMLDTDNotation;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDeclaration, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDeclaration = (function(superClass) {\n extend(XMLDeclaration, superClass);\n\n function XMLDeclaration(parent, version, encoding, standalone) {\n var ref;\n XMLDeclaration.__super__.constructor.call(this, parent);\n if (isObject(version)) {\n ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;\n }\n if (!version) {\n version = '1.0';\n }\n this.version = this.stringify.xmlVersion(version);\n if (encoding != null) {\n this.encoding = this.stringify.xmlEncoding(encoding);\n }\n if (standalone != null) {\n this.standalone = this.stringify.xmlStandalone(standalone);\n }\n }\n\n XMLDeclaration.prototype.toString = function(options) {\n return this.options.writer.set(options).declaration(this);\n };\n\n return XMLDeclaration;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n module.exports = XMLDocType = (function(superClass) {\n extend(XMLDocType, superClass);\n\n function XMLDocType(parent, pubID, sysID) {\n var ref, ref1;\n XMLDocType.__super__.constructor.call(this, parent);\n this.documentObject = parent;\n if (isObject(pubID)) {\n ref = pubID, pubID = ref.pubID, sysID = ref.sysID;\n }\n if (sysID == null) {\n ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1];\n }\n if (pubID != null) {\n this.pubID = this.stringify.dtdPubID(pubID);\n }\n if (sysID != null) {\n this.sysID = this.stringify.dtdSysID(sysID);\n }\n }\n\n XMLDocType.prototype.element = function(name, value) {\n var child;\n child = new XMLDTDElement(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var child;\n child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.entity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, false, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.pEntity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, true, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.notation = function(name, value) {\n var child;\n child = new XMLDTDNotation(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.toString = function(options) {\n return this.options.writer.set(options).docType(this);\n };\n\n XMLDocType.prototype.ele = function(name, value) {\n return this.element(name, value);\n };\n\n XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);\n };\n\n XMLDocType.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocType.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocType.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n XMLDocType.prototype.up = function() {\n return this.root() || this.documentObject;\n };\n\n return XMLDocType;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isPlainObject = require('./Utility').isPlainObject;\n\n XMLNode = require('./XMLNode');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocument = (function(superClass) {\n extend(XMLDocument, superClass);\n\n function XMLDocument(options) {\n XMLDocument.__super__.constructor.call(this, null);\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.stringify = new XMLStringifier(options);\n this.isDocument = true;\n }\n\n XMLDocument.prototype.end = function(writer) {\n var writerOptions;\n if (!writer) {\n writer = this.options.writer;\n } else if (isPlainObject(writer)) {\n writerOptions = writer;\n writer = this.options.writer.set(writerOptions);\n }\n return writer.document(this);\n };\n\n XMLDocument.prototype.toString = function(options) {\n return this.options.writer.set(options).document(this);\n };\n\n return XMLDocument;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, isFunction, isObject, isPlainObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject;\n\n XMLElement = require('./XMLElement');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocumentCB = (function() {\n function XMLDocumentCB(options, onData, onEnd) {\n var writerOptions;\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter(options);\n } else if (isPlainObject(options.writer)) {\n writerOptions = options.writer;\n options.writer = new XMLStringWriter(writerOptions);\n }\n this.options = options;\n this.writer = options.writer;\n this.stringify = new XMLStringifier(options);\n this.onDataCallback = onData || function() {};\n this.onEndCallback = onEnd || function() {};\n this.currentNode = null;\n this.currentLevel = -1;\n this.openTags = {};\n this.documentStarted = false;\n this.documentCompleted = false;\n this.root = null;\n }\n\n XMLDocumentCB.prototype.node = function(name, attributes, text) {\n var ref1;\n if (name == null) {\n throw new Error(\"Missing node name\");\n }\n if (this.root && this.currentLevel === -1) {\n throw new Error(\"Document can only have one root node\");\n }\n this.openCurrent();\n name = name.valueOf();\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n this.currentNode = new XMLElement(this, name, attributes);\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n if (text != null) {\n this.text(text);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.element = function(name, attributes, text) {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.dtdElement.apply(this, arguments);\n } else {\n return this.node(name, attributes, text);\n }\n };\n\n XMLDocumentCB.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (!this.currentNode || this.currentNode.children) {\n throw new Error(\"att() can only be used immediately after an ele() call in callback mode\");\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.currentNode.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.text = function(value) {\n var node;\n this.openCurrent();\n node = new XMLText(this, value);\n this.onData(this.writer.text(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.cdata = function(value) {\n var node;\n this.openCurrent();\n node = new XMLCData(this, value);\n this.onData(this.writer.cdata(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.comment = function(value) {\n var node;\n this.openCurrent();\n node = new XMLComment(this, value);\n this.onData(this.writer.comment(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.raw = function(value) {\n var node;\n this.openCurrent();\n node = new XMLRaw(this, value);\n this.onData(this.writer.raw(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.instruction = function(target, value) {\n var i, insTarget, insValue, len, node;\n this.openCurrent();\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (i = 0, len = target.length; i < len; i++) {\n insTarget = target[i];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n node = new XMLProcessingInstruction(this, target, value);\n this.onData(this.writer.processingInstruction(node, this.currentLevel + 1));\n }\n return this;\n };\n\n XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {\n var node;\n this.openCurrent();\n if (this.documentStarted) {\n throw new Error(\"declaration() must be the first node\");\n }\n node = new XMLDeclaration(this, version, encoding, standalone);\n this.onData(this.writer.declaration(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {\n this.openCurrent();\n if (root == null) {\n throw new Error(\"Missing root node name\");\n }\n if (this.root) {\n throw new Error(\"dtd() must come before the root node\");\n }\n this.currentNode = new XMLDocType(this, pubID, sysID);\n this.currentNode.rootNodeName = root;\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n return this;\n };\n\n XMLDocumentCB.prototype.dtdElement = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDElement(this, name, value);\n this.onData(this.writer.dtdElement(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var node;\n this.openCurrent();\n node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.onData(this.writer.dtdAttList(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.entity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, false, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.pEntity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, true, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.notation = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDNotation(this, name, value);\n this.onData(this.writer.dtdNotation(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.up = function() {\n if (this.currentLevel < 0) {\n throw new Error(\"The document node has no parent\");\n }\n if (this.currentNode) {\n if (this.currentNode.children) {\n this.closeNode(this.currentNode);\n } else {\n this.openNode(this.currentNode);\n }\n this.currentNode = null;\n } else {\n this.closeNode(this.openTags[this.currentLevel]);\n }\n delete this.openTags[this.currentLevel];\n this.currentLevel--;\n return this;\n };\n\n XMLDocumentCB.prototype.end = function() {\n while (this.currentLevel >= 0) {\n this.up();\n }\n return this.onEnd();\n };\n\n XMLDocumentCB.prototype.openCurrent = function() {\n if (this.currentNode) {\n this.currentNode.children = true;\n return this.openNode(this.currentNode);\n }\n };\n\n XMLDocumentCB.prototype.openNode = function(node) {\n if (!node.isOpen) {\n if (!this.root && this.currentLevel === 0 && node instanceof XMLElement) {\n this.root = node;\n }\n this.onData(this.writer.openNode(node, this.currentLevel));\n return node.isOpen = true;\n }\n };\n\n XMLDocumentCB.prototype.closeNode = function(node) {\n if (!node.isClosed) {\n this.onData(this.writer.closeNode(node, this.currentLevel));\n return node.isClosed = true;\n }\n };\n\n XMLDocumentCB.prototype.onData = function(chunk) {\n this.documentStarted = true;\n return this.onDataCallback(chunk);\n };\n\n XMLDocumentCB.prototype.onEnd = function() {\n this.documentCompleted = true;\n return this.onEndCallback();\n };\n\n XMLDocumentCB.prototype.ele = function() {\n return this.element.apply(this, arguments);\n };\n\n XMLDocumentCB.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {\n return this.doctype(root, pubID, sysID);\n };\n\n XMLDocumentCB.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLDocumentCB.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.att = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.a = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocumentCB.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocumentCB.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n return XMLDocumentCB;\n\n })();\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLAttribute, XMLElement, XMLNode, isFunction, isObject, ref,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction;\n\n XMLNode = require('./XMLNode');\n\n XMLAttribute = require('./XMLAttribute');\n\n module.exports = XMLElement = (function(superClass) {\n extend(XMLElement, superClass);\n\n function XMLElement(parent, name, attributes) {\n XMLElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing element name\");\n }\n this.name = this.stringify.eleName(name);\n this.attributes = {};\n if (attributes != null) {\n this.attribute(attributes);\n }\n if (parent.isDocument) {\n this.isRoot = true;\n this.documentObject = parent;\n parent.rootObject = this;\n }\n }\n\n XMLElement.prototype.clone = function() {\n var att, attName, clonedSelf, ref1;\n clonedSelf = Object.create(this);\n if (clonedSelf.isRoot) {\n clonedSelf.documentObject = null;\n }\n clonedSelf.attributes = {};\n ref1 = this.attributes;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n clonedSelf.attributes[attName] = att.clone();\n }\n clonedSelf.children = [];\n this.children.forEach(function(child) {\n var clonedChild;\n clonedChild = child.clone();\n clonedChild.parent = clonedSelf;\n return clonedSelf.children.push(clonedChild);\n });\n return clonedSelf;\n };\n\n XMLElement.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLElement.prototype.removeAttribute = function(name) {\n var attName, i, len;\n if (name == null) {\n throw new Error(\"Missing attribute name\");\n }\n name = name.valueOf();\n if (Array.isArray(name)) {\n for (i = 0, len = name.length; i < len; i++) {\n attName = name[i];\n delete this.attributes[attName];\n }\n } else {\n delete this.attributes[name];\n }\n return this;\n };\n\n XMLElement.prototype.toString = function(options) {\n return this.options.writer.set(options).element(this);\n };\n\n XMLElement.prototype.att = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.a = function(name, value) {\n return this.attribute(name, value);\n };\n\n return XMLElement;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLProcessingInstruction, XMLRaw, XMLText, isEmpty, isFunction, isObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isEmpty = ref.isEmpty;\n\n XMLElement = null;\n\n XMLCData = null;\n\n XMLComment = null;\n\n XMLDeclaration = null;\n\n XMLDocType = null;\n\n XMLRaw = null;\n\n XMLText = null;\n\n XMLProcessingInstruction = null;\n\n module.exports = XMLNode = (function() {\n function XMLNode(parent) {\n this.parent = parent;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n this.children = [];\n if (!XMLElement) {\n XMLElement = require('./XMLElement');\n XMLCData = require('./XMLCData');\n XMLComment = require('./XMLComment');\n XMLDeclaration = require('./XMLDeclaration');\n XMLDocType = require('./XMLDocType');\n XMLRaw = require('./XMLRaw');\n XMLText = require('./XMLText');\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n }\n }\n\n XMLNode.prototype.element = function(name, attributes, text) {\n var childNode, item, j, k, key, lastChild, len, len1, ref1, val;\n lastChild = null;\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n item = name[j];\n lastChild = this.element(item);\n }\n } else if (isFunction(name)) {\n lastChild = this.element(name.apply());\n } else if (isObject(name)) {\n for (key in name) {\n if (!hasProp.call(name, key)) continue;\n val = name[key];\n if (isFunction(val)) {\n val = val.apply();\n }\n if ((isObject(val)) && (isEmpty(val))) {\n val = null;\n }\n if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {\n lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);\n } else if (!this.options.separateArrayItems && Array.isArray(val)) {\n for (k = 0, len1 = val.length; k < len1; k++) {\n item = val[k];\n childNode = {};\n childNode[key] = item;\n lastChild = this.element(childNode);\n }\n } else if (isObject(val)) {\n lastChild = this.element(key);\n lastChild.element(val);\n } else {\n lastChild = this.element(key, val);\n }\n }\n } else {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.text(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {\n lastChild = this.cdata(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {\n lastChild = this.comment(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {\n lastChild = this.raw(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {\n lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);\n } else {\n lastChild = this.node(name, attributes, text);\n }\n }\n if (lastChild == null) {\n throw new Error(\"Could not create any elements with: \" + name);\n }\n return lastChild;\n };\n\n XMLNode.prototype.insertBefore = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.insertAfter = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.remove = function() {\n var i, ref1;\n if (this.isRoot) {\n throw new Error(\"Cannot remove the root element\");\n }\n i = this.parent.children.indexOf(this);\n [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref1 = [])), ref1;\n return this.parent;\n };\n\n XMLNode.prototype.node = function(name, attributes, text) {\n var child, ref1;\n if (name != null) {\n name = name.valueOf();\n }\n attributes || (attributes = {});\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n child = new XMLElement(this, name, attributes);\n if (text != null) {\n child.text(text);\n }\n this.children.push(child);\n return child;\n };\n\n XMLNode.prototype.text = function(value) {\n var child;\n child = new XMLText(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.cdata = function(value) {\n var child;\n child = new XMLCData(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.comment = function(value) {\n var child;\n child = new XMLComment(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.commentBefore = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.commentAfter = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.raw = function(value) {\n var child;\n child = new XMLRaw(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.instruction = function(target, value) {\n var insTarget, insValue, instruction, j, len;\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (j = 0, len = target.length; j < len; j++) {\n insTarget = target[j];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n instruction = new XMLProcessingInstruction(this, target, value);\n this.children.push(instruction);\n }\n return this;\n };\n\n XMLNode.prototype.instructionBefore = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.instructionAfter = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.declaration = function(version, encoding, standalone) {\n var doc, xmldec;\n doc = this.document();\n xmldec = new XMLDeclaration(doc, version, encoding, standalone);\n if (doc.children[0] instanceof XMLDeclaration) {\n doc.children[0] = xmldec;\n } else {\n doc.children.unshift(xmldec);\n }\n return doc.root() || doc;\n };\n\n XMLNode.prototype.doctype = function(pubID, sysID) {\n var child, doc, doctype, i, j, k, len, len1, ref1, ref2;\n doc = this.document();\n doctype = new XMLDocType(doc, pubID, sysID);\n ref1 = doc.children;\n for (i = j = 0, len = ref1.length; j < len; i = ++j) {\n child = ref1[i];\n if (child instanceof XMLDocType) {\n doc.children[i] = doctype;\n return doctype;\n }\n }\n ref2 = doc.children;\n for (i = k = 0, len1 = ref2.length; k < len1; i = ++k) {\n child = ref2[i];\n if (child.isRoot) {\n doc.children.splice(i, 0, doctype);\n return doctype;\n }\n }\n doc.children.push(doctype);\n return doctype;\n };\n\n XMLNode.prototype.up = function() {\n if (this.isRoot) {\n throw new Error(\"The root node has no parent. Use doc() if you need to get the document object.\");\n }\n return this.parent;\n };\n\n XMLNode.prototype.root = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node.rootObject;\n } else if (node.isRoot) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.document = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.end = function(options) {\n return this.document().end(options);\n };\n\n XMLNode.prototype.prev = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i < 1) {\n throw new Error(\"Already at the first node\");\n }\n return this.parent.children[i - 1];\n };\n\n XMLNode.prototype.next = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i === -1 || i === this.parent.children.length - 1) {\n throw new Error(\"Already at the last node\");\n }\n return this.parent.children[i + 1];\n };\n\n XMLNode.prototype.importDocument = function(doc) {\n var clonedRoot;\n clonedRoot = doc.root().clone();\n clonedRoot.parent = this;\n clonedRoot.isRoot = false;\n this.children.push(clonedRoot);\n return this;\n };\n\n XMLNode.prototype.ele = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.doc = function() {\n return this.document();\n };\n\n XMLNode.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLNode.prototype.dtd = function(pubID, sysID) {\n return this.doctype(pubID, sysID);\n };\n\n XMLNode.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLNode.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.u = function() {\n return this.up();\n };\n\n XMLNode.prototype.importXMLBuilder = function(doc) {\n return this.importDocument(doc);\n };\n\n return XMLNode;\n\n })();\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLProcessingInstruction,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLProcessingInstruction = (function(superClass) {\n extend(XMLProcessingInstruction, superClass);\n\n function XMLProcessingInstruction(parent, target, value) {\n XMLProcessingInstruction.__super__.constructor.call(this, parent);\n if (target == null) {\n throw new Error(\"Missing instruction target\");\n }\n this.target = this.stringify.insTarget(target);\n if (value) {\n this.value = this.stringify.insValue(value);\n }\n }\n\n XMLProcessingInstruction.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLProcessingInstruction.prototype.toString = function(options) {\n return this.options.writer.set(options).processingInstruction(this);\n };\n\n return XMLProcessingInstruction;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNode, XMLRaw,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLRaw = (function(superClass) {\n extend(XMLRaw, superClass);\n\n function XMLRaw(parent, text) {\n XMLRaw.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing raw text\");\n }\n this.value = this.stringify.raw(text);\n }\n\n XMLRaw.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLRaw.prototype.toString = function(options) {\n return this.options.writer.set(options).raw(this);\n };\n\n return XMLRaw;\n\n })(XMLNode);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStreamWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStreamWriter = (function(superClass) {\n extend(XMLStreamWriter, superClass);\n\n function XMLStreamWriter(stream, options) {\n XMLStreamWriter.__super__.constructor.call(this, options);\n this.stream = stream;\n }\n\n XMLStreamWriter.prototype.document = function(doc) {\n var child, i, j, len, len1, ref, ref1, results;\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n child.isLastRootNode = false;\n }\n doc.children[doc.children.length - 1].isLastRootNode = true;\n ref1 = doc.children;\n results = [];\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n child = ref1[j];\n switch (false) {\n case !(child instanceof XMLDeclaration):\n results.push(this.declaration(child));\n break;\n case !(child instanceof XMLDocType):\n results.push(this.docType(child));\n break;\n case !(child instanceof XMLComment):\n results.push(this.comment(child));\n break;\n case !(child instanceof XMLProcessingInstruction):\n results.push(this.processingInstruction(child));\n break;\n default:\n results.push(this.element(child));\n }\n }\n return results;\n };\n\n XMLStreamWriter.prototype.attribute = function(att) {\n return this.stream.write(' ' + att.name + '=\"' + att.value + '\"');\n };\n\n XMLStreamWriter.prototype.cdata = function(node, level) {\n return this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.comment = function(node, level) {\n return this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.declaration = function(node, level) {\n this.stream.write(this.space(level));\n this.stream.write('');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.docType = function(node, level) {\n var child, i, len, ref;\n level || (level = 0);\n this.stream.write(this.space(level));\n this.stream.write(' 0) {\n this.stream.write(' [');\n this.stream.write(this.endline(node));\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n this.dtdAttList(child, level + 1);\n break;\n case !(child instanceof XMLDTDElement):\n this.dtdElement(child, level + 1);\n break;\n case !(child instanceof XMLDTDEntity):\n this.dtdEntity(child, level + 1);\n break;\n case !(child instanceof XMLDTDNotation):\n this.dtdNotation(child, level + 1);\n break;\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }\n this.stream.write(']');\n }\n this.stream.write(this.spacebeforeslash + '>');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.element = function(node, level) {\n var att, child, i, len, name, ref, ref1, space;\n level || (level = 0);\n space = this.space(level);\n this.stream.write(space + '<' + node.name);\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n this.stream.write('>');\n } else {\n this.stream.write(this.spacebeforeslash + '/>');\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n this.stream.write('>');\n this.stream.write(node.children[0].value);\n this.stream.write('');\n } else {\n this.stream.write('>' + this.newline);\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n switch (false) {\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLElement):\n this.element(child, level + 1);\n break;\n case !(child instanceof XMLRaw):\n this.raw(child, level + 1);\n break;\n case !(child instanceof XMLText):\n this.text(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }\n this.stream.write(space + '');\n }\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.processingInstruction = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.raw = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.text = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdAttList = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdElement = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdEntity = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdNotation = function(node, level) {\n this.stream.write(this.space(level) + '' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.endline = function(node) {\n if (!node.isLastRootNode) {\n return this.newline;\n } else {\n return '';\n }\n };\n\n return XMLStreamWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStringWriter = (function(superClass) {\n extend(XMLStringWriter, superClass);\n\n function XMLStringWriter(options) {\n XMLStringWriter.__super__.constructor.call(this, options);\n }\n\n XMLStringWriter.prototype.document = function(doc) {\n var child, i, len, r, ref;\n this.textispresent = false;\n r = '';\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDeclaration):\n return this.declaration(child);\n case !(child instanceof XMLDocType):\n return this.docType(child);\n case !(child instanceof XMLComment):\n return this.comment(child);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child);\n default:\n return this.element(child, 0);\n }\n }).call(this);\n }\n if (this.pretty && r.slice(-this.newline.length) === this.newline) {\n r = r.slice(0, -this.newline.length);\n }\n return r;\n };\n\n XMLStringWriter.prototype.attribute = function(att) {\n return ' ' + att.name + '=\"' + att.value + '\"';\n };\n\n XMLStringWriter.prototype.cdata = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.comment = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.declaration = function(node, level) {\n var r;\n r = this.space(level);\n r += '';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.docType = function(node, level) {\n var child, i, len, r, ref;\n level || (level = 0);\n r = this.space(level);\n r += ' 0) {\n r += ' [';\n r += this.newline;\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n return this.dtdAttList(child, level + 1);\n case !(child instanceof XMLDTDElement):\n return this.dtdElement(child, level + 1);\n case !(child instanceof XMLDTDEntity):\n return this.dtdEntity(child, level + 1);\n case !(child instanceof XMLDTDNotation):\n return this.dtdNotation(child, level + 1);\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n r += ']';\n }\n r += this.spacebeforeslash + '>';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.element = function(node, level) {\n var att, child, i, j, len, len1, name, r, ref, ref1, ref2, space, textispresentwasset;\n level || (level = 0);\n textispresentwasset = false;\n if (this.textispresent) {\n this.newline = '';\n this.pretty = false;\n } else {\n this.newline = this.newlinedefault;\n this.pretty = this.prettydefault;\n }\n space = this.space(level);\n r = '';\n r += space + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n r += '>' + this.newline;\n } else {\n r += this.spacebeforeslash + '/>' + this.newline;\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n r += '>';\n r += node.children[0].value;\n r += '' + this.newline;\n } else {\n if (this.dontprettytextnodes) {\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n if (child.value != null) {\n this.textispresent++;\n textispresentwasset = true;\n break;\n }\n }\n }\n if (this.textispresent) {\n this.newline = '';\n this.pretty = false;\n space = this.space(level);\n }\n r += '>' + this.newline;\n ref2 = node.children;\n for (j = 0, len1 = ref2.length; j < len1; j++) {\n child = ref2[j];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLElement):\n return this.element(child, level + 1);\n case !(child instanceof XMLRaw):\n return this.raw(child, level + 1);\n case !(child instanceof XMLText):\n return this.text(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n if (textispresentwasset) {\n this.textispresent--;\n }\n if (!this.textispresent) {\n this.newline = this.newlinedefault;\n this.pretty = this.prettydefault;\n }\n r += space + '' + this.newline;\n }\n return r;\n };\n\n XMLStringWriter.prototype.processingInstruction = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.raw = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.text = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.dtdAttList = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdElement = function(node, level) {\n return this.space(level) + '' + this.newline;\n };\n\n XMLStringWriter.prototype.dtdEntity = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdNotation = function(node, level) {\n var r;\n r = this.space(level) + '' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.openNode = function(node, level) {\n var att, name, r, ref;\n level || (level = 0);\n if (node instanceof XMLElement) {\n r = this.space(level) + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n r += (node.children ? '>' : '/>') + this.newline;\n return r;\n } else {\n r = this.space(level) + '') + this.newline;\n return r;\n }\n };\n\n XMLStringWriter.prototype.closeNode = function(node, level) {\n level || (level = 0);\n switch (false) {\n case !(node instanceof XMLElement):\n return this.space(level) + '' + this.newline;\n case !(node instanceof XMLDocType):\n return this.space(level) + ']>' + this.newline;\n }\n };\n\n return XMLStringWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringifier,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n hasProp = {}.hasOwnProperty;\n\n module.exports = XMLStringifier = (function() {\n function XMLStringifier(options) {\n this.assertLegalChar = bind(this.assertLegalChar, this);\n var key, ref, value;\n options || (options = {});\n this.noDoubleEncoding = options.noDoubleEncoding;\n ref = options.stringify || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[key] = value;\n }\n }\n\n XMLStringifier.prototype.eleName = function(val) {\n val = '' + val || '';\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.eleText = function(val) {\n val = '' + val || '';\n return this.assertLegalChar(this.elEscape(val));\n };\n\n XMLStringifier.prototype.cdata = function(val) {\n val = '' + val || '';\n val = val.replace(']]>', ']]]]>');\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.comment = function(val) {\n val = '' + val || '';\n if (val.match(/--/)) {\n throw new Error(\"Comment text cannot contain double-hypen: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.raw = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.attName = function(val) {\n return val = '' + val || '';\n };\n\n XMLStringifier.prototype.attValue = function(val) {\n val = '' + val || '';\n return this.attEscape(val);\n };\n\n XMLStringifier.prototype.insTarget = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.insValue = function(val) {\n val = '' + val || '';\n if (val.match(/\\?>/)) {\n throw new Error(\"Invalid processing instruction value: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlVersion = function(val) {\n val = '' + val || '';\n if (!val.match(/1\\.[0-9]+/)) {\n throw new Error(\"Invalid version number: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlEncoding = function(val) {\n val = '' + val || '';\n if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {\n throw new Error(\"Invalid encoding: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlStandalone = function(val) {\n if (val) {\n return \"yes\";\n } else {\n return \"no\";\n }\n };\n\n XMLStringifier.prototype.dtdPubID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdSysID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdElementValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttType = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttDefault = function(val) {\n if (val != null) {\n return '' + val || '';\n } else {\n return val;\n }\n };\n\n XMLStringifier.prototype.dtdEntityValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdNData = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.convertAttKey = '@';\n\n XMLStringifier.prototype.convertPIKey = '?';\n\n XMLStringifier.prototype.convertTextKey = '#text';\n\n XMLStringifier.prototype.convertCDataKey = '#cdata';\n\n XMLStringifier.prototype.convertCommentKey = '#comment';\n\n XMLStringifier.prototype.convertRawKey = '#raw';\n\n XMLStringifier.prototype.assertLegalChar = function(str) {\n var res;\n res = str.match(/[\\0\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/);\n if (res) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n return str;\n };\n\n XMLStringifier.prototype.elEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(//g, '>').replace(/\\r/g, ' ');\n };\n\n XMLStringifier.prototype.attEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/ 0) {\n return new Array(indent).join(this.indent);\n } else {\n return '';\n }\n } else {\n return '';\n }\n };\n\n return XMLWriterBase;\n\n })();\n\n}).call(this);\n", - "// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;\n\n ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;\n\n XMLDocument = require('./XMLDocument');\n\n XMLDocumentCB = require('./XMLDocumentCB');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n XMLStreamWriter = require('./XMLStreamWriter');\n\n module.exports.create = function(name, xmldec, doctype, options) {\n var doc, root;\n if (name == null) {\n throw new Error(\"Root element needs a name\");\n }\n options = assign({}, xmldec, doctype, options);\n doc = new XMLDocument(options);\n root = doc.element(name);\n if (!options.headless) {\n doc.declaration(options);\n if ((options.pubID != null) || (options.sysID != null)) {\n doc.doctype(options);\n }\n }\n return root;\n };\n\n module.exports.begin = function(options, onData, onEnd) {\n var ref1;\n if (isFunction(options)) {\n ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];\n options = {};\n }\n if (onData) {\n return new XMLDocumentCB(options, onData, onEnd);\n } else {\n return new XMLDocument(options);\n }\n };\n\n module.exports.stringWriter = function(options) {\n return new XMLStringWriter(options);\n };\n\n module.exports.streamWriter = function(stream, options) {\n return new XMLStreamWriter(stream, options);\n };\n\n}).call(this);\n", - "function DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax = new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n \tvar entityMap = isHTML?htmlEntity.entityMap:{'lt':'<','gt':'>','amp':'&','quot':'\"','apos':\"'\"};\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap['']= 'http://www.w3.org/1999/xhtml';\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace';\n\tif(source && typeof source === 'string'){\n\t\tsax.parse(source,defaultNSMap,entityMap);\n\t}else{\n\t\tsax.errorHandler.error(\"invalid doc source\");\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n \tif (this.locator) {\n \tthis.doc.documentURI = this.locator.systemId;\n \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\n\t var len = attrs.length;\n\t appendElement(this, el);\n\t this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t for (var i = 0 ; i < len; i++) {\n\t var namespaceURI = attrs.getURI(i);\n\t var value = attrs.getValue(i);\n\t var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t var ins = this.doc.createProcessingInstruction(target, data);\n\t this.locator && position(this.locator,ins)\n\t appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\n\t \tlocator.lineNumber = 0;\n\t }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t var comm = this.doc.createComment(chars);\n\t this.locator && position(this.locator,comm)\n\t appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t //used in characters() methods\n\t this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t if (impl && impl.createDocumentType) {\n\t var dt = impl.createDocumentType(name, publicId, systemId);\n\t this.locator && position(this.locator,dt)\n\t appendElement(this, dt);\n\t }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n * #comment(chars, start, length)\n * #startCDATA()\n * #endCDATA()\n * #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n * #endDTD()\n * #startEntity(name)\n * #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n * #elementDecl(name, model)\n * #externalEntityDecl(name, publicId, systemId)\n * #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\n * #resolveEntity(publicId, systemId)\n * #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n * #notationDecl(name, publicId, systemId) {};\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n if (!hander.currentElement) {\n hander.doc.appendChild(node);\n } else {\n hander.currentElement.appendChild(node);\n }\n}//appendChild and setAttributeNS are preformance key\n\n//if(typeof require == 'function'){\nvar htmlEntity = require('./entities');\nvar sax = require('./sax');\nvar XMLReader = sax.XMLReader;\nvar ParseError = sax.ParseError;\nvar DOMImplementation = exports.DOMImplementation = require('./dom').DOMImplementation;\nexports.XMLSerializer = require('./dom').XMLSerializer ;\nexports.DOMParser = DOMParser;\nexports.__DOMHandler = DOMHandler;\n//}\n", - "function copy(src,dest){\n\tfor(var p in src){\n\t\tdest[p] = src[p];\n\t}\n}\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknow Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\nvar htmlns = 'http://www.w3.org/1999/xhtml' ;\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE = NodeType.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE = NodeType.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE = NodeType.COMMENT_NODE = 8;\nvar DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE = NodeType.NOTATION_NODE = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR \t= ExceptionCode.INVALID_STATE_ERR \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR \t= ExceptionCode.SYNTAX_ERR \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR \t= ExceptionCode.NAMESPACE_ERR \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR \t= ExceptionCode.INVALID_ACCESS_ERR \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n/**\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0, \n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index unsigned long \n\t * Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index. \n\t */\n\titem: function(index) {\n\t\treturn this[index] || null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t\t\n\t\t\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\t\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n/**\n * @see http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490\n */\nfunction DOMImplementation(/* Object */ features) {\n\tthis._features = {};\n\tif (features) {\n\t\tfor (var feature in features) {\n\t\t\t this._features = features[feature];\n\t\t}\n\t}\n};\n\nDOMImplementation.prototype = {\n\thasFeature: function(/* string */ feature, /* string */ version) {\n\t\tvar versions = this._features[feature.toLowerCase()];\n\t\tif (versions && (!version || version in versions)) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateDocument:function(namespaceURI, qualifiedName, doctype){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype;\n\t\tif(doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif(qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI,qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateDocumentType:function(qualifiedName, publicId, systemId){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId;\n\t\tnode.systemId = systemId;\n\t\t// Introduced in DOM Level 2:\n\t\t//readonly attribute DOMString internalSubset;\n\t\t\n\t\t//TODO:..\n\t\t// readonly attribute NamedNodeMap entities;\n\t\t// readonly attribute NamedNodeMap notations;\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises \n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises \n\t\tthis.insertBefore(newChild,oldChild);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n // Introduced in DOM Level 2:\n hasAttributes:function(){\n \treturn this.attributes.length>0;\n },\n lookupPrefix:function(namespaceURI){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tfor(var n in map){\n \t\t\t\tif(map[n] == namespaceURI){\n \t\t\t\t\treturn n;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n lookupNamespaceURI:function(prefix){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tif(prefix in map){\n \t\t\t\treturn map[prefix] ;\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n isDefaultNamespace:function(namespaceURI){\n \tvar prefix = this.lookupPrefix(namespaceURI);\n \treturn prefix == null;\n }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '<' ||\n c == '>' && '>' ||\n c == '&' && '&' ||\n c == '\"' && '"' ||\n '&#'+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n }while(node=node.nextSibling)\n }\n}\n\n\n\nfunction Document(){\n}\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns == 'http://www.w3.org/2000/xmlns/'){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns == 'http://www.w3.org/2000/xmlns/'){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\nfunction _onUpdateChild(doc,el,newChild){\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif(newChild){\n\t\t\tcs[cs.length++] = newChild;\n\t\t}else{\n\t\t\t//console.log(1)\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile(child){\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild =child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t}\n\t}\n}\n\n/**\n * attributes;\n * children;\n * \n * writeable properties:\n * nodeValue,Attr:value,CharacterData:data\n * prefix\n */\nfunction _removeChild(parentNode,child){\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif(previous){\n\t\tprevious.nextSibling = next;\n\t}else{\n\t\tparentNode.firstChild = next\n\t}\n\tif(next){\n\t\tnext.previousSibling = previous;\n\t}else{\n\t\tparentNode.lastChild = previous;\n\t}\n\t_onUpdateChild(parentNode.ownerDocument,parentNode);\n\treturn child;\n}\n/**\n * preformance key(refChild == null)\n */\nfunction _insertBefore(parentNode,newChild,nextChild){\n\tvar cp = newChild.parentNode;\n\tif(cp){\n\t\tcp.removeChild(newChild);//remove and update\n\t}\n\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = newChild.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn newChild;\n\t\t}\n\t\tvar newLast = newChild.lastChild;\n\t}else{\n\t\tnewFirst = newLast = newChild;\n\t}\n\tvar pre = nextChild ? nextChild.previousSibling : parentNode.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = nextChild;\n\t\n\t\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparentNode.firstChild = newFirst;\n\t}\n\tif(nextChild == null){\n\t\tparentNode.lastChild = newLast;\n\t}else{\n\t\tnextChild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parentNode;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parentNode.ownerDocument||parentNode,parentNode);\n\t//console.log(parentNode.lastChild.nextSibling == null)\n\tif (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnewChild.firstChild = newChild.lastChild = null;\n\t}\n\treturn newChild;\n}\nfunction _appendSingleChild(parentNode,newChild){\n\tvar cp = newChild.parentNode;\n\tif(cp){\n\t\tvar pre = parentNode.lastChild;\n\t\tcp.removeChild(newChild);//remove and update\n\t\tvar pre = parentNode.lastChild;\n\t}\n\tvar pre = parentNode.lastChild;\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = pre;\n\tnewChild.nextSibling = null;\n\tif(pre){\n\t\tpre.nextSibling = newChild;\n\t}else{\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument,parentNode,newChild);\n\treturn newChild;\n\t//console.log(\"__aa\",parentNode.lastChild.nextSibling == null)\n}\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName : '#document',\n\tnodeType : DOCUMENT_NODE,\n\tdoctype : null,\n\tdocumentElement : null,\n\t_inc : 1,\n\t\n\tinsertBefore : function(newChild, refChild){//raises \n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\tif(this.documentElement == null && newChild.nodeType == ELEMENT_NODE){\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t\t\n\t\treturn _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild;\n\t},\n\tremoveChild : function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\t\n\tgetElementsByClassName: function(className) {\n\t\tvar pattern = new RegExp(\"(^|\\\\s)\" + className + \"(\\\\s|$)\");\n\t\treturn new LiveNodeList(this, function(base) {\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base.documentElement, function(node) {\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE) {\n\t\t\t\t\tif(pattern.test(node.getAttribute('class'))) {\n\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\t\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.target = target;\n\t\tnode.nodeValue= node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\t\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\t\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\t\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t\t\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\t\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9 && this.documentElement || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\t\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\nfunction needNamespaceDefine(node,isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix||'';\n\tvar uri = node.namespaceURI;\n\tif (!prefix && !uri){\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === \"http://www.w3.org/XML/1998/namespace\" \n\t\t|| uri == 'http://www.w3.org/2000/xmlns/'){\n\t\treturn false;\n\t}\n\t\n\tvar i = visibleNamespaces.length \n\t//console.log('@@@@',node.tagName,prefix,uri,visibleNamespaces)\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\t//console.log(node.nodeType,node.tagName,ns.prefix,prefix)\n\t\tif (ns.prefix == prefix){\n\t\t\treturn ns.namespace != uri;\n\t\t}\n\t}\n\t//console.log(isHTML,uri,prefix=='')\n\t//if(isHTML && prefix ==null && uri == 'http://www.w3.org/1999/xhtml'){\n\t//\treturn false;\n\t//}\n\t//node.flag = '11111'\n\t//console.error(3,true,node.flag,node.prefix,node.namespaceURI)\n\treturn true;\n}\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tif (!visibleNamespaces) visibleNamespaces = [];\n\t\tvar startVisibleNamespaces = visibleNamespaces.length;\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\t\t\n\t\tisHTML = (htmlns === node.namespaceURI) ||isHTML \n\t\tbuf.push('<',nodeName);\n\t\t\n\t\t\n\t\t\n\t\tfor(var i=0;i');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces);\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces);\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces);\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn buf.push(' ',node.name,'=\"',node.value.replace(/[&\"]/g,_xmlEncoder),'\"');\n\tcase TEXT_NODE:\n\t\t/**\n\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\n\t\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\n\t\t * `&` and `<` respectively.\n\t\t * The right angle bracket (>) may be represented using the string \" > \", and must, for compatibility,\n\t\t * be escaped using either `>` or a character reference when it appears in the string `]]>` in content,\n\t\t * when that string is not marking the end of a CDATA section.\n\t\t *\n\t\t * In the content of elements, character data is any string of characters\n\t\t * which does not contain the start-delimiter of any markup\n\t\t * and does not include the CDATA-section-close delimiter, `]]>`.\n\t\t *\n\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t */\n\t\treturn buf.push(node.data\n\t\t\t.replace(/[<&]/g,_xmlEncoder)\n\t\t\t.replace(/]]>/g, ']]>')\n\t\t);\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i',\n amp: '&',\n quot: '\"',\n apos: \"'\",\n Agrave: \"À\",\n Aacute: \"Á\",\n Acirc: \"Â\",\n Atilde: \"Ã\",\n Auml: \"Ä\",\n Aring: \"Å\",\n AElig: \"Æ\",\n Ccedil: \"Ç\",\n Egrave: \"È\",\n Eacute: \"É\",\n Ecirc: \"Ê\",\n Euml: \"Ë\",\n Igrave: \"Ì\",\n Iacute: \"Í\",\n Icirc: \"Î\",\n Iuml: \"Ï\",\n ETH: \"Ð\",\n Ntilde: \"Ñ\",\n Ograve: \"Ò\",\n Oacute: \"Ó\",\n Ocirc: \"Ô\",\n Otilde: \"Õ\",\n Ouml: \"Ö\",\n Oslash: \"Ø\",\n Ugrave: \"Ù\",\n Uacute: \"Ú\",\n Ucirc: \"Û\",\n Uuml: \"Ü\",\n Yacute: \"Ý\",\n THORN: \"Þ\",\n szlig: \"ß\",\n agrave: \"à\",\n aacute: \"á\",\n acirc: \"â\",\n atilde: \"ã\",\n auml: \"ä\",\n aring: \"å\",\n aelig: \"æ\",\n ccedil: \"ç\",\n egrave: \"è\",\n eacute: \"é\",\n ecirc: \"ê\",\n euml: \"ë\",\n igrave: \"ì\",\n iacute: \"í\",\n icirc: \"î\",\n iuml: \"ï\",\n eth: \"ð\",\n ntilde: \"ñ\",\n ograve: \"ò\",\n oacute: \"ó\",\n ocirc: \"ô\",\n otilde: \"õ\",\n ouml: \"ö\",\n oslash: \"ø\",\n ugrave: \"ù\",\n uacute: \"ú\",\n ucirc: \"û\",\n uuml: \"ü\",\n yacute: \"ý\",\n thorn: \"þ\",\n yuml: \"ÿ\",\n nbsp: \"\\u00a0\",\n iexcl: \"¡\",\n cent: \"¢\",\n pound: \"£\",\n curren: \"¤\",\n yen: \"¥\",\n brvbar: \"¦\",\n sect: \"§\",\n uml: \"¨\",\n copy: \"©\",\n ordf: \"ª\",\n laquo: \"«\",\n not: \"¬\",\n shy: \"­­\",\n reg: \"®\",\n macr: \"¯\",\n deg: \"°\",\n plusmn: \"±\",\n sup2: \"²\",\n sup3: \"³\",\n acute: \"´\",\n micro: \"µ\",\n para: \"¶\",\n middot: \"·\",\n cedil: \"¸\",\n sup1: \"¹\",\n ordm: \"º\",\n raquo: \"»\",\n frac14: \"¼\",\n frac12: \"½\",\n frac34: \"¾\",\n iquest: \"¿\",\n times: \"×\",\n divide: \"÷\",\n forall: \"∀\",\n part: \"∂\",\n exist: \"∃\",\n empty: \"∅\",\n nabla: \"∇\",\n isin: \"∈\",\n notin: \"∉\",\n ni: \"∋\",\n prod: \"∏\",\n sum: \"∑\",\n minus: \"−\",\n lowast: \"∗\",\n radic: \"√\",\n prop: \"∝\",\n infin: \"∞\",\n ang: \"∠\",\n and: \"∧\",\n or: \"∨\",\n cap: \"∩\",\n cup: \"∪\",\n 'int': \"∫\",\n there4: \"∴\",\n sim: \"∼\",\n cong: \"≅\",\n asymp: \"≈\",\n ne: \"≠\",\n equiv: \"≡\",\n le: \"≤\",\n ge: \"≥\",\n sub: \"⊂\",\n sup: \"⊃\",\n nsub: \"⊄\",\n sube: \"⊆\",\n supe: \"⊇\",\n oplus: \"⊕\",\n otimes: \"⊗\",\n perp: \"⊥\",\n sdot: \"⋅\",\n Alpha: \"Α\",\n Beta: \"Β\",\n Gamma: \"Γ\",\n Delta: \"Δ\",\n Epsilon: \"Ε\",\n Zeta: \"Ζ\",\n Eta: \"Η\",\n Theta: \"Θ\",\n Iota: \"Ι\",\n Kappa: \"Κ\",\n Lambda: \"Λ\",\n Mu: \"Μ\",\n Nu: \"Ν\",\n Xi: \"Ξ\",\n Omicron: \"Ο\",\n Pi: \"Π\",\n Rho: \"Ρ\",\n Sigma: \"Σ\",\n Tau: \"Τ\",\n Upsilon: \"Υ\",\n Phi: \"Φ\",\n Chi: \"Χ\",\n Psi: \"Ψ\",\n Omega: \"Ω\",\n alpha: \"α\",\n beta: \"β\",\n gamma: \"γ\",\n delta: \"δ\",\n epsilon: \"ε\",\n zeta: \"ζ\",\n eta: \"η\",\n theta: \"θ\",\n iota: \"ι\",\n kappa: \"κ\",\n lambda: \"λ\",\n mu: \"μ\",\n nu: \"ν\",\n xi: \"ξ\",\n omicron: \"ο\",\n pi: \"π\",\n rho: \"ρ\",\n sigmaf: \"ς\",\n sigma: \"σ\",\n tau: \"τ\",\n upsilon: \"υ\",\n phi: \"φ\",\n chi: \"χ\",\n psi: \"ψ\",\n omega: \"ω\",\n thetasym: \"ϑ\",\n upsih: \"ϒ\",\n piv: \"ϖ\",\n OElig: \"Œ\",\n oelig: \"œ\",\n Scaron: \"Š\",\n scaron: \"š\",\n Yuml: \"Ÿ\",\n fnof: \"ƒ\",\n circ: \"ˆ\",\n tilde: \"˜\",\n ensp: \" \",\n emsp: \" \",\n thinsp: \" \",\n zwnj: \"‌\",\n zwj: \"‍\",\n lrm: \"‎\",\n rlm: \"‏\",\n ndash: \"–\",\n mdash: \"—\",\n lsquo: \"‘\",\n rsquo: \"’\",\n sbquo: \"‚\",\n ldquo: \"“\",\n rdquo: \"”\",\n bdquo: \"„\",\n dagger: \"†\",\n Dagger: \"‡\",\n bull: \"•\",\n hellip: \"…\",\n permil: \"‰\",\n prime: \"′\",\n Prime: \"″\",\n lsaquo: \"‹\",\n rsaquo: \"›\",\n oline: \"‾\",\n euro: \"€\",\n trade: \"™\",\n larr: \"←\",\n uarr: \"↑\",\n rarr: \"→\",\n darr: \"↓\",\n harr: \"↔\",\n crarr: \"↵\",\n lceil: \"⌈\",\n rceil: \"⌉\",\n lfloor: \"⌊\",\n rfloor: \"⌋\",\n loz: \"◊\",\n spades: \"♠\",\n clubs: \"♣\",\n hearts: \"♥\",\n diams: \"♦\"\n};\n", - "//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring \nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\t\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif(k in entityMap){\n\t\t\treturn entityMap[k]; \n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\t\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart+2,end);\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\t\t\t\t\t\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\t//console.error('#@@@@@@'+tagName)\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (qname in el.attributeNames) errorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\tel.addValue(qname, value, startIndex)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t//console.log(attrName,value,start,p)\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\t//console.dir(el)\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value.replace(/&#?\\w+;/g,entityReplacer), start)\n\t\t\t\t}else{\n\t\t\t\t\tif(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif(currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !attrName.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute \n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = 'http://www.w3.org/2000/xmlns/'\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value) \n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = 'http://www.w3.org/XML/1998/namespace';\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\t\t\t\t\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor(prefix in localNSMap){\n\t\t\t\tdomBuilder.endPrefixMapping(prefix) \n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\t\t\t\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n }\n\n declaration(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n }\n\n docType(node, options, level) {\n var child, i, len1, r, ref;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n r += ' 0) {\n r += ' [';\n r += this.endline(node, options, level);\n options.state = WriterState.InsideTag;\n ref = node.children;\n for (i = 0, len1 = ref.length; i < len1; i++) {\n child = ref[i];\n r += this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n r += ']';\n }\n // close tag\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n }\n\n element(node, options, level) {\n var att, attLen, child, childNodeCount, firstChildNode, i, j, len, len1, len2, name, prettySuppressed, r, ratt, ref, ref1, ref2, ref3, rline;\n level || (level = 0);\n prettySuppressed = false;\n // open tag\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<' + node.name;\n // attributes\n if (options.pretty && options.width > 0) {\n len = r.length;\n ref = node.attribs;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n ratt = this.attribute(att, options, level);\n attLen = ratt.length;\n if (len + attLen > options.width) {\n rline = this.indent(node, options, level + 1) + ratt;\n r += this.endline(node, options, level) + rline;\n len = rline.length;\n } else {\n rline = ' ' + ratt;\n r += rline;\n len += rline.length;\n }\n }\n } else {\n ref1 = node.attribs;\n for (name in ref1) {\n if (!hasProp.call(ref1, name)) continue;\n att = ref1[name];\n r += this.attribute(att, options, level);\n }\n }\n childNodeCount = node.children.length;\n firstChildNode = childNodeCount === 0 ? null : node.children[0];\n if (childNodeCount === 0 || node.children.every(function(e) {\n return (e.type === NodeType.Text || e.type === NodeType.Raw || e.type === NodeType.CData) && e.value === '';\n })) {\n // empty element\n if (options.allowEmpty) {\n r += '>';\n options.state = WriterState.CloseTag;\n r += '' + this.endline(node, options, level);\n } else {\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '/>' + this.endline(node, options, level);\n }\n } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw || firstChildNode.type === NodeType.CData) && (firstChildNode.value != null)) {\n // do not indent text-only nodes\n r += '>';\n options.state = WriterState.InsideTag;\n options.suppressPrettyCount++;\n prettySuppressed = true;\n r += this.writeChildNode(firstChildNode, options, level + 1);\n options.suppressPrettyCount--;\n prettySuppressed = false;\n options.state = WriterState.CloseTag;\n r += '' + this.endline(node, options, level);\n } else {\n // if ANY are a text node, then suppress pretty now\n if (options.dontPrettyTextNodes) {\n ref2 = node.children;\n for (i = 0, len1 = ref2.length; i < len1; i++) {\n child = ref2[i];\n if ((child.type === NodeType.Text || child.type === NodeType.Raw || child.type === NodeType.CData) && (child.value != null)) {\n options.suppressPrettyCount++;\n prettySuppressed = true;\n break;\n }\n }\n }\n // close the opening tag, after dealing with newline\n r += '>' + this.endline(node, options, level);\n options.state = WriterState.InsideTag;\n ref3 = node.children;\n // inner tags\n for (j = 0, len2 = ref3.length; j < len2; j++) {\n child = ref3[j];\n r += this.writeChildNode(child, options, level + 1);\n }\n // close tag\n options.state = WriterState.CloseTag;\n r += this.indent(node, options, level) + '';\n if (prettySuppressed) {\n options.suppressPrettyCount--;\n }\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n }\n this.closeNode(node, options, level);\n return r;\n }\n\n writeChildNode(node, options, level) {\n switch (node.type) {\n case NodeType.CData:\n return this.cdata(node, options, level);\n case NodeType.Comment:\n return this.comment(node, options, level);\n case NodeType.Element:\n return this.element(node, options, level);\n case NodeType.Raw:\n return this.raw(node, options, level);\n case NodeType.Text:\n return this.text(node, options, level);\n case NodeType.ProcessingInstruction:\n return this.processingInstruction(node, options, level);\n case NodeType.Dummy:\n return '';\n case NodeType.Declaration:\n return this.declaration(node, options, level);\n case NodeType.DocType:\n return this.docType(node, options, level);\n case NodeType.AttributeDeclaration:\n return this.dtdAttList(node, options, level);\n case NodeType.ElementDeclaration:\n return this.dtdElement(node, options, level);\n case NodeType.EntityDeclaration:\n return this.dtdEntity(node, options, level);\n case NodeType.NotationDeclaration:\n return this.dtdNotation(node, options, level);\n default:\n throw new Error(\"Unknown XML node type: \" + node.constructor.name);\n }\n }\n\n processingInstruction(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n }\n\n raw(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n }\n\n text(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n }\n\n dtdAttList(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n }\n\n dtdElement(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n }\n\n dtdEntity(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n }\n\n dtdNotation(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n }\n\n openNode(node, options, level) {}\n\n closeNode(node, options, level) {}\n\n openAttribute(att, options, level) {}\n\n closeAttribute(att, options, level) {}\n\n };\n\n}).call(this);\n", + "// Generated by CoffeeScript 2.4.1\n(function() {\n var NodeType, WriterState, XMLDOMImplementation, XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction;\n\n ({assign, isFunction} = require('./Utility'));\n\n XMLDOMImplementation = require('./XMLDOMImplementation');\n\n XMLDocument = require('./XMLDocument');\n\n XMLDocumentCB = require('./XMLDocumentCB');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n XMLStreamWriter = require('./XMLStreamWriter');\n\n NodeType = require('./NodeType');\n\n WriterState = require('./WriterState');\n\n // Creates a new document and returns the root node for\n // chain-building the document tree\n\n // `name` name of the root element\n\n // `xmldec.version` A version number string, e.g. 1.0\n // `xmldec.encoding` Encoding declaration, e.g. UTF-8\n // `xmldec.standalone` standalone document declaration: true or false\n\n // `doctype.pubID` public identifier of the external subset\n // `doctype.sysID` system identifier of the external subset\n\n // `options.headless` whether XML declaration and doctype will be included:\n // true or false\n // `options.keepNullNodes` whether nodes with null values will be kept\n // or ignored: true or false\n // `options.keepNullAttributes` whether attributes with null values will be\n // kept or ignored: true or false\n // `options.ignoreDecorators` whether decorator strings will be ignored when\n // converting JS objects: true or false\n // `options.separateArrayItems` whether array items are created as separate\n // nodes when passed as an object value: true or false\n // `options.noDoubleEncoding` whether existing html entities are encoded:\n // true or false\n // `options.stringify` a set of functions to use for converting values to\n // strings\n // `options.writer` the default XML writer to use for converting nodes to\n // string. If the default writer is not set, the built-in XMLStringWriter\n // will be used instead.\n module.exports.create = function(name, xmldec, doctype, options) {\n var doc, root;\n if (name == null) {\n throw new Error(\"Root element needs a name.\");\n }\n options = assign({}, xmldec, doctype, options);\n // create the document node\n doc = new XMLDocument(options);\n // add the root node\n root = doc.element(name);\n // prolog\n if (!options.headless) {\n doc.declaration(options);\n if ((options.pubID != null) || (options.sysID != null)) {\n doc.dtd(options);\n }\n }\n return root;\n };\n\n // Creates a new document and returns the document node for\n // chain-building the document tree\n\n // `options.keepNullNodes` whether nodes with null values will be kept\n // or ignored: true or false\n // `options.keepNullAttributes` whether attributes with null values will be\n // kept or ignored: true or false\n // `options.ignoreDecorators` whether decorator strings will be ignored when\n // converting JS objects: true or false\n // `options.separateArrayItems` whether array items are created as separate\n // nodes when passed as an object value: true or false\n // `options.noDoubleEncoding` whether existing html entities are encoded:\n // true or false\n // `options.stringify` a set of functions to use for converting values to\n // strings\n // `options.writer` the default XML writer to use for converting nodes to\n // string. If the default writer is not set, the built-in XMLStringWriter\n // will be used instead.\n\n // `onData` the function to be called when a new chunk of XML is output. The\n // string containing the XML chunk is passed to `onData` as its single\n // argument.\n // `onEnd` the function to be called when the XML document is completed with\n // `end`. `onEnd` does not receive any arguments.\n module.exports.begin = function(options, onData, onEnd) {\n if (isFunction(options)) {\n [onData, onEnd] = [options, onData];\n options = {};\n }\n if (onData) {\n return new XMLDocumentCB(options, onData, onEnd);\n } else {\n return new XMLDocument(options);\n }\n };\n\n module.exports.stringWriter = function(options) {\n return new XMLStringWriter(options);\n };\n\n module.exports.streamWriter = function(stream, options) {\n return new XMLStreamWriter(stream, options);\n };\n\n module.exports.implementation = new XMLDOMImplementation();\n\n module.exports.nodeType = NodeType;\n\n module.exports.writerState = WriterState;\n\n}).call(this);\n" ] } \ No newline at end of file diff --git a/dist/app-info-parser.min.js b/dist/app-info-parser.min.js new file mode 100644 index 0000000..2dc241c --- /dev/null +++ b/dist/app-info-parser.min.js @@ -0,0 +1,2 @@ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).AppInfoParser=e()}}(function(){return function(){return function e(t,r,n){function i(a,s){if(!r[a]){if(!t[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var f=r[a]={exports:{}};t[a][0].call(f.exports,function(e){return i(t[a][1][e]||e)},f,f.exports,e,t,r,n)}return r[a].exports}for(var o="function"==typeof require&&require,a=0;ae.length)&&(t=e.length);for(var r=0,n=new Array(t);r");(r=r.slice(n,i+8))&&(t=d(r))}return t}}])&&a(t.prototype,r),n&&a(t,n),Object.defineProperty(t,"prototype",{writable:!1}),s}();t.exports=x},{"./utils":5,"./zip":8,"bplist-parser":18,"cgbi-to-png":28,plist:93}],4:[function(e,t,r){"use strict";var n=e("bytebuffer");function i(){this.valueStringPool=null,this.typeStringPool=null,this.keyStringPool=null,this.package_id=0,this.responseMap={},this.entryMap={}}i.readBytes=function(e,t){for(var r=new Uint8Array(t),i=0;i0){r=i.readBytes(e,d);try{c[f]=n.wrap(r,"utf8",!0).toString("utf8")}catch(e){0}}else c[f]=""}else if(0!=(32768&(t=e.readUint16()))&&(t=((32767&t)<<16)+e.readUint16()),t>0){var p=2*t;r=i.readBytes(e,p);try{c[f]=n.wrap(r,"utf8",!0).toString("utf8")}catch(e){0}}0}return c},i.prototype.processTypeSpec=function(e){e.readShort(),e.readShort(),e.readInt(),e.readByte(),e.readByte(),e.readShort();var t=e.readInt();for(var r=new Array(t),n=0;n=n.dpi&&(n.dpi=t[i],n.icon=r["application-icon-"+t[i]])};for(var o in t)i(o);return 0!==Object.keys(r).length&&n.icon||(n.dpi=120,n.icon=e.application.icon[0]||"",r["applicataion-icon-120"]=n.icon),n.icon},findIpaIconPath:function(e){return e.CFBundleIcons&&e.CFBundleIcons.CFBundlePrimaryIcon&&e.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles&&e.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles.length?e.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles[e.CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles.length-1]:e.CFBundleIconFiles&&e.CFBundleIconFiles.length?e.CFBundleIconFiles[e.CFBundleIconFiles.length-1]:".app/Icon.png"},getBase64FromBuffer:function(e){return"data:image/png;base64,"+e.toString("base64")},decodeNullUnicode:function(e){return"string"==typeof e&&(e=e.replace(/\u0000/g,"")),e}}}).call(this)}).call(this,e("_process"))},{_process:97}],6:[function(e,t,r){"use strict";function n(e){"@babel/helpers - typeof";return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.buffer=t,this.cursor=0,this.strings=[],this.resources=[],this.document=null,this.parent=null,this.stack=[],this.debug=r.debug||!1}var t,r,n;return t=e,(r=[{key:"readU8",value:function(){this.debug&&console.group("readU8"),this.debug&&console.debug("cursor:",this.cursor);var e=this.buffer[this.cursor];return this.debug&&console.debug("value:",e),this.cursor+=1,this.debug&&console.groupEnd(),e}},{key:"readU16",value:function(){this.debug&&console.group("readU16"),this.debug&&console.debug("cursor:",this.cursor);var e=this.buffer.readUInt16LE(this.cursor);return this.debug&&console.debug("value:",e),this.cursor+=2,this.debug&&console.groupEnd(),e}},{key:"readS32",value:function(){this.debug&&console.group("readS32"),this.debug&&console.debug("cursor:",this.cursor);var e=this.buffer.readInt32LE(this.cursor);return this.debug&&console.debug("value:",e),this.cursor+=4,this.debug&&console.groupEnd(),e}},{key:"readU32",value:function(){this.debug&&console.group("readU32"),this.debug&&console.debug("cursor:",this.cursor);var e=this.buffer.readUInt32LE(this.cursor);return this.debug&&console.debug("value:",e),this.cursor+=4,this.debug&&console.groupEnd(),e}},{key:"readLength8",value:function(){this.debug&&console.group("readLength8");var e=this.readU8();return 128&e&&(e=(127&e)<<8,e+=this.readU8()),this.debug&&console.debug("length:",e),this.debug&&console.groupEnd(),e}},{key:"readLength16",value:function(){this.debug&&console.group("readLength16");var e=this.readU16();return 32768&e&&(e=(32767&e)<<16,e+=this.readU16()),this.debug&&console.debug("length:",e),this.debug&&console.groupEnd(),e}},{key:"readDimension",value:function(){this.debug&&console.group("readDimension");var e={value:null,unit:null,rawUnit:null},t=this.readU32(),r=255&e.value;switch(e.value=t>>8,e.rawUnit=r,r){case T:e.unit="mm";break;case N:e.unit="px";break;case w:e.unit="dp";break;case S:e.unit="sp";break;case k:e.unit="pt";break;case x:e.unit="in"}return this.debug&&console.groupEnd(),e}},{key:"readFraction",value:function(){this.debug&&console.group("readFraction");var e={value:null,type:null,rawType:null},t=this.readU32(),r=15&t;switch(e.value=this.convertIntToFloat(t>>4),e.rawType=r,r){case _:e.type="%";break;case E:e.type="%p"}return this.debug&&console.groupEnd(),e}},{key:"readHex24",value:function(){this.debug&&console.group("readHex24");var e=(16777215&this.readU32()).toString(16);return this.debug&&console.groupEnd(),e}},{key:"readHex32",value:function(){this.debug&&console.group("readHex32");var e=this.readU32().toString(16);return this.debug&&console.groupEnd(),e}},{key:"readTypedValue",value:function(){this.debug&&console.group("readTypedValue");var e={value:null,type:null,rawType:null},t=this.cursor,r=this.readU16();this.readU8();var n=this.readU8();switch(0===r&&(r=8),e.rawType=n,n){case C:e.value=this.readS32(),e.type="int_dec";break;case B:e.value=this.readS32(),e.type="int_hex";break;case j:var i=this.readS32();e.value=i>0?this.strings[i]:"",e.type="string";break;case P:var o=this.readU32();e.value="resourceId:0x".concat(o.toString(16)),e.type="reference";break;case D:e.value=0!==this.readS32(),e.type="boolean";break;case R:this.readU32(),e.value=null,e.type="null";break;case U:e.value=this.readHex24(),e.type="rgb8";break;case M:e.value=this.readHex24(),e.type="rgb4";break;case O:e.value=this.readHex32(),e.type="argb8";break;case L:e.value=this.readHex32(),e.type="argb4";break;case I:e.value=this.readDimension(),e.type="dimension";break;case A:e.value=this.readFraction(),e.type="fraction";break;default:var a=n.toString(16);console.debug("Not sure what to do with typed value of type 0x".concat(a,", falling back to reading an uint32.")),e.value=this.readU32(),e.type="unknown"}var s=t+r;if(this.cursor!==s){var u=n.toString(16),l=s-this.cursor;console.debug("Cursor is off by ".concat(l," bytes at ").concat(this.cursor," at supposed end of typed value of type 0x").concat(u,". The typed value started at offset ").concat(t," and is supposed to end at offset ").concat(s,". Ignoring the rest of the value.")),this.cursor=s}return this.debug&&console.groupEnd(),e}},{key:"convertIntToFloat",value:function(e){var t=new ArrayBuffer(4);return new Int32Array(t)[0]=e,new Float32Array(t)[0]}},{key:"readString",value:function(e){switch(this.debug&&console.group("readString",e),e){case"utf-8":var t=this.readLength8(e);this.debug&&console.debug("stringLength:",t);var r=this.readLength8(e);this.debug&&console.debug("byteLength:",r);var n=this.buffer.toString(e,this.cursor,this.cursor+=r);return this.debug&&console.debug("value:",n),this.debug&&console.groupEnd(),n;case"ucs2":return t=this.readLength16(e),this.debug&&console.debug("stringLength:",t),r=2*t,this.debug&&console.debug("byteLength:",r),n=this.buffer.toString(e,this.cursor,this.cursor+=r),this.debug&&console.debug("value:",n),this.debug&&console.groupEnd(),n;default:throw new Error("Unsupported encoding '".concat(e,"'"))}}},{key:"readChunkHeader",value:function(){this.debug&&console.group("readChunkHeader");var e={startOffset:this.cursor,chunkType:this.readU16(),headerSize:this.readU16(),chunkSize:this.readU32()};return this.debug&&console.debug("startOffset:",e.startOffset),this.debug&&console.debug("chunkType:",e.chunkType),this.debug&&console.debug("headerSize:",e.headerSize),this.debug&&console.debug("chunkSize:",e.chunkSize),this.debug&&console.groupEnd(),e}},{key:"readStringPool",value:function(e){if(this.debug&&console.group("readStringPool"),e.stringCount=this.readU32(),this.debug&&console.debug("stringCount:",e.stringCount),e.styleCount=this.readU32(),this.debug&&console.debug("styleCount:",e.styleCount),e.flags=this.readU32(),this.debug&&console.debug("flags:",e.flags),e.stringsStart=this.readU32(),this.debug&&console.debug("stringsStart:",e.stringsStart),e.stylesStart=this.readU32(),this.debug&&console.debug("stylesStart:",e.stylesStart),e.chunkType!==f)throw new Error("Invalid string pool header");for(var t=[],r=0,n=e.stringCount;r0&&(e.namespaceURI=this.strings[t]),e.nodeName=this.strings[r],this.readU16(),this.readU16();var n=this.readU16();this.readU16(),this.readU16(),this.readU16();for(var i=0;i0&&(e.namespaceURI=this.strings[t]),e.nodeName=e.name=this.strings[r],n>0&&("versionName"===e.name&&(this.strings[n]=this.strings[n].replace(/[^\d\w-.]/g,"")),e.value=this.strings[n]),e.typedValue=this.readTypedValue(),this.debug&&console.groupEnd(),e}},{key:"readXmlElementEnd",value:function(){return this.debug&&console.group("readXmlCData"),this.readU32(),this.readU32(),this.readS32(),this.readS32(),this.stack.pop(),this.parent=this.stack[this.stack.length-1],this.debug&&console.groupEnd(),null}},{key:"readXmlCData",value:function(){this.debug&&console.group("readXmlCData");var e={namespaceURI:null,nodeType:u,nodeName:"#cdata",data:null,typedValue:null};this.readU32(),this.readU32();var t=this.readS32();return t>0&&(e.data=this.strings[t]),e.typedValue=this.readTypedValue(),this.parent.childNodes.push(e),this.debug&&console.groupEnd(),e}},{key:"readNull",value:function(e){return this.debug&&console.group("readNull"),this.cursor+=e.chunkSize-e.headerSize,this.debug&&console.groupEnd(),null}},{key:"parse",value:function(){if(this.debug&&console.group("BinaryXmlParser.parse"),this.readChunkHeader().chunkType!==c)throw new Error("Invalid XML header");for(;this.cursor1&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.buffer=t,this.xmlParser=new a(this.buffer,r)}var t,r,n;return t=e,(r=[{key:"collapseAttributes",value:function(e){for(var t=Object.create(null),r=0,n=Array.from(e.attributes);r1&&void 0!==arguments[1]?arguments[1]:"buffer";return e=e.map(function(e){return l(e)}),new Promise(function(n,i){t.unzip.getBuffer(e,{type:r},function(e,t){e?i(e):n(t)})})}},{key:"getEntry",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"buffer";return e=l(e),new Promise(function(n,i){t.unzip.getBuffer([e],{type:r},function(t,r){t?i(t):n(r[e])})})}}])&&i(r.prototype,n),o&&i(r,o),Object.defineProperty(r,"prototype",{writable:!1}),t}();t.exports=f},{"./utils":5,"isomorphic-unzip":74,path:92}],9:[function(e,t,r){"use strict";function n(e,t){return void 0===t&&(t=Object),t&&"function"==typeof t.freeze?t.freeze(e):e}var i=n({HTML:"text/html",isHTML:function(e){return e===i.HTML},XML_APPLICATION:"application/xml",XML_TEXT:"text/xml",XML_XHTML_APPLICATION:"application/xhtml+xml",XML_SVG_IMAGE:"image/svg+xml"}),o=n({HTML:"http://www.w3.org/1999/xhtml",isHTML:function(e){return e===o.HTML},SVG:"http://www.w3.org/2000/svg",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"});r.assign=function(e,t){if(null===e||"object"!=typeof e)throw new TypeError("target is not an object");for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},r.find=function(e,t,r){if(void 0===r&&(r=Array.prototype),e&&"function"==typeof r.find)return r.find.call(e,t);for(var n=0;n=t+r||t?new java.lang.String(e,t,r)+"":e}function b(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}h.prototype.parseFromString=function(e,t){var r=this.options,n=new f,i=r.domBuilder||new d,a=r.errorHandler,s=r.locator,l=r.xmlns||{},h=/\/x?html?$/.test(t),p=h?o.HTML_ENTITIES:o.XML_ENTITIES;s&&i.setDocumentLocator(s),n.errorHandler=function(e,t,r){if(!e){if(t instanceof d)return t;e=t}var n={},i=e instanceof Function;function o(t){var o=e[t];!o&&i&&(o=2==e.length?function(r){e(t,r)}:e),n[t]=o&&function(e){o("[xmldom "+t+"]\t"+e+g(r))}||function(){}}return r=r||{},o("warning"),o("error"),o("fatalError"),n}(a,i,s),n.domBuilder=r.domBuilder||i,h&&(l[""]=u.HTML),l.xml=l.xml||u.XML;var y=r.normalizeLineEndings||c;return e&&"string"==typeof e?n.parse(y(e),l,p):n.errorHandler.error("invalid doc source"),i.doc},d.prototype={startDocument:function(){this.doc=(new s).createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(e,t,r,n){var i=this.doc,o=i.createElementNS(e,r||t),a=n.length;b(this,o),this.currentElement=o,this.locator&&p(this.locator,o);for(var s=0;s=0))throw new A(S,new Error(e.tagName+"@"+r));for(var i=t.length-1;n"==e&&">")||"&"==e&&"&"||'"'==e&&"""||"&#"+e.charCodeAt()+";"}function F(e,t){if(t(e))return!0;if(e=e.firstChild)do{if(F(e,t))return!0}while(e=e.nextSibling)}function z(){this.ownerDocument=this}function q(e,t,r,n){e&&e._inc++,r.namespaceURI===o.XMLNS&&delete t._nsMap[r.prefix?r.localName:""]}function X(e,t,r){if(e&&e._inc){e._inc++;var n=t.childNodes;if(r)n[n.length++]=r;else{for(var i=t.firstChild,o=0;i;)n[o++]=i,i=i.nextSibling;n.length=o,delete n[n.length]}}}function Z(e,t){var r=t.previousSibling,n=t.nextSibling;return r?r.nextSibling=n:e.firstChild=n,n?n.previousSibling=r:e.lastChild=r,t.parentNode=null,t.previousSibling=null,t.nextSibling=null,X(e.ownerDocument,e),t}function V(e){return e&&e.nodeType===P.DOCUMENT_TYPE_NODE}function H(e){return e&&e.nodeType===P.ELEMENT_NODE}function W(e){return e&&e.nodeType===P.TEXT_NODE}function G(e,t){var r=e.childNodes||[];if(i(r,H)||V(t))return!1;var n=i(r,V);return!(t&&n&&r.indexOf(n)>r.indexOf(t))}function K(e,t){var r=e.childNodes||[];if(i(r,function(e){return H(e)&&e!==t}))return!1;var n=i(r,V);return!(t&&n&&r.indexOf(n)>r.indexOf(t))}function $(e,t,r){if(!function(e){return e&&(e.nodeType===P.DOCUMENT_NODE||e.nodeType===P.DOCUMENT_FRAGMENT_NODE||e.nodeType===P.ELEMENT_NODE)}(e))throw new A(N,"Unexpected parent node type "+e.nodeType);if(r&&r.parentNode!==e)throw new A(S,"child not in parent");if(!function(e){return e&&(H(e)||W(e)||V(e)||e.nodeType===P.DOCUMENT_FRAGMENT_NODE||e.nodeType===P.COMMENT_NODE||e.nodeType===P.PROCESSING_INSTRUCTION_NODE)}(t)||V(t)&&e.nodeType!==P.DOCUMENT_NODE)throw new A(N,"Unexpected node type "+t.nodeType+" for parent node type "+e.nodeType)}function Y(e,t,r){var n=e.childNodes||[],o=t.childNodes||[];if(t.nodeType===P.DOCUMENT_FRAGMENT_NODE){var a=o.filter(H);if(a.length>1||i(o,W))throw new A(N,"More than one element or text in fragment");if(1===a.length&&!K(e,r))throw new A(N,"Element in fragment can not be inserted before doctype")}if(H(t)&&!K(e,r))throw new A(N,"Only one element can be added and only after doctype");if(V(t)){if(i(n,function(e){return V(e)&&e!==r}))throw new A(N,"Only one doctype is allowed");var s=i(n,H);if(r&&n.indexOf(s)1||i(o,W))throw new A(N,"More than one element or text in fragment");if(1===a.length&&!G(e,r))throw new A(N,"Element in fragment can not be inserted before doctype")}if(H(t)&&!G(e,r))throw new A(N,"Only one element can be added and only after doctype");if(V(t)){if(i(n,V))throw new A(N,"Only one doctype is allowed");var s=i(n,H);if(r&&n.indexOf(s)=0;x--){if(""===(T=i[x]).prefix&&T.namespace===e.namespaceURI){c=T.namespace;break}}if(c!==e.namespaceURI)for(x=i.length-1;x>=0;x--){var T;if((T=i[x]).namespace===e.namespaceURI){T.prefix&&(f=T.prefix+":"+l);break}}}t.push("<",f);for(var k=0;k"),r&&/^script$/i.test(l))for(;u;)u.data?t.push(u.data):ge(u,t,r,n,i.slice()),u=u.nextSibling;else for(;u;)ge(u,t,r,n,i.slice()),u=u.nextSibling;t.push("")}else t.push("/>");return;case w:case E:for(u=e.firstChild;u;)ge(u,t,r,n,i.slice()),u=u.nextSibling;return;case d:return pe(t,e.name,e.value);case p:return t.push(e.data.replace(/[<&>]/g,j));case g:return t.push("");case v:return t.push("\x3c!--",e.data,"--\x3e");case _:var A=e.publicId,D=e.systemId;if(t.push("");else if(D&&"."!=D)t.push(" SYSTEM ",D,">");else{var L=e.internalSubset;L&&t.push(" [",L,"]"),t.push(">")}return;case m:return t.push("");case y:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function ye(e,t,r){e[t]=r}A.prototype=Error.prototype,l(T,A),D.prototype={length:0,item:function(e){return e>=0&&e0},lookupPrefix:function(e){for(var t=this;t;){var r=t._nsMap;if(r)for(var n in r)if(Object.prototype.hasOwnProperty.call(r,n)&&r[n]===e)return n;t=t.nodeType==d?t.ownerDocument:t.parentNode}return null},lookupNamespaceURI:function(e){for(var t=this;t;){var r=t._nsMap;if(r&&Object.prototype.hasOwnProperty.call(r,e))return r[e];t=t.nodeType==d?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){return null==this.lookupPrefix(e)}},l(c,P),l(c,P.prototype),z.prototype={nodeName:"#document",nodeType:w,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==E){for(var r=e.firstChild;r;){var n=r.nextSibling;this.insertBefore(r,t),r=n}return e}return J(this,e,t),e.ownerDocument=this,null===this.documentElement&&e.nodeType===h&&(this.documentElement=e),e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),Z(this,e)},replaceChild:function(e,t){J(this,e,t,Y),e.ownerDocument=this,t&&this.removeChild(t),H(e)&&(this.documentElement=e)},importNode:function(e,t){return function e(t,r,n){var i;switch(r.nodeType){case h:(i=r.cloneNode(!1)).ownerDocument=t;case E:break;case d:n=!0}i||(i=r.cloneNode(!1));i.ownerDocument=t;i.parentNode=null;if(n)for(var o=r.firstChild;o;)i.appendChild(e(t,o,n)),o=o.nextSibling;return i}(this,e,t)},getElementById:function(e){var t=null;return F(this.documentElement,function(r){if(r.nodeType==h&&r.getAttribute("id")==e)return t=r,!0}),t},getElementsByClassName:function(e){var t=u(e);return new L(this,function(r){var n=[];return t.length>0&&F(r.documentElement,function(i){if(i!==r&&i.nodeType===h){var o=i.getAttribute("class");if(o){var a=e===o;if(!a){var s=u(o);a=t.every((l=s,function(e){return l&&-1!==l.indexOf(e)}))}a&&n.push(i)}}var l}),n})},createElement:function(e){var t=new Q;return t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.localName=e,t.childNodes=new D,(t.attributes=new M)._ownerElement=t,t},createDocumentFragment:function(){var e=new le;return e.ownerDocument=this,e.childNodes=new D,e},createTextNode:function(e){var t=new re;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new ne;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){var t=new ie;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var r=new fe;return r.ownerDocument=this,r.tagName=r.nodeName=r.target=e,r.nodeValue=r.data=t,r},createAttribute:function(e){var t=new ee;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new ue;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var r=new Q,n=t.split(":"),i=r.attributes=new M;return r.childNodes=new D,r.ownerDocument=this,r.nodeName=t,r.tagName=t,r.namespaceURI=e,2==n.length?(r.prefix=n[0],r.localName=n[1]):r.localName=t,i._ownerElement=r,r},createAttributeNS:function(e,t){var r=new ee,n=t.split(":");return r.ownerDocument=this,r.nodeName=t,r.name=t,r.namespaceURI=e,r.specified=!0,2==n.length?(r.prefix=n[0],r.localName=n[1]):r.localName=t,r}},f(z,P),Q.prototype={nodeType:h,hasAttribute:function(e){return null!=this.getAttributeNode(e)},getAttribute:function(e){var t=this.getAttributeNode(e);return t&&t.value||""},getAttributeNode:function(e){return this.attributes.getNamedItem(e)},setAttribute:function(e,t){var r=this.ownerDocument.createAttribute(e);r.value=r.nodeValue=""+t,this.setAttributeNode(r)},removeAttribute:function(e){var t=this.getAttributeNode(e);t&&this.removeAttributeNode(t)},appendChild:function(e){return e.nodeType===E?this.insertBefore(e,null):function(e,t){return t.parentNode&&t.parentNode.removeChild(t),t.parentNode=e,t.previousSibling=e.lastChild,t.nextSibling=null,t.previousSibling?t.previousSibling.nextSibling=t:e.firstChild=t,e.lastChild=t,X(e.ownerDocument,e,t),t}(this,e)},setAttributeNode:function(e){return this.attributes.setNamedItem(e)},setAttributeNodeNS:function(e){return this.attributes.setNamedItemNS(e)},removeAttributeNode:function(e){return this.attributes.removeNamedItem(e.nodeName)},removeAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);r&&this.removeAttributeNode(r)},hasAttributeNS:function(e,t){return null!=this.getAttributeNodeNS(e,t)},getAttributeNS:function(e,t){var r=this.getAttributeNodeNS(e,t);return r&&r.value||""},setAttributeNS:function(e,t,r){var n=this.ownerDocument.createAttributeNS(e,t);n.value=n.nodeValue=""+r,this.setAttributeNode(n)},getAttributeNodeNS:function(e,t){return this.attributes.getNamedItemNS(e,t)},getElementsByTagName:function(e){return new L(this,function(t){var r=[];return F(t,function(n){n===t||n.nodeType!=h||"*"!==e&&n.tagName!=e||r.push(n)}),r})},getElementsByTagNameNS:function(e,t){return new L(this,function(r){var n=[];return F(r,function(i){i===r||i.nodeType!==h||"*"!==e&&i.namespaceURI!==e||"*"!==t&&i.localName!=t||n.push(i)}),n})}},z.prototype.getElementsByTagName=Q.prototype.getElementsByTagName,z.prototype.getElementsByTagNameNS=Q.prototype.getElementsByTagNameNS,f(Q,P),ee.prototype.nodeType=d,f(ee,P),te.prototype={data:"",substringData:function(e,t){return this.data.substring(e,e+t)},appendData:function(e){e=this.data+e,this.nodeValue=this.data=e,this.length=e.length},insertData:function(e,t){this.replaceData(e,0,t)},appendChild:function(e){throw new Error(k[N])},deleteData:function(e,t){this.replaceData(e,t,"")},replaceData:function(e,t,r){r=this.data.substring(0,e)+r+this.data.substring(e+t),this.nodeValue=this.data=r,this.length=r.length}},f(te,P),re.prototype={nodeName:"#text",nodeType:p,splitText:function(e){var t=this.data,r=t.substring(e);t=t.substring(0,e),this.data=this.nodeValue=t,this.length=t.length;var n=this.ownerDocument.createTextNode(r);return this.parentNode&&this.parentNode.insertBefore(n,this.nextSibling),n}},f(re,te),ne.prototype={nodeName:"#comment",nodeType:v},f(ne,te),ie.prototype={nodeName:"#cdata-section",nodeType:g},f(ie,te),oe.prototype.nodeType=_,f(oe,P),ae.prototype.nodeType=x,f(ae,P),se.prototype.nodeType=b,f(se,P),ue.prototype.nodeType=y,f(ue,P),le.prototype.nodeName="#document-fragment",le.prototype.nodeType=E,f(le,P),fe.prototype.nodeType=m,f(fe,P),ce.prototype.serializeToString=function(e,t,r){return he.call(e,t,r)},P.prototype.toString=he;try{if(Object.defineProperty){Object.defineProperty(L.prototype,"length",{get:function(){return O(this),this.$$length}}),Object.defineProperty(P.prototype,"textContent",{get:function(){return function e(t){switch(t.nodeType){case h:case E:var r=[];for(t=t.firstChild;t;)7!==t.nodeType&&8!==t.nodeType&&r.push(e(t)),t=t.nextSibling;return r.join("");default:return t.nodeValue}}(this)},set:function(e){switch(this.nodeType){case h:case E:for(;this.firstChild;)this.removeChild(this.firstChild);(e||String(e))&&this.appendChild(this.ownerDocument.createTextNode(e));break;default:this.data=e,this.value=e,this.nodeValue=e}}}),ye=function(e,t,r){e["$$"+t]=r}}}catch(e){}r.DocumentType=oe,r.DOMException=A,r.DOMImplementation=R,r.Element=Q,r.Node=P,r.NodeList=D,r.XMLSerializer=ce},{"./conventions":9}],12:[function(e,t,r){"use strict";var n=e("./conventions").freeze;r.XML_ENTITIES=n({amp:"&",apos:"'",gt:">",lt:"<",quot:'"'}),r.HTML_ENTITIES=n({Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",AMP:"&",amp:"&",And:"⩓",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",ap:"≈",apacir:"⩯",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",Barwed:"⌆",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",Because:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxDL:"╗",boxDl:"╖",boxdL:"╕",boxdl:"┐",boxDR:"╔",boxDr:"╓",boxdR:"╒",boxdr:"┌",boxH:"═",boxh:"─",boxHD:"╦",boxHd:"╤",boxhD:"╥",boxhd:"┬",boxHU:"╩",boxHu:"╧",boxhU:"╨",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxUL:"╝",boxUl:"╜",boxuL:"╛",boxul:"┘",boxUR:"╚",boxUr:"╙",boxuR:"╘",boxur:"└",boxV:"║",boxv:"│",boxVH:"╬",boxVh:"╫",boxvH:"╪",boxvh:"┼",boxVL:"╣",boxVl:"╢",boxvL:"╡",boxvl:"┤",boxVR:"╠",boxVr:"╟",boxvR:"╞",boxvr:"├",bprime:"‵",Breve:"˘",breve:"˘",brvbar:"¦",Bscr:"ℬ",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",Cap:"⋒",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",CenterDot:"·",centerdot:"·",Cfr:"ℭ",cfr:"𝔠",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",Colon:"∷",colon:":",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",Conint:"∯",conint:"∮",ContourIntegral:"∮",Copf:"ℂ",copf:"𝕔",coprod:"∐",Coproduct:"∐",COPY:"©",copy:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",Cross:"⨯",cross:"✗",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",Cup:"⋓",cup:"∪",cupbrcap:"⩈",CupCap:"≍",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",Dagger:"‡",dagger:"†",daleth:"ℸ",Darr:"↡",dArr:"⇓",darr:"↓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",DD:"ⅅ",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",Diamond:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",Downarrow:"⇓",downarrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",ecir:"≖",Ecirc:"Ê",ecirc:"ê",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",eDot:"≑",edot:"ė",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",Escr:"ℰ",escr:"ℯ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",ExponentialE:"ⅇ",exponentiale:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",ForAll:"∀",forall:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",Fscr:"ℱ",fscr:"𝒻",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",gE:"≧",ge:"≥",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",Gg:"⋙",gg:"≫",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gnE:"≩",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",Gt:"≫",GT:">",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",hArr:"⇔",harr:"↔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",Hfr:"ℌ",hfr:"𝔥",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",Hopf:"ℍ",hopf:"𝕙",horbar:"―",HorizontalLine:"─",Hscr:"ℋ",hscr:"𝒽",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",Ifr:"ℑ",ifr:"𝔦",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Im:"ℑ",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",Int:"∬",int:"∫",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",Iscr:"ℐ",iscr:"𝒾",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",Lang:"⟪",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",Larr:"↞",lArr:"⇐",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",lAtail:"⤛",latail:"⤙",late:"⪭",lates:"⪭︀",lBarr:"⤎",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",lE:"≦",le:"≤",LeftAngleBracket:"⟨",LeftArrow:"←",Leftarrow:"⇐",leftarrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",Ll:"⋘",ll:"≪",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lnE:"≨",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftarrow:"⟵",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longleftrightarrow:"⟷",longmapsto:"⟼",LongRightArrow:"⟶",Longrightarrow:"⟹",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",Lscr:"ℒ",lscr:"𝓁",Lsh:"↰",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",Lt:"≪",LT:"<",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",Mscr:"ℳ",mscr:"𝓂",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",ne:"≠",nearhk:"⤤",neArr:"⇗",nearr:"↗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlArr:"⇍",nlarr:"↚",nldr:"‥",nlE:"≦̸",nle:"≰",nLeftarrow:"⇍",nleftarrow:"↚",nLeftrightarrow:"⇎",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",nopf:"𝕟",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nRightarrow:"⇏",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nVDash:"⊯",nVdash:"⊮",nvDash:"⊭",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwArr:"⇖",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",ocir:"⊚",Ocirc:"Ô",ocirc:"ô",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",Or:"⩔",or:"∨",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",Otimes:"⨷",otimes:"⊗",otimesas:"⨶",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",Popf:"ℙ",popf:"𝕡",pound:"£",Pr:"⪻",pr:"≺",prap:"⪷",prcue:"≼",prE:"⪳",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",Prime:"″",prime:"′",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",Qopf:"ℚ",qopf:"𝕢",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",QUOT:'"',quot:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",Rang:"⟫",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",Rarr:"↠",rArr:"⇒",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",rAtail:"⤜",ratail:"⤚",ratio:"∶",rationals:"ℚ",RBarr:"⤐",rBarr:"⤏",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",REG:"®",reg:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",Rfr:"ℜ",rfr:"𝔯",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrow:"→",Rightarrow:"⇒",rightarrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",Ropf:"ℝ",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",Rscr:"ℛ",rscr:"𝓇",Rsh:"↱",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",Sc:"⪼",sc:"≻",scap:"⪸",Scaron:"Š",scaron:"š",sccue:"≽",scE:"⪴",sce:"⪰",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",seArr:"⇘",searr:"↘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",Square:"□",square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",Sub:"⋐",sub:"⊂",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",Subset:"⋐",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",Sum:"∑",sum:"∑",sung:"♪",Sup:"⋑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",Supset:"⋑",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swArr:"⇙",swarr:"↙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",Therefore:"∴",therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",Tilde:"∼",tilde:"˜",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",TRADE:"™",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",Uarr:"↟",uArr:"⇑",uarr:"↑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrow:"↑",Uparrow:"⇑",uparrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",Updownarrow:"⇕",updownarrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",upsi:"υ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",vArr:"⇕",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",Vbar:"⫫",vBar:"⫨",vBarv:"⫩",Vcy:"В",vcy:"в",VDash:"⊫",Vdash:"⊩",vDash:"⊨",vdash:"⊢",Vdashl:"⫦",Vee:"⋁",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",Verbar:"‖",verbar:"|",Vert:"‖",vert:"|",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",Wedge:"⋀",wedge:"∧",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",Xi:"Ξ",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",Yuml:"Ÿ",yuml:"ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",Zfr:"ℨ",zfr:"𝔷",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",Zopf:"ℤ",zopf:"𝕫",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}),r.entityMap=r.HTML_ENTITIES},{"./conventions":9}],13:[function(e,t,r){var n=e("./dom");r.DOMImplementation=n.DOMImplementation,r.XMLSerializer=n.XMLSerializer,r.DOMParser=e("./dom-parser").DOMParser},{"./dom":11,"./dom-parser":10}],14:[function(e,t,r){var n=e("./conventions").NAMESPACE,i=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,o=new RegExp("[\\-\\.0-9"+i.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),a=new RegExp("^"+i.source+o.source+"*(?::"+i.source+o.source+"*)?$"),s=0,u=1,l=2,f=3,c=4,h=5,d=6,p=7;function g(e,t){this.message=e,this.locator=t,Error.captureStackTrace&&Error.captureStackTrace(this,g)}function y(){}function b(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function m(e,t,r,i,o,a){function g(e,t,n){r.attributeNames.hasOwnProperty(e)&&a.fatalError("Attribute "+e+" redefined"),r.addValue(e,t.replace(/[\t\n\r]/g," ").replace(/&#?\w+;/g,o),n)}for(var y,b=++t,m=s;;){var v=e.charAt(b);switch(v){case"=":if(m===u)y=e.slice(t,b),m=f;else{if(m!==l)throw new Error("attribute equal must after attrName");m=f}break;case"'":case'"':if(m===f||m===u){if(m===u&&(a.warning('attribute value must after "="'),y=e.slice(t,b)),t=b+1,!((b=e.indexOf(v,t))>0))throw new Error("attribute value no end '"+v+"' match");g(y,w=e.slice(t,b),t-1),m=h}else{if(m!=c)throw new Error('attribute value must after "="');g(y,w=e.slice(t,b),t),a.warning('attribute "'+y+'" missed start quot('+v+")!!"),t=b+1,m=h}break;case"/":switch(m){case s:r.setTagName(e.slice(t,b));case h:case d:case p:m=p,r.closed=!0;case c:case u:break;case l:r.closed=!0;break;default:throw new Error("attribute invalid close char('/')")}break;case"":return a.error("unexpected end of input"),m==s&&r.setTagName(e.slice(t,b)),b;case">":switch(m){case s:r.setTagName(e.slice(t,b));case h:case d:case p:break;case c:case u:"/"===(w=e.slice(t,b)).slice(-1)&&(r.closed=!0,w=w.slice(0,-1));case l:m===l&&(w=y),m==c?(a.warning('attribute "'+w+'" missed quot(")!'),g(y,w,t)):(n.isHTML(i[""])&&w.match(/^(?:disabled|checked|selected)$/i)||a.warning('attribute "'+w+'" missed value!! "'+w+'" instead!!'),g(w,w,t));break;case f:throw new Error("attribute value missed!!")}return b;case"€":v=" ";default:if(v<=" ")switch(m){case s:r.setTagName(e.slice(t,b)),m=d;break;case u:y=e.slice(t,b),m=l;break;case c:var w=e.slice(t,b);a.warning('attribute "'+w+'" missed quot(")!!'),g(y,w,t);case h:m=d}else switch(m){case l:r.tagName;n.isHTML(i[""])&&y.match(/^(?:disabled|checked|selected)$/i)||a.warning('attribute "'+y+'" missed value!! "'+y+'" instead2!!'),g(y,y,t),t=b,m=u;break;case h:a.warning('attribute space is required"'+y+'"!!');case d:m=u,t=b;break;case f:m=c,t=b;break;case p:throw new Error("elements closed character '/' and '>' must be connected to")}}b++}}function v(e,t,r){for(var i=e.tagName,o=null,a=e.length;a--;){var s=e[a],u=s.qName,l=s.value;if((d=u.indexOf(":"))>0)var f=s.prefix=u.slice(0,d),c=u.slice(d+1),h="xmlns"===f&&c;else c=u,f=null,h="xmlns"===u&&"";s.localName=c,!1!==h&&(null==o&&(o={},E(r,r={})),r[h]=o[h]=l,s.uri=n.XMLNS,t.startPrefixMapping(h,l))}for(a=e.length;a--;){(f=(s=e[a]).prefix)&&("xml"===f&&(s.uri=n.XML),"xmlns"!==f&&(s.uri=r[f||""]))}var d;(d=i.indexOf(":"))>0?(f=e.prefix=i.slice(0,d),c=e.localName=i.slice(d+1)):(f=null,c=e.localName=i);var p=e.uri=r[f||""];if(t.startElement(p,c,i,e),!e.closed)return e.currentNSMap=r,e.localNSMap=o,!0;if(t.endElement(p,c,i),o)for(f in o)Object.prototype.hasOwnProperty.call(o,f)&&t.endPrefixMapping(f)}function w(e,t,r,n,i){if(/^(?:script|textarea)$/i.test(r)){var o=e.indexOf("",t),a=e.substring(t+1,o);if(/[&<]/.test(a))return/^script$/i.test(r)?(i.characters(a,0,a.length),o):(a=a.replace(/&#?\w+;/g,n),i.characters(a,0,a.length),o)}return t+1}function _(e,t,r,n){var i=n[r];return null==i&&((i=e.lastIndexOf(""))t?(r.comment(e,t+4,i-t-4),i+3):(n.error("Unclosed comment"),-1):-1;default:if("CDATA["==e.substr(t+3,6)){var i=e.indexOf("]]>",t+9);return r.startCDATA(),r.characters(e,t+9,i-t-9),r.endCDATA(),i+3}var o=function(e,t){var r,n=[],i=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;i.lastIndex=t,i.exec(e);for(;r=i.exec(e);)if(n.push(r),r[1])return n}(e,t),a=o.length;if(a>1&&/!doctype/i.test(o[0][0])){var s=o[1][0],u=!1,l=!1;a>3&&(/^public$/i.test(o[2][0])?(u=o[3][0],l=a>4&&o[4][0]):/^system$/i.test(o[2][0])&&(l=o[3][0]));var f=o[a-1];return r.startDTD(s,u,l),r.endDTD(),f.index+f[0].length}}return-1}function T(e,t,r){var n=e.indexOf("?>",t);if(n){var i=e.substring(t,n).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(i){i[0].length;return r.processingInstruction(i[1],i[2]),n+2}return-1}return-1}function k(){this.attributeNames={}}g.prototype=new Error,g.prototype.name=g.name,y.prototype={parse:function(e,t,r){var i=this.domBuilder;i.startDocument(),E(t,t={}),function(e,t,r,i,o){function a(e){var t=e.slice(1,-1);return Object.hasOwnProperty.call(r,t)?r[t]:"#"===t.charAt(0)?function(e){if(e>65535){var t=55296+((e-=65536)>>10),r=56320+(1023&e);return String.fromCharCode(t,r)}return String.fromCharCode(e)}(parseInt(t.substr(1).replace("x","0x"))):(o.error("entity not found:"+e),e)}function s(t){if(t>y){var r=e.substring(y,t).replace(/&#?\w+;/g,a);h&&u(y),i.characters(r,0,t-y),y=t}}function u(t,r){for(;t>=f&&(r=c.exec(e));)l=r.index,f=l+r[0].length,h.lineNumber++;h.columnNumber=t-l+1}var l=0,f=0,c=/.*(?:\r\n?|\n)|.*$/g,h=i.locator,d=[{currentNSMap:t}],p={},y=0;for(;;){try{var E=e.indexOf("<",y);if(E<0){if(!e.substr(y).match(/^\s*$/)){var N=i.doc,S=N.createTextNode(e.substr(y));N.appendChild(S),i.currentElement=S}return}switch(E>y&&s(E),e.charAt(E+1)){case"/":var I=e.indexOf(">",E+3),A=e.substring(E+2,I).replace(/[ \t\n\r]+$/g,""),D=d.pop();I<0?(A=e.substring(E+2).replace(/[\s<].*/,""),o.error("end tag name: "+A+" is not complete:"+D.tagName),I=E+1+A.length):A.match(/\sy?y=I:s(Math.max(E,y)+1)}}(e,t,r,i,this.errorHandler),i.endDocument()}},k.prototype={setTagName:function(e){if(!a.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},addValue:function(e,t,r){if(!a.test(e))throw new Error("invalid attribute:"+e);this.attributeNames[e]=this.length,this[this.length++]={qName:e,value:t,offset:r}},length:0,getLocalName:function(e){return this[e].localName},getLocator:function(e){return this[e].locator},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}},r.XMLReader=y,r.ParseError=g},{"./conventions":9}],15:[function(e,t,r){(function(r){(function(){"use strict";var n=e("object.assign/polyfill")();function i(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);i=0;l--)if(f[l]!==c[l])return!1;for(l=f.length-1;l>=0;l--)if(s=f[l],!v(e[s],t[s],r,n))return!1;return!0}(e,t,r,n))}return r?e===t:e==t}function w(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function _(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function E(e,t,r,n){var i;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),e&&!i&&b(i,r,"Missing expected exception"+n);var o="string"==typeof n,s=!e&&a.isError(i),u=!e&&i&&!r;if((s&&o&&_(i,r)||u)&&b(i,r,"Got unwanted exception"+n),e&&i&&r&&!_(i,r)||!e&&i)throw i}h.AssertionError=function(e){var t;this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=g(y((t=this).actual),128)+" "+t.operator+" "+g(y(t.expected),128),this.generatedMessage=!0);var r=e.stackStartFunction||b;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var n=new Error;if(n.stack){var i=n.stack,o=p(r),a=i.indexOf("\n"+o);if(a>=0){var s=i.indexOf("\n",a+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(h.AssertionError,Error),h.fail=b,h.ok=m,h.equal=function(e,t,r){e!=t&&b(e,t,r,"==",h.equal)},h.notEqual=function(e,t,r){e==t&&b(e,t,r,"!=",h.notEqual)},h.deepEqual=function(e,t,r){v(e,t,!1)||b(e,t,r,"deepEqual",h.deepEqual)},h.deepStrictEqual=function(e,t,r){v(e,t,!0)||b(e,t,r,"deepStrictEqual",h.deepStrictEqual)},h.notDeepEqual=function(e,t,r){v(e,t,!1)&&b(e,t,r,"notDeepEqual",h.notDeepEqual)},h.notDeepStrictEqual=function e(t,r,n){v(t,r,!0)&&b(t,r,n,"notDeepStrictEqual",e)},h.strictEqual=function(e,t,r){e!==t&&b(e,t,r,"===",h.strictEqual)},h.notStrictEqual=function(e,t,r){e===t&&b(e,t,r,"!==",h.notStrictEqual)},h.throws=function(e,t,r){E(!0,e,t,r)},h.doesNotThrow=function(e,t,r){E(!1,e,t,r)},h.ifError=function(e){if(e)throw e},h.strict=n(function e(t,r){t||b(t,!0,r,"==",e)},h,{equal:h.strictEqual,deepEqual:h.deepStrictEqual,notEqual:h.notStrictEqual,notDeepEqual:h.notDeepStrictEqual}),h.strict.strict=h.strict;var x=Object.keys||function(e){var t=[];for(var r in e)s.call(e,r)&&t.push(r);return t}}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"object.assign/polyfill":80,"util/":122}],16:[function(e,t,r){"use strict";r.byteLength=function(e){var t=l(e),r=t[0],n=t[1];return 3*(r+n)/4-n},r.toByteArray=function(e){var t,r,n=l(e),a=n[0],s=n[1],u=new o(function(e,t,r){return 3*(t+r)/4-r}(0,a,s)),f=0,c=s>0?a-4:a;for(r=0;r>16&255,u[f++]=t>>8&255,u[f++]=255&t;2===s&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,u[f++]=255&t);1===s&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,u[f++]=t>>8&255,u[f++]=255&t);return u},r.fromByteArray=function(e){for(var t,r=e.length,i=r%3,o=[],a=0,s=r-i;as?s:a+16383));1===i?(t=e[r-1],o.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],o.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,u=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function f(e,t,r){for(var i,o,a=[],s=t;s>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return a.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},{}],17:[function(e,t,r){var n=function(e){"use strict";var t=1e7,r=7,i=9007199254740992,o=d(i),a="0123456789abcdefghijklmnopqrstuvwxyz",s="function"==typeof BigInt;function u(e,t,r,n){return void 0===e?u[0]:void 0!==t&&(10!=+t||r)?Z(e,t,r,n):K(e)}function l(e,t){this.value=e,this.sign=t,this.isSmall=!1}function f(e){this.value=e,this.sign=e<0,this.isSmall=!0}function c(e){this.value=e}function h(e){return-i0?Math.floor(e):Math.ceil(e)}function m(e,r){var n,i,o=e.length,a=r.length,s=new Array(o),u=0,l=t;for(i=0;i=l?1:0,s[i]=n-u*l;for(;i0&&s.push(u),s}function v(e,t){return e.length>=t.length?m(e,t):m(t,e)}function w(e,r){var n,i,o=e.length,a=new Array(o),s=t;for(i=0;i0;)a[i++]=r%s,r=Math.floor(r/s);return a}function _(e,r){var n,i,o=e.length,a=r.length,s=new Array(o),u=0,l=t;for(n=0;n0;)a[i++]=u%s,u=Math.floor(u/s);return a}function k(e,t){for(var r=[];t-- >0;)r.push(0);return r.concat(e)}function N(e,r,n){return new l(e=0;--n)o=(a=o*l+e[n])-(i=b(a/r))*r,u[n]=0|i;return[u,0|o]}function A(e,r){var n,i=K(r);if(s)return[new c(e.value/i.value),new c(e.value%i.value)];var o,a=e.value,h=i.value;if(0===h)throw new Error("Cannot divide by zero");if(e.isSmall)return i.isSmall?[new f(b(a/h)),new f(a%h)]:[u[0],e];if(i.isSmall){if(1===h)return[e,u[0]];if(-1==h)return[e.negate(),u[0]];var m=Math.abs(h);if(m=0;i--){for(n=h-1,m[i+c]!==g&&(n=Math.floor((m[i+c]*h+m[i+c-1])/g)),o=0,a=0,u=v.length,s=0;sl&&(o=(o+1)*h),n=Math.ceil(o/a);do{if(D(s=T(r,n),c)<=0)break;n--}while(n);f.push(n),c=_(c,s)}return f.reverse(),[p(f),p(c)]}(a,h))[0];var E=e.sign!==i.sign,x=n[1],k=e.sign;return"number"==typeof o?(E&&(o=-o),o=new f(o)):o=new l(o,E),"number"==typeof x?(k&&(x=-x),x=new f(x)):x=new l(x,k),[o,x]}function D(e,t){if(e.length!==t.length)return e.length>t.length?1:-1;for(var r=e.length-1;r>=0;r--)if(e[r]!==t[r])return e[r]>t[r]?1:-1;return 0}function L(e){var t=e.abs();return!t.isUnit()&&(!!(t.equals(2)||t.equals(3)||t.equals(5))||!(t.isEven()||t.isDivisibleBy(3)||t.isDivisibleBy(5))&&(!!t.lesser(49)||void 0))}function O(e,t){for(var r,i,o,a=e.prev(),s=a,u=0;s.isEven();)s=s.divide(2),u++;e:for(i=0;i=0?n=_(e,t):(n=_(t,e),r=!r),"number"==typeof(n=p(n))?(r&&(n=-n),new f(n)):new l(n,r)}(r,n,this.sign)},l.prototype.minus=l.prototype.subtract,f.prototype.subtract=function(e){var t=K(e),r=this.value;if(r<0!==t.sign)return this.add(t.negate());var n=t.value;return t.isSmall?new f(r-n):E(n,Math.abs(r),r>=0)},f.prototype.minus=f.prototype.subtract,c.prototype.subtract=function(e){return new c(this.value-K(e).value)},c.prototype.minus=c.prototype.subtract,l.prototype.negate=function(){return new l(this.value,!this.sign)},f.prototype.negate=function(){var e=this.sign,t=new f(-this.value);return t.sign=!e,t},c.prototype.negate=function(){return new c(-this.value)},l.prototype.abs=function(){return new l(this.value,!1)},f.prototype.abs=function(){return new f(Math.abs(this.value))},c.prototype.abs=function(){return new c(this.value>=0?this.value:-this.value)},l.prototype.multiply=function(e){var r,n,i,o=K(e),a=this.value,s=o.value,f=this.sign!==o.sign;if(o.isSmall){if(0===s)return u[0];if(1===s)return this;if(-1===s)return this.negate();if((r=Math.abs(s))0?function e(t,r){var n=Math.max(t.length,r.length);if(n<=30)return x(t,r);n=Math.ceil(n/2);var i=t.slice(n),o=t.slice(0,n),a=r.slice(n),s=r.slice(0,n),u=e(o,s),l=e(i,a),f=v(v(u,k(_(_(e(v(o,i),v(s,a)),u),l),n)),k(l,2*n));return g(f),f}(a,s):x(a,s),f)},l.prototype.times=l.prototype.multiply,f.prototype._multiplyBySmall=function(e){return h(e.value*this.value)?new f(e.value*this.value):N(Math.abs(e.value),d(Math.abs(this.value)),this.sign!==e.sign)},l.prototype._multiplyBySmall=function(e){return 0===e.value?u[0]:1===e.value?this:-1===e.value?this.negate():N(Math.abs(e.value),this.value,this.sign!==e.sign)},f.prototype.multiply=function(e){return K(e)._multiplyBySmall(this)},f.prototype.times=f.prototype.multiply,c.prototype.multiply=function(e){return new c(this.value*K(e).value)},c.prototype.times=c.prototype.multiply,l.prototype.square=function(){return new l(S(this.value),!1)},f.prototype.square=function(){var e=this.value*this.value;return h(e)?new f(e):new l(S(d(Math.abs(this.value))),!1)},c.prototype.square=function(e){return new c(this.value*this.value)},l.prototype.divmod=function(e){var t=A(this,e);return{quotient:t[0],remainder:t[1]}},c.prototype.divmod=f.prototype.divmod=l.prototype.divmod,l.prototype.divide=function(e){return A(this,e)[0]},c.prototype.over=c.prototype.divide=function(e){return new c(this.value/K(e).value)},f.prototype.over=f.prototype.divide=l.prototype.over=l.prototype.divide,l.prototype.mod=function(e){return A(this,e)[1]},c.prototype.mod=c.prototype.remainder=function(e){return new c(this.value%K(e).value)},f.prototype.remainder=f.prototype.mod=l.prototype.remainder=l.prototype.mod,l.prototype.pow=function(e){var t,r,n,i=K(e),o=this.value,a=i.value;if(0===a)return u[1];if(0===o)return u[0];if(1===o)return u[1];if(-1===o)return i.isEven()?u[1]:u[-1];if(i.sign)return u[0];if(!i.isSmall)throw new Error("The exponent "+i.toString()+" is too large.");if(this.isSmall&&h(t=Math.pow(o,a)))return new f(b(t));for(r=this,n=u[1];!0&a&&(n=n.times(r),--a),0!==a;)a/=2,r=r.square();return n},f.prototype.pow=l.prototype.pow,c.prototype.pow=function(e){var t=K(e),r=this.value,n=t.value,i=BigInt(0),o=BigInt(1),a=BigInt(2);if(n===i)return u[1];if(r===i)return u[0];if(r===o)return u[1];if(r===BigInt(-1))return t.isEven()?u[1]:u[-1];if(t.isNegative())return new c(i);for(var s=this,l=u[1];(n&o)===o&&(l=l.times(s),--n),n!==i;)n/=a,s=s.square();return l},l.prototype.modPow=function(e,t){if(e=K(e),(t=K(t)).isZero())throw new Error("Cannot take modPow with modulus 0");var r=u[1],n=this.mod(t);for(e.isNegative()&&(e=e.multiply(u[-1]),n=n.modInv(t));e.isPositive();){if(n.isZero())return u[0];e.isOdd()&&(r=r.multiply(n).mod(t)),e=e.divide(2),n=n.square().mod(t)}return r},c.prototype.modPow=f.prototype.modPow=l.prototype.modPow,l.prototype.compareAbs=function(e){var t=K(e),r=this.value,n=t.value;return t.isSmall?1:D(r,n)},f.prototype.compareAbs=function(e){var t=K(e),r=Math.abs(this.value),n=t.value;return t.isSmall?r===(n=Math.abs(n))?0:r>n?1:-1:-1},c.prototype.compareAbs=function(e){var t=this.value,r=K(e).value;return(t=t>=0?t:-t)===(r=r>=0?r:-r)?0:t>r?1:-1},l.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=K(e),r=this.value,n=t.value;return this.sign!==t.sign?t.sign?1:-1:t.isSmall?this.sign?-1:1:D(r,n)*(this.sign?-1:1)},l.prototype.compareTo=l.prototype.compare,f.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=K(e),r=this.value,n=t.value;return t.isSmall?r==n?0:r>n?1:-1:r<0!==t.sign?r<0?-1:1:r<0?1:-1},f.prototype.compareTo=f.prototype.compare,c.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=this.value,r=K(e).value;return t===r?0:t>r?1:-1},c.prototype.compareTo=c.prototype.compare,l.prototype.equals=function(e){return 0===this.compare(e)},c.prototype.eq=c.prototype.equals=f.prototype.eq=f.prototype.equals=l.prototype.eq=l.prototype.equals,l.prototype.notEquals=function(e){return 0!==this.compare(e)},c.prototype.neq=c.prototype.notEquals=f.prototype.neq=f.prototype.notEquals=l.prototype.neq=l.prototype.notEquals,l.prototype.greater=function(e){return this.compare(e)>0},c.prototype.gt=c.prototype.greater=f.prototype.gt=f.prototype.greater=l.prototype.gt=l.prototype.greater,l.prototype.lesser=function(e){return this.compare(e)<0},c.prototype.lt=c.prototype.lesser=f.prototype.lt=f.prototype.lesser=l.prototype.lt=l.prototype.lesser,l.prototype.greaterOrEquals=function(e){return this.compare(e)>=0},c.prototype.geq=c.prototype.greaterOrEquals=f.prototype.geq=f.prototype.greaterOrEquals=l.prototype.geq=l.prototype.greaterOrEquals,l.prototype.lesserOrEquals=function(e){return this.compare(e)<=0},c.prototype.leq=c.prototype.lesserOrEquals=f.prototype.leq=f.prototype.lesserOrEquals=l.prototype.leq=l.prototype.lesserOrEquals,l.prototype.isEven=function(){return 0==(1&this.value[0])},f.prototype.isEven=function(){return 0==(1&this.value)},c.prototype.isEven=function(){return(this.value&BigInt(1))===BigInt(0)},l.prototype.isOdd=function(){return 1==(1&this.value[0])},f.prototype.isOdd=function(){return 1==(1&this.value)},c.prototype.isOdd=function(){return(this.value&BigInt(1))===BigInt(1)},l.prototype.isPositive=function(){return!this.sign},f.prototype.isPositive=function(){return this.value>0},c.prototype.isPositive=f.prototype.isPositive,l.prototype.isNegative=function(){return this.sign},f.prototype.isNegative=function(){return this.value<0},c.prototype.isNegative=f.prototype.isNegative,l.prototype.isUnit=function(){return!1},f.prototype.isUnit=function(){return 1===Math.abs(this.value)},c.prototype.isUnit=function(){return this.abs().value===BigInt(1)},l.prototype.isZero=function(){return!1},f.prototype.isZero=function(){return 0===this.value},c.prototype.isZero=function(){return this.value===BigInt(0)},l.prototype.isDivisibleBy=function(e){var t=K(e);return!t.isZero()&&(!!t.isUnit()||(0===t.compareAbs(2)?this.isEven():this.mod(t).isZero()))},c.prototype.isDivisibleBy=f.prototype.isDivisibleBy=l.prototype.isDivisibleBy,l.prototype.isPrime=function(e){var t=L(this);if(void 0!==t)return t;var r=this.abs(),i=r.bitLength();if(i<=64)return O(r,[2,3,5,7,11,13,17,19,23,29,31,37]);for(var o=Math.log(2)*i.toJSNumber(),a=Math.ceil(!0===e?2*Math.pow(o,2):o),s=[],u=0;u-i?new f(e-1):new l(o,!0)},c.prototype.prev=function(){return new c(this.value-BigInt(1))};for(var M=[1];2*M[M.length-1]<=t;)M.push(2*M[M.length-1]);var U=M.length,C=M[U-1];function B(e){return Math.abs(e)<=t}function R(e,t,r){t=K(t);for(var i=e.isNegative(),o=t.isNegative(),a=i?e.not():e,s=o?t.not():t,u=0,l=0,f=null,c=null,h=[];!a.isZero()||!s.isZero();)u=(f=A(a,C))[1].toJSNumber(),i&&(u=C-1-u),l=(c=A(s,C))[1].toJSNumber(),o&&(l=C-1-l),a=f[0],s=c[0],h.push(r(u,l));for(var d=0!==r(i?1:0,o?1:0)?n(-1):n(0),p=h.length-1;p>=0;p-=1)d=d.multiply(C).add(n(h[p]));return d}l.prototype.shiftLeft=function(e){var t=K(e).toJSNumber();if(!B(t))throw new Error(String(t)+" is too large for shifting.");if(t<0)return this.shiftRight(-t);var r=this;if(r.isZero())return r;for(;t>=U;)r=r.multiply(C),t-=U-1;return r.multiply(M[t])},c.prototype.shiftLeft=f.prototype.shiftLeft=l.prototype.shiftLeft,l.prototype.shiftRight=function(e){var t,r=K(e).toJSNumber();if(!B(r))throw new Error(String(r)+" is too large for shifting.");if(r<0)return this.shiftLeft(-r);for(var n=this;r>=U;){if(n.isZero()||n.isNegative()&&n.isUnit())return n;n=(t=A(n,C))[1].isNegative()?t[0].prev():t[0],r-=U-1}return(t=A(n,M[r]))[1].isNegative()?t[0].prev():t[0]},c.prototype.shiftRight=f.prototype.shiftRight=l.prototype.shiftRight,l.prototype.not=function(){return this.negate().prev()},c.prototype.not=f.prototype.not=l.prototype.not,l.prototype.and=function(e){return R(this,e,function(e,t){return e&t})},c.prototype.and=f.prototype.and=l.prototype.and,l.prototype.or=function(e){return R(this,e,function(e,t){return e|t})},c.prototype.or=f.prototype.or=l.prototype.or,l.prototype.xor=function(e){return R(this,e,function(e,t){return e^t})},c.prototype.xor=f.prototype.xor=l.prototype.xor;var P=1<<30,j=(t&-t)*(t&-t)|P;function F(e){var r=e.value,n="number"==typeof r?r|P:"bigint"==typeof r?r|BigInt(P):r[0]+r[1]*t|j;return n&-n}function z(e,t){return e=K(e),t=K(t),e.greater(t)?e:t}function q(e,t){return e=K(e),t=K(t),e.lesser(t)?e:t}function X(e,t){if(e=K(e).abs(),t=K(t).abs(),e.equals(t))return e;if(e.isZero())return t;if(t.isZero())return e;for(var r,n,i=u[1];e.isEven()&&t.isEven();)r=q(F(e),F(t)),e=e.divide(r),t=t.divide(r),i=i.multiply(r);for(;e.isEven();)e=e.divide(F(e));do{for(;t.isEven();)t=t.divide(F(t));e.greater(t)&&(n=t,t=e,e=n),t=t.subtract(e)}while(!t.isZero());return i.isUnit()?e:e.multiply(i)}l.prototype.bitLength=function(){var e=this;return e.compareTo(n(0))<0&&(e=e.negate().subtract(n(1))),0===e.compareTo(n(0))?n(0):n(function e(t,r){if(r.compareTo(t)<=0){var i=e(t,r.square(r)),o=i.p,a=i.e,s=o.multiply(r);return s.compareTo(t)<=0?{p:s,e:2*a+1}:{p:o,e:2*a}}return{p:n(1),e:0}}(e,n(2)).e).add(n(1))},c.prototype.bitLength=f.prototype.bitLength=l.prototype.bitLength;var Z=function(e,t,r,n){r=r||a,e=String(e),n||(e=e.toLowerCase(),r=r.toLowerCase());var i,o=e.length,s=Math.abs(t),u={};for(i=0;i=s)){if("1"===c&&1===s)continue;throw new Error(c+" is not a valid digit in base "+t+".")}}t=K(t);var l=[],f="-"===e[0];for(i=f?1:0;i"!==e[i]&&i=0;n--)i=i.add(e[n].times(o)),o=o.times(t);return r?i.negate():i}function H(e,t){if((t=n(t)).isZero()){if(e.isZero())return{value:[0],isNegative:!1};throw new Error("Cannot convert nonzero numbers to base 0.")}if(t.equals(-1)){if(e.isZero())return{value:[0],isNegative:!1};if(e.isNegative())return{value:[].concat.apply([],Array.apply(null,Array(-e.toJSNumber())).map(Array.prototype.valueOf,[1,0])),isNegative:!1};var r=Array.apply(null,Array(e.toJSNumber()-1)).map(Array.prototype.valueOf,[0,1]);return r.unshift([1]),{value:[].concat.apply([],r),isNegative:!1}}var i=!1;if(e.isNegative()&&t.isPositive()&&(i=!0,e=e.abs()),t.isUnit())return e.isZero()?{value:[0],isNegative:!1}:{value:Array.apply(null,Array(e.toJSNumber())).map(Number.prototype.valueOf,1),isNegative:i};for(var o,a=[],s=e;s.isNegative()||s.compareAbs(t)>=0;){s=(o=s.divmod(t)).quotient;var u=o.remainder;u.isNegative()&&(u=t.minus(u).abs(),s=s.next()),a.push(u.toJSNumber())}return a.push(s.toJSNumber()),{value:a.reverse(),isNegative:i}}function W(e,t,r){var n=H(e,t);return(n.isNegative?"-":"")+n.value.map(function(e){return function(e,t){return e<(t=t||a).length?t[e]:"<"+e+">"}(e,r)}).join("")}function G(e){if(h(+e)){var t=+e;if(t===b(t))return s?new c(BigInt(t)):new f(t);throw new Error("Invalid integer: "+e)}var n="-"===e[0];n&&(e=e.slice(1));var i=e.split(/e/i);if(i.length>2)throw new Error("Invalid integer: "+i.join("e"));if(2===i.length){var o=i[1];if("+"===o[0]&&(o=o.slice(1)),(o=+o)!==b(o)||!h(o))throw new Error("Invalid integer: "+o+" is not a valid exponent.");var a=i[0],u=a.indexOf(".");if(u>=0&&(o-=a.length-u-1,a=a.slice(0,u)+a.slice(u+1)),o<0)throw new Error("Cannot include negative exponent part for integers");e=a+=new Array(o+1).join("0")}if(!/^([0-9][0-9]*)$/.test(e))throw new Error("Invalid integer: "+e);if(s)return new c(BigInt(n?"-"+e:e));for(var d=[],p=e.length,y=r,m=p-y;p>0;)d.push(+e.slice(m,p)),(m-=y)<0&&(m=0),p-=y;return g(d),new l(d,n)}function K(e){return"number"==typeof e?function(e){if(s)return new c(BigInt(e));if(h(e)){if(e!==b(e))throw new Error(e+" is not an integer.");return new f(e)}return G(e.toString())}(e):"string"==typeof e?G(e):"bigint"==typeof e?new c(e):e}l.prototype.toArray=function(e){return H(this,e)},f.prototype.toArray=function(e){return H(this,e)},c.prototype.toArray=function(e){return H(this,e)},l.prototype.toString=function(e,t){if(void 0===e&&(e=10),10!==e||t)return W(this,e,t);for(var r,n=this.value,i=n.length,o=String(n[--i]);--i>=0;)r=String(n[i]),o+="0000000".slice(r.length)+r;return(this.sign?"-":"")+o},f.prototype.toString=function(e,t){return void 0===e&&(e=10),10!=e||t?W(this,e,t):String(this.value)},c.prototype.toString=f.prototype.toString,c.prototype.toJSON=l.prototype.toJSON=f.prototype.toJSON=function(){return this.toString()},l.prototype.valueOf=function(){return parseInt(this.toString(),10)},l.prototype.toJSNumber=l.prototype.valueOf,f.prototype.valueOf=function(){return this.value},f.prototype.toJSNumber=f.prototype.valueOf,c.prototype.valueOf=c.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};for(var $=0;$<1e3;$++)u[$]=K($),$>0&&(u[-$]=K(-$));return u.one=u[1],u.zero=u[0],u.minusOne=u[-1],u.max=z,u.min=q,u.gcd=X,u.lcm=function(e,t){return e=K(e).abs(),t=K(t).abs(),e.divide(X(e,t)).multiply(t)},u.isInstance=function(e){return e instanceof l||e instanceof f||e instanceof c},u.randBetween=function(e,r,n){e=K(e),r=K(r);var i=n||Math.random,o=q(e,r),a=z(e,r).subtract(o).add(1);if(a.isSmall)return o.add(Math.floor(i()*a));for(var s=H(a,t).value,l=[],f=!0,c=0;cr.maxObjectCount)throw new Error("maxObjectCount exceeded");const g=[];for(let t=0;t>4,p=15&h;switch(d){case 0:return function(){switch(p){case 0:return null;case 8:return!1;case 9:return!0;case 15:return null;default:throw new Error("Unhandled simple type 0x"+d.toString(16))}}();case 1:return function(){const t=Math.pow(2,p);if(4==p){const r=e.slice(f+1,f+1+t),n=function(e){let t,r="";for(t=0;tr.maxObjectSize)throw new Error("To little heap space available!");const o=[];for(let r=0;rr.maxObjectSize)throw new Error("To little heap space available!");o&&console.log("Parsing dictionary #"+u);const a={};for(let r=0;rr.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}f.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,"close before init"),i(this.mode<=r.UNZIP),this.mode===r.DEFLATE||this.mode===r.GZIP||this.mode===r.DEFLATERAW?a.deflateEnd(this.strm):this.mode!==r.INFLATE&&this.mode!==r.GUNZIP&&this.mode!==r.INFLATERAW&&this.mode!==r.UNZIP||s.inflateEnd(this.strm),this.mode=r.NONE,this.dictionary=null)},f.prototype.write=function(e,t,r,n,i,o,a){return this._write(!0,e,t,r,n,i,o,a)},f.prototype.writeSync=function(e,t,r,n,i,o,a){return this._write(!1,e,t,r,n,i,o,a)},f.prototype._write=function(e,o,a,s,u,l,f,c){if(i.equal(arguments.length,8),i(this.init_done,"write before init"),i(this.mode!==r.NONE,"already finalized"),i.equal(!1,this.write_in_progress,"write already in progress"),i.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,i.equal(!1,void 0===o,"must provide flush value"),this.write_in_progress=!0,o!==r.Z_NO_FLUSH&&o!==r.Z_PARTIAL_FLUSH&&o!==r.Z_SYNC_FLUSH&&o!==r.Z_FULL_FLUSH&&o!==r.Z_FINISH&&o!==r.Z_BLOCK)throw new Error("Invalid flush value");if(null==a&&(a=n.alloc(0),u=0,s=0),this.strm.avail_in=u,this.strm.input=a,this.strm.next_in=s,this.strm.avail_out=c,this.strm.output=l,this.strm.next_out=f,this.flush=o,!e)return this._process(),this._checkError()?this._afterSync():void 0;var h=this;return t.nextTick(function(){h._process(),h._after()}),this},f.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},f.prototype._process=function(){var e=null;switch(this.mode){case r.DEFLATE:case r.GZIP:case r.DEFLATERAW:this.err=a.deflate(this.strm,this.flush);break;case r.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=r.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=r.GUNZIP):this.mode=r.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case r.INFLATE:case r.GUNZIP:case r.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===r.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===r.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===r.Z_DATA_ERROR&&(this.err=r.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===r.GUNZIP&&this.err===r.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},f.prototype._checkError=function(){switch(this.err){case r.Z_OK:case r.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===r.Z_FINISH)return this._error("unexpected end of file"),!1;break;case r.Z_STREAM_END:break;case r.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},f.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},f.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},f.prototype.init=function(e,t,n,o,a){i(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),i(e>=8&&e<=15,"invalid windowBits"),i(t>=-1&&t<=9,"invalid compression level"),i(n>=1&&n<=9,"invalid memlevel"),i(o===r.Z_FILTERED||o===r.Z_HUFFMAN_ONLY||o===r.Z_RLE||o===r.Z_FIXED||o===r.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(t,e,n,o,a),this._setDictionary()},f.prototype.params=function(){throw new Error("deflateParams Not supported")},f.prototype.reset=function(){this._reset(),this._setDictionary()},f.prototype._init=function(e,t,n,i,u){switch(this.level=e,this.windowBits=t,this.memLevel=n,this.strategy=i,this.flush=r.Z_NO_FLUSH,this.err=r.Z_OK,this.mode!==r.GZIP&&this.mode!==r.GUNZIP||(this.windowBits+=16),this.mode===r.UNZIP&&(this.windowBits+=32),this.mode!==r.DEFLATERAW&&this.mode!==r.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new o,this.mode){case r.DEFLATE:case r.GZIP:case r.DEFLATERAW:this.err=a.deflateInit2(this.strm,this.level,r.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case r.INFLATE:case r.GUNZIP:case r.INFLATERAW:case r.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==r.Z_OK&&this._error("Init error"),this.dictionary=u,this.write_in_progress=!1,this.init_done=!0},f.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=r.Z_OK,this.mode){case r.DEFLATE:case r.DEFLATERAW:this.err=a.deflateSetDictionary(this.strm,this.dictionary)}this.err!==r.Z_OK&&this._error("Failed to set dictionary")}},f.prototype._reset=function(){switch(this.err=r.Z_OK,this.mode){case r.DEFLATE:case r.DEFLATERAW:case r.GZIP:this.err=a.deflateReset(this.strm);break;case r.INFLATE:case r.INFLATERAW:case r.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==r.Z_OK&&this._error("Failed to reset stream")},r.Zlib=f}).call(this)}).call(this,e("_process"),e("buffer").Buffer)},{_process:97,assert:15,buffer:23,"pako/lib/zlib/constants":83,"pako/lib/zlib/deflate.js":85,"pako/lib/zlib/inflate.js":87,"pako/lib/zlib/zstream":91}],21:[function(e,t,r){(function(t){(function(){"use strict";var n=e("buffer").Buffer,i=e("stream").Transform,o=e("./binding"),a=e("util"),s=e("assert").ok,u=e("buffer").kMaxLength,l="Cannot create final Buffer. It would be larger than 0x"+u.toString(16)+" bytes";o.Z_MIN_WINDOWBITS=8,o.Z_MAX_WINDOWBITS=15,o.Z_DEFAULT_WINDOWBITS=15,o.Z_MIN_CHUNK=64,o.Z_MAX_CHUNK=1/0,o.Z_DEFAULT_CHUNK=16384,o.Z_MIN_MEMLEVEL=1,o.Z_MAX_MEMLEVEL=9,o.Z_DEFAULT_MEMLEVEL=8,o.Z_MIN_LEVEL=-1,o.Z_MAX_LEVEL=9,o.Z_DEFAULT_LEVEL=o.Z_DEFAULT_COMPRESSION;for(var f=Object.keys(o),c=0;c=u?a=new RangeError(l):t=n.concat(i,o),i=[],e.close(),r(a,t)}e.on("error",function(t){e.removeListener("end",s),e.removeListener("readable",a),r(t)}),e.on("end",s),e.end(t),a()}function m(e,t){if("string"==typeof t&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError("Not a string or buffer");var r=e._finishFlushFlag;return e._processChunk(t,r)}function v(e){if(!(this instanceof v))return new v(e);S.call(this,e,o.DEFLATE)}function w(e){if(!(this instanceof w))return new w(e);S.call(this,e,o.INFLATE)}function _(e){if(!(this instanceof _))return new _(e);S.call(this,e,o.GZIP)}function E(e){if(!(this instanceof E))return new E(e);S.call(this,e,o.GUNZIP)}function x(e){if(!(this instanceof x))return new x(e);S.call(this,e,o.DEFLATERAW)}function T(e){if(!(this instanceof T))return new T(e);S.call(this,e,o.INFLATERAW)}function k(e){if(!(this instanceof k))return new k(e);S.call(this,e,o.UNZIP)}function N(e){return e===o.Z_NO_FLUSH||e===o.Z_PARTIAL_FLUSH||e===o.Z_SYNC_FLUSH||e===o.Z_FULL_FLUSH||e===o.Z_FINISH||e===o.Z_BLOCK}function S(e,t){var a=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||r.Z_DEFAULT_CHUNK,i.call(this,e),e.flush&&!N(e.flush))throw new Error("Invalid flush flag: "+e.flush);if(e.finishFlush&&!N(e.finishFlush))throw new Error("Invalid flush flag: "+e.finishFlush);if(this._flushFlag=e.flush||o.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:o.Z_FINISH,e.chunkSize&&(e.chunkSizer.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBitsr.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.levelr.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevelr.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=r.Z_FILTERED&&e.strategy!=r.Z_HUFFMAN_ONLY&&e.strategy!=r.Z_RLE&&e.strategy!=r.Z_FIXED&&e.strategy!=r.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!n.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new o.Zlib(t);var s=this;this._hadError=!1,this._handle.onerror=function(e,t){I(s),s._hadError=!0;var n=new Error(e);n.errno=t,n.code=r.codes[t],s.emit("error",n)};var u=r.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(u=e.level);var l=r.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(l=e.strategy),this._handle.init(e.windowBits||r.Z_DEFAULT_WINDOWBITS,u,e.memLevel||r.Z_DEFAULT_MEMLEVEL,l,e.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=u,this._strategy=l,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!a._handle},configurable:!0,enumerable:!0})}function I(e,r){r&&t.nextTick(r),e._handle&&(e._handle.close(),e._handle=null)}function A(e){e.emit("close")}Object.defineProperty(r,"codes",{enumerable:!0,value:Object.freeze(d),writable:!1}),r.Deflate=v,r.Inflate=w,r.Gzip=_,r.Gunzip=E,r.DeflateRaw=x,r.InflateRaw=T,r.Unzip=k,r.createDeflate=function(e){return new v(e)},r.createInflate=function(e){return new w(e)},r.createDeflateRaw=function(e){return new x(e)},r.createInflateRaw=function(e){return new T(e)},r.createGzip=function(e){return new _(e)},r.createGunzip=function(e){return new E(e)},r.createUnzip=function(e){return new k(e)},r.deflate=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new v(t),e,r)},r.deflateSync=function(e,t){return m(new v(t),e)},r.gzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new _(t),e,r)},r.gzipSync=function(e,t){return m(new _(t),e)},r.deflateRaw=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new x(t),e,r)},r.deflateRawSync=function(e,t){return m(new x(t),e)},r.unzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new k(t),e,r)},r.unzipSync=function(e,t){return m(new k(t),e)},r.inflate=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new w(t),e,r)},r.inflateSync=function(e,t){return m(new w(t),e)},r.gunzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new E(t),e,r)},r.gunzipSync=function(e,t){return m(new E(t),e)},r.inflateRaw=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new T(t),e,r)},r.inflateRawSync=function(e,t){return m(new T(t),e)},a.inherits(S,i),S.prototype.params=function(e,n,i){if(er.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+e);if(n!=r.Z_FILTERED&&n!=r.Z_HUFFMAN_ONLY&&n!=r.Z_RLE&&n!=r.Z_FIXED&&n!=r.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+n);if(this._level!==e||this._strategy!==n){var a=this;this.flush(o.Z_SYNC_FLUSH,function(){s(a._handle,"zlib binding closed"),a._handle.params(e,n),a._hadError||(a._level=e,a._strategy=n,i&&i())})}else t.nextTick(i)},S.prototype.reset=function(){return s(this._handle,"zlib binding closed"),this._handle.reset()},S.prototype._flush=function(e){this._transform(n.alloc(0),"",e)},S.prototype.flush=function(e,r){var i=this,a=this._writableState;("function"==typeof e||void 0===e&&!r)&&(r=e,e=o.Z_FULL_FLUSH),a.ended?r&&t.nextTick(r):a.ending?r&&this.once("end",r):a.needDrain?r&&this.once("drain",function(){return i.flush(e,r)}):(this._flushFlag=e,this.write(n.alloc(0),"",r))},S.prototype.close=function(e){I(this,e),t.nextTick(A,this)},S.prototype._transform=function(e,t,r){var i,a=this._writableState,s=(a.ending||a.ended)&&(!e||a.length===e.length);return null===e||n.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=a.length&&(this._flushFlag=this._opts.flush||o.Z_NO_FLUSH)),void this._processChunk(e,i,r)):r(new Error("zlib binding closed")):r(new Error("invalid input"))},S.prototype._processChunk=function(e,t,r){var i=e&&e.length,o=this._chunkSize-this._offset,a=0,f=this,c="function"==typeof r;if(!c){var h,d=[],p=0;this.on("error",function(e){h=e}),s(this._handle,"zlib binding closed");do{var g=this._handle.writeSync(t,e,a,i,this._buffer,this._offset,o)}while(!this._hadError&&m(g[0],g[1]));if(this._hadError)throw h;if(p>=u)throw I(this),new RangeError(l);var y=n.concat(d,p);return I(this),y}s(this._handle,"zlib binding closed");var b=this._handle.write(t,e,a,i,this._buffer,this._offset,o);function m(u,l){if(this&&(this.buffer=null,this.callback=null),!f._hadError){var h=o-l;if(s(h>=0,"have should not go down"),h>0){var g=f._buffer.slice(f._offset,f._offset+h);f._offset+=h,c?f.push(g):(d.push(g),p+=g.length)}if((0===l||f._offset>=f._chunkSize)&&(o=f._chunkSize,f._offset=0,f._buffer=n.allocUnsafe(f._chunkSize)),0===l){if(a+=i-u,i=u,!c)return!0;var y=f._handle.write(t,e,a,i,f._buffer,f._offset,f._chunkSize);return y.callback=m,void(y.buffer=e)}if(!c)return!1;r()}}b.buffer=e,b.callback=m},a.inherits(v,S),a.inherits(w,S),a.inherits(_,S),a.inherits(E,S),a.inherits(x,S),a.inherits(T,S),a.inherits(k,S)}).call(this)}).call(this,e("_process"))},{"./binding":20,_process:97,assert:15,buffer:23,stream:114,util:122}],22:[function(e,t,r){arguments[4][19][0].apply(r,arguments)},{dup:19}],23:[function(e,t,r){(function(t){(function(){"use strict";var t=e("base64-js"),n=e("ieee754");r.Buffer=a,r.SlowBuffer=function(e){+e!=e&&(e=0);return a.alloc(+e)},r.INSPECT_MAX_BYTES=50;var i=2147483647;function o(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=a.prototype,t}function a(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return l(e)}return s(e,t,r)}function s(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!a.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|h(e,t),n=o(r),i=n.write(e,t);i!==r&&(n=n.slice(0,i));return n}(e,t);if(ArrayBuffer.isView(e))return f(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(j(e,ArrayBuffer)||e&&j(e.buffer,ArrayBuffer))return function(e,t,r){if(t<0||e.byteLength=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function h(e,t){if(a.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||j(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return R(e).length;default:if(i)return n?-1:B(e).length;t=(""+t).toLowerCase(),i=!0}}function d(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function p(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),F(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=a.from(t,n)),a.isBuffer(t))return 0===t.length?-1:g(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):g(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function g(e,t,r,n,i){var o,a=1,s=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var f=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){for(var c=!0,h=0;hi&&(n=i):n=i;var o=t.length;n>o/2&&(n=o/2);for(var a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function E(e,r,n){return 0===r&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,n))}function x(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:l>223?3:l>191?2:1;if(i+c<=r)switch(c){case 1:l<128&&(f=l);break;case 2:128==(192&(o=e[i+1]))&&(u=(31&l)<<6|63&o)>127&&(f=u);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(u=(15&l)<<12|(63&o)<<6|63&a)>2047&&(u<55296||u>57343)&&(f=u);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(u=(15&l)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&u<1114112&&(f=u)}null===f?(f=65533,c=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),i+=c}return function(e){var t=e.length;if(t<=T)return String.fromCharCode.apply(String,e);var r="",n=0;for(;nthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return S(this,t,r);case"utf8":case"utf-8":return x(this,t,r);case"ascii":return k(this,t,r);case"latin1":case"binary":return N(this,t,r);case"base64":return E(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}.apply(this,arguments)},a.prototype.toLocaleString=a.prototype.toString,a.prototype.equals=function(e){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===a.compare(this,e)},a.prototype.inspect=function(){var e="",t=r.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),""},a.prototype.compare=function(e,t,r,n,i){if(j(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),!a.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var o=i-n,s=r-t,u=Math.min(o,s),l=this.slice(n,i),f=e.slice(t,r),c=0;c>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return y(this,e,t,r);case"utf8":case"utf-8":return b(this,e,t,r);case"ascii":return m(this,e,t,r);case"latin1":case"binary":return v(this,e,t,r);case"base64":return w(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var T=4096;function k(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i="",o=t;or)throw new RangeError("Trying to access beyond buffer length")}function D(e,t,r,n,i,o){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function L(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function O(e,t,r,i,o){return t=+t,r>>>=0,o||L(e,0,r,4),n.write(e,t,r,i,23,4),r+4}function M(e,t,r,i,o){return t=+t,r>>>=0,o||L(e,0,r,8),n.write(e,t,r,i,52,8),r+8}a.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||A(e,t,this.length);for(var n=this[e],i=1,o=0;++o>>=0,t>>>=0,r||A(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},a.prototype.readUInt8=function(e,t){return e>>>=0,t||A(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return e>>>=0,t||A(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return e>>>=0,t||A(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return e>>>=0,t||A(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return e>>>=0,t||A(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||A(e,t,this.length);for(var n=this[e],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*t)),n},a.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||A(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},a.prototype.readInt8=function(e,t){return e>>>=0,t||A(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){e>>>=0,t||A(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(e,t){e>>>=0,t||A(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(e,t){return e>>>=0,t||A(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return e>>>=0,t||A(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return e>>>=0,t||A(e,4,this.length),n.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return e>>>=0,t||A(e,4,this.length),n.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return e>>>=0,t||A(e,8,this.length),n.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return e>>>=0,t||A(e,8,this.length),n.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||D(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o>>=0,r>>>=0,n)||D(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},a.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,1,255,0),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},a.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);D(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+r},a.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);D(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},a.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||D(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeFloatLE=function(e,t,r){return O(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return O(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,n){if(!a.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--o)e[o+t]=this[o+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return i},a.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!a.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var i=e.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(e=i)}}else"number"==typeof e&&(e&=255);if(t<0||this.length>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function R(e){return t.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(U,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function P(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function j(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function F(e){return e!=e}}).call(this)}).call(this,e("buffer").Buffer)},{"base64-js":16,buffer:23,ieee754:66}],24:[function(e,t,r){(function(e){(function(){t.exports=new function(){var t,r=!1,n=this;n._DeArray=function(e,t,r){return[e.slice(t,t+r)]},n._EnArray=function(e,t,r,n){for(var i=0;it.max?t.max:i,o=a;o!=u;e[n+o]=255&i,o+=s,i>>=8);},n._DeString=function(e,t,r){for(var n=new Array(r),i=0;i>1,s=r?0:t.len-1,u=r?1:-1,i=e[n+s],s+=u,o=i&(1<<-(l=-7))-1,i>>=-l,l+=c;l>0;o=256*o+e[n+s],s+=u,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=f;l>0;a=256*a+e[n+s],s+=u,l-=8);switch(o){case 0:o=1-h;break;case d:return a?NaN:1/0*(i?-1:1);default:a+=Math.pow(2,f),o-=h}return(i?-1:1)*a*Math.pow(2,o-f)},n._En754=function(e,n,i){var o,a,s,u,l,f,c,h,d,p;for(c=t.mLen,d=(p=(1<<(h=8*t.len-t.mLen-1))-1)>>1,o=i<0?1:0,i=Math.abs(i),isNaN(i)||i==1/0?(s=isNaN(i)?1:0,a=p):(a=Math.floor(Math.log(i)/Math.LN2),i*(f=Math.pow(2,-a))<1&&(a--,f*=2),(i+=a+d>=1?t.rt/f:t.rt*Math.pow(2,1-d))*f>=2&&(a++,f/=2),a+d>=p?(s=0,a=p):a+d>=1?(s=(i*f-1)*Math.pow(2,c),a+=d):(s=i*Math.pow(2,d-1)*Math.pow(2,c),a=0)),u=r?t.len-1:0,l=r?-1:1;c>=8;e[n+u]=255&s,u+=l,s/=256,c-=8);for(a=a<0;e[n+u]=255&a,u+=l,a/=256,h-=8);e[n+u-l]|=128*o},n._sPattern="(\\d+)?([AxcbBhHsSfdiIlL])(\\(([a-zA-Z0-9]+)\\))?",n._lenLut={A:1,x:1,c:1,b:1,B:1,h:2,H:2,s:1,S:1,f:4,d:8,i:4,I:4,l:4,L:4},n._elLut={A:{en:n._EnArray,de:n._DeArray},s:{en:n._EnString,de:n._DeString},S:{en:n._EnString,de:n._DeNullString},c:{en:n._EnChar,de:n._DeChar},b:{en:n._EnInt,de:n._DeInt,len:1,bSigned:!0,min:-Math.pow(2,7),max:Math.pow(2,7)-1},B:{en:n._EnInt,de:n._DeInt,len:1,bSigned:!1,min:0,max:Math.pow(2,8)-1},h:{en:n._EnInt,de:n._DeInt,len:2,bSigned:!0,min:-Math.pow(2,15),max:Math.pow(2,15)-1},H:{en:n._EnInt,de:n._DeInt,len:2,bSigned:!1,min:0,max:Math.pow(2,16)-1},i:{en:n._EnInt,de:n._DeInt,len:4,bSigned:!0,min:-Math.pow(2,31),max:Math.pow(2,31)-1},I:{en:n._EnInt,de:n._DeInt,len:4,bSigned:!1,min:0,max:Math.pow(2,32)-1},l:{en:n._EnInt,de:n._DeInt,len:4,bSigned:!0,min:-Math.pow(2,31),max:Math.pow(2,31)-1},L:{en:n._EnInt,de:n._DeInt,len:4,bSigned:!1,min:0,max:Math.pow(2,32)-1},f:{en:n._En754,de:n._De754,len:4,mLen:23,rt:Math.pow(2,-24)-Math.pow(2,-77)},d:{en:n._En754,de:n._De754,len:8,mLen:52,rt:0}},n._UnpackSeries=function(e,r,n,i){for(var o=t.de,a=[],s=0;sn.length)return;switch(o[2]){case"A":case"s":case"S":f.push(this._elLut[o[2]].de(n,i,a));break;case"c":case"b":case"B":case"h":case"H":case"i":case"I":case"l":case"L":case"f":case"d":t=this._elLut[o[2]],f.push(this._UnpackSeries(a,s,n,i))}l.push(o[4]),i+=a*s}return f=Array.prototype.concat.apply([],f),-1!==l.indexOf(void 0)?f:this._zip(l,f)},n.packTo=function(e,n,i,o){r="<"!=e.charAt(0);for(var a,s,u,l,f=new RegExp(this._sPattern,"g"),c=0;a=f.exec(e);){if(s=void 0==a[1]||""==a[1]?1:parseInt(a[1]),"S"===a[2]&&(s=o[c].length+1),i+s*(u=this._lenLut[a[2]])>n.length)return!1;switch(a[2]){case"A":case"s":case"S":if(c+1>o.length)return!1;this._elLut[a[2]].en(n,i,s,o[c]),c+=1;break;case"c":case"b":case"B":case"h":case"H":case"i":case"I":case"l":case"L":case"f":case"d":if(t=this._elLut[a[2]],c+s>o.length)return!1;this._PackSeries(s,u,n,i,o,c),c+=s;break;case"x":for(l=0;l1024&&(t.push(i.apply(String,e)),e.length=0),Array.prototype.push.apply(e,arguments)}}function s(e,t,r,n,i){var o,a,s=8*i-n-1,u=(1<>1,f=-7,c=r?i-1:0,h=r?-1:1,d=e[t+c];for(c+=h,o=d&(1<<-f)-1,d>>=-f,f+=s;f>0;o=256*o+e[t+c],c+=h,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=n;f>0;a=256*a+e[t+c],c+=h,f-=8);if(0===o)o=1-l;else{if(o===u)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),o-=l}return(d?-1:1)*a*Math.pow(2,o-n)}function u(e,t,r,n,i,o){var a,s,u,l=8*o-i-1,f=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=f):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),(t+=a+c>=1?h/u:h*Math.pow(2,1-c))*u>=2&&(a++,u/=2),a+c>=f?(s=0,a=f):a+c>=1?(s=(t*u-1)*Math.pow(2,i),a+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,l-=8);e[r+d-p]|=128*g}t.accessor=function(){return Uint8Array},t.allocate=function(e,r,n){return new t(e,r,n)},t.concat=function(e,r,n,i){"boolean"!=typeof r&&"string"==typeof r||(i=n,n=r,r=void 0);for(var o,a=0,s=0,u=e.length;s0&&(a+=o);if(0===a)return new t(0,n,i);var l,f=new t(a,n,i);for(s=0;s0&&(a.buffer=e.buffer,a.offset=e.byteOffset,a.limit=e.byteOffset+e.byteLength,a.view=new Uint8Array(e.buffer));else if(e instanceof ArrayBuffer)a=new t(0,i,o),e.byteLength>0&&(a.buffer=e,a.offset=0,a.limit=e.byteLength,a.view=e.byteLength>0?new Uint8Array(e):null);else{if("[object Array]"!==Object.prototype.toString.call(e))throw TypeError("Illegal buffer");(a=new t(e.length,i,o)).limit=e.length;for(var s=0;s>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}var n,i=t,o=e.length,a=o>>3,s=0;for(t+=this.writeVarint32(o,t);a--;)n=1&!!e[s++]|(1&!!e[s++])<<1|(1&!!e[s++])<<2|(1&!!e[s++])<<3|(1&!!e[s++])<<4|(1&!!e[s++])<<5|(1&!!e[s++])<<6|(1&!!e[s++])<<7,this.writeByte(n,t++);if(s>3,a=0,s=[];for(e+=n.length;o--;)r=this.readByte(e++),s[a++]=!!(1&r),s[a++]=!!(2&r),s[a++]=!!(4&r),s[a++]=!!(8&r),s[a++]=!!(16&r),s[a++]=!!(32&r),s[a++]=!!(64&r),s[a++]=!!(128&r);if(a>u++&1)}return t&&(this.offset=e),s},r.readBytes=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+e+") <= "+this.buffer.byteLength)}var n=this.slice(t,t+e);return r&&(this.offset+=e),n},r.writeBytes=r.append,r.writeInt8=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=1,this.view[t]=e,r&&(this.offset+=1),this},r.writeByte=r.writeInt8,r.readInt8=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r=this.view[e];return 128==(128&r)&&(r=-(255-r+1)),t&&(this.offset+=1),r},r.readByte=r.readInt8,r.writeUint8=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=1,this.view[t]=e,r&&(this.offset+=1),this},r.writeUInt8=r.writeUint8,r.readUint8=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r=this.view[e];return t&&(this.offset+=1),r},r.readUInt8=r.readUint8,r.writeInt16=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=2,this.littleEndian?(this.view[t+1]=(65280&e)>>>8,this.view[t]=255&e):(this.view[t]=(65280&e)>>>8,this.view[t+1]=255&e),r&&(this.offset+=2),this},r.writeShort=r.writeInt16,r.readInt16=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e],r|=this.view[e+1]<<8):(r=this.view[e]<<8,r|=this.view[e+1]),32768==(32768&r)&&(r=-(65535-r+1)),t&&(this.offset+=2),r},r.readShort=r.readInt16,r.writeUint16=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=2,this.littleEndian?(this.view[t+1]=(65280&e)>>>8,this.view[t]=255&e):(this.view[t]=(65280&e)>>>8,this.view[t+1]=255&e),r&&(this.offset+=2),this},r.writeUInt16=r.writeUint16,r.readUint16=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e],r|=this.view[e+1]<<8):(r=this.view[e]<<8,r|=this.view[e+1]),t&&(this.offset+=2),r},r.readUInt16=r.readUint16,r.writeInt32=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=4,this.littleEndian?(this.view[t+3]=e>>>24&255,this.view[t+2]=e>>>16&255,this.view[t+1]=e>>>8&255,this.view[t]=255&e):(this.view[t]=e>>>24&255,this.view[t+1]=e>>>16&255,this.view[t+2]=e>>>8&255,this.view[t+3]=255&e),r&&(this.offset+=4),this},r.writeInt=r.writeInt32,r.readInt32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e+2]<<16,r|=this.view[e+1]<<8,r|=this.view[e],r+=this.view[e+3]<<24>>>0):(r=this.view[e+1]<<16,r|=this.view[e+2]<<8,r|=this.view[e+3],r+=this.view[e]<<24>>>0),r|=0,t&&(this.offset+=4),r},r.readInt=r.readInt32,r.writeUint32=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=4,this.littleEndian?(this.view[t+3]=e>>>24&255,this.view[t+2]=e>>>16&255,this.view[t+1]=e>>>8&255,this.view[t]=255&e):(this.view[t]=e>>>24&255,this.view[t+1]=e>>>16&255,this.view[t+2]=e>>>8&255,this.view[t+3]=255&e),r&&(this.offset+=4),this},r.writeUInt32=r.writeUint32,r.readUint32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=0;return this.littleEndian?(r=this.view[e+2]<<16,r|=this.view[e+1]<<8,r|=this.view[e],r+=this.view[e+3]<<24>>>0):(r=this.view[e+1]<<16,r|=this.view[e+2]<<8,r|=this.view[e+3],r+=this.view[e]<<24>>>0),t&&(this.offset+=4),r},r.readUInt32=r.readUint32,e&&(r.writeInt64=function(t,r){var n=void 0===r;if(n&&(r=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),r+=8;var i=this.buffer.byteLength;r>i&&this.resize((i*=2)>r?i:r),r-=8;var o=t.low,a=t.high;return this.littleEndian?(this.view[r+3]=o>>>24&255,this.view[r+2]=o>>>16&255,this.view[r+1]=o>>>8&255,this.view[r]=255&o,r+=4,this.view[r+3]=a>>>24&255,this.view[r+2]=a>>>16&255,this.view[r+1]=a>>>8&255,this.view[r]=255&a):(this.view[r]=a>>>24&255,this.view[r+1]=a>>>16&255,this.view[r+2]=a>>>8&255,this.view[r+3]=255&a,r+=4,this.view[r]=o>>>24&255,this.view[r+1]=o>>>16&255,this.view[r+2]=o>>>8&255,this.view[r+3]=255&o),n&&(this.offset+=8),this},r.writeLong=r.writeInt64,r.readInt64=function(t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var n=0,i=0;this.littleEndian?(n=this.view[t+2]<<16,n|=this.view[t+1]<<8,n|=this.view[t],n+=this.view[t+3]<<24>>>0,t+=4,i=this.view[t+2]<<16,i|=this.view[t+1]<<8,i|=this.view[t],i+=this.view[t+3]<<24>>>0):(i=this.view[t+1]<<16,i|=this.view[t+2]<<8,i|=this.view[t+3],i+=this.view[t]<<24>>>0,t+=4,n=this.view[t+1]<<16,n|=this.view[t+2]<<8,n|=this.view[t+3],n+=this.view[t]<<24>>>0);var o=new e(n,i,!1);return r&&(this.offset+=8),o},r.readLong=r.readInt64,r.writeUint64=function(t,r){var n=void 0===r;if(n&&(r=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),r+=8;var i=this.buffer.byteLength;r>i&&this.resize((i*=2)>r?i:r),r-=8;var o=t.low,a=t.high;return this.littleEndian?(this.view[r+3]=o>>>24&255,this.view[r+2]=o>>>16&255,this.view[r+1]=o>>>8&255,this.view[r]=255&o,r+=4,this.view[r+3]=a>>>24&255,this.view[r+2]=a>>>16&255,this.view[r+1]=a>>>8&255,this.view[r]=255&a):(this.view[r]=a>>>24&255,this.view[r+1]=a>>>16&255,this.view[r+2]=a>>>8&255,this.view[r+3]=255&a,r+=4,this.view[r]=o>>>24&255,this.view[r+1]=o>>>16&255,this.view[r+2]=o>>>8&255,this.view[r+3]=255&o),n&&(this.offset+=8),this},r.writeUInt64=r.writeUint64,r.readUint64=function(t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var n=0,i=0;this.littleEndian?(n=this.view[t+2]<<16,n|=this.view[t+1]<<8,n|=this.view[t],n+=this.view[t+3]<<24>>>0,t+=4,i=this.view[t+2]<<16,i|=this.view[t+1]<<8,i|=this.view[t],i+=this.view[t+3]<<24>>>0):(i=this.view[t+1]<<16,i|=this.view[t+2]<<8,i|=this.view[t+3],i+=this.view[t]<<24>>>0,t+=4,n=this.view[t+1]<<16,n|=this.view[t+2]<<8,n|=this.view[t+3],n+=this.view[t]<<24>>>0);var o=new e(n,i,!0);return r&&(this.offset+=8),o},r.readUInt64=r.readUint64),r.writeFloat32=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=4,u(this.view,e,t,this.littleEndian,23,4),r&&(this.offset+=4),this},r.writeFloat=r.writeFloat32,r.readFloat32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=s(this.view,e,this.littleEndian,23,4);return t&&(this.offset+=4),r},r.readFloat=r.readFloat32,r.writeFloat64=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=8;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=8,u(this.view,e,t,this.littleEndian,52,8),r&&(this.offset+=8),this},r.writeDouble=r.writeFloat64,r.readFloat64=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+8) <= "+this.buffer.byteLength)}var r=s(this.view,e,this.littleEndian,52,8);return t&&(this.offset+=8),r},r.readDouble=r.readFloat64,t.MAX_VARINT32_BYTES=5,t.calculateVarint32=function(e){return(e>>>=0)<128?1:e<16384?2:e<1<<21?3:e<1<<28?4:5},t.zigZagEncode32=function(e){return((e|=0)<<1^e>>31)>>>0},t.zigZagDecode32=function(e){return e>>>1^-(1&e)|0},r.writeVarint32=function(e,r){var n=void 0===r;if(n&&(r=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var i,o=t.calculateVarint32(e);r+=o;var a=this.buffer.byteLength;for(r>a&&this.resize((a*=2)>r?a:r),r-=o,e>>>=0;e>=128;)i=127&e|128,this.view[r++]=i,e>>>=7;return this.view[r++]=e,n?(this.offset=r,this):o},r.writeVarint32ZigZag=function(e,r){return this.writeVarint32(t.zigZagEncode32(e),r)},r.readVarint32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r,n=0,i=0;do{if(!this.noAssert&&e>this.limit){var o=Error("Truncated");throw o.truncated=!0,o}r=this.view[e++],n<5&&(i|=(127&r)<<7*n),++n}while(0!=(128&r));return i|=0,t?(this.offset=e,i):{value:i,length:n}},r.readVarint32ZigZag=function(e){var r=this.readVarint32(e);return"object"==typeof r?r.value=t.zigZagDecode32(r.value):r=t.zigZagDecode32(r),r},e&&(t.MAX_VARINT64_BYTES=10,t.calculateVarint64=function(t){"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t));var r=t.toInt()>>>0,n=t.shiftRightUnsigned(28).toInt()>>>0,i=t.shiftRightUnsigned(56).toInt()>>>0;return 0==i?0==n?r<16384?r<128?1:2:r<1<<21?3:4:n<16384?n<128?5:6:n<1<<21?7:8:i<128?9:10},t.zigZagEncode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):!1!==t.unsigned&&(t=t.toSigned()),t.shiftLeft(1).xor(t.shiftRight(63)).toUnsigned()},t.zigZagDecode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):!1!==t.unsigned&&(t=t.toSigned()),t.shiftRightUnsigned(1).xor(t.and(e.ONE).toSigned().negate()).toSigned()},r.writeVarint64=function(r,n){var i=void 0===n;if(i&&(n=this.offset),!this.noAssert){if("number"==typeof r)r=e.fromNumber(r);else if("string"==typeof r)r=e.fromString(r);else if(!(r&&r instanceof e))throw TypeError("Illegal value: "+r+" (not an integer or Long)");if("number"!=typeof n||n%1!=0)throw TypeError("Illegal offset: "+n+" (not an integer)");if((n>>>=0)<0||n+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+n+" (+0) <= "+this.buffer.byteLength)}"number"==typeof r?r=e.fromNumber(r,!1):"string"==typeof r?r=e.fromString(r,!1):!1!==r.unsigned&&(r=r.toSigned());var o=t.calculateVarint64(r),a=r.toInt()>>>0,s=r.shiftRightUnsigned(28).toInt()>>>0,u=r.shiftRightUnsigned(56).toInt()>>>0;n+=o;var l=this.buffer.byteLength;switch(n>l&&this.resize((l*=2)>n?l:n),n-=o,o){case 10:this.view[n+9]=u>>>7&1;case 9:this.view[n+8]=9!==o?128|u:127&u;case 8:this.view[n+7]=8!==o?s>>>21|128:s>>>21&127;case 7:this.view[n+6]=7!==o?s>>>14|128:s>>>14&127;case 6:this.view[n+5]=6!==o?s>>>7|128:s>>>7&127;case 5:this.view[n+4]=5!==o?128|s:127&s;case 4:this.view[n+3]=4!==o?a>>>21|128:a>>>21&127;case 3:this.view[n+2]=3!==o?a>>>14|128:a>>>14&127;case 2:this.view[n+1]=2!==o?a>>>7|128:a>>>7&127;case 1:this.view[n]=1!==o?128|a:127&a}return i?(this.offset+=o,this):o},r.writeVarint64ZigZag=function(e,r){return this.writeVarint64(t.zigZagEncode64(e),r)},r.readVarint64=function(t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+1) <= "+this.buffer.byteLength)}var n=t,i=0,o=0,a=0,s=0;if(i=127&(s=this.view[t++]),128&s&&(i|=(127&(s=this.view[t++]))<<7,(128&s||this.noAssert&&void 0===s)&&(i|=(127&(s=this.view[t++]))<<14,(128&s||this.noAssert&&void 0===s)&&(i|=(127&(s=this.view[t++]))<<21,(128&s||this.noAssert&&void 0===s)&&(o=127&(s=this.view[t++]),(128&s||this.noAssert&&void 0===s)&&(o|=(127&(s=this.view[t++]))<<7,(128&s||this.noAssert&&void 0===s)&&(o|=(127&(s=this.view[t++]))<<14,(128&s||this.noAssert&&void 0===s)&&(o|=(127&(s=this.view[t++]))<<21,(128&s||this.noAssert&&void 0===s)&&(a=127&(s=this.view[t++]),(128&s||this.noAssert&&void 0===s)&&(a|=(127&(s=this.view[t++]))<<7,128&s||this.noAssert&&void 0===s))))))))))throw Error("Buffer overrun");var u=e.fromBits(i|o<<28,o>>>4|a<<24,!1);return r?(this.offset=t,u):{value:u,length:t-n}},r.readVarint64ZigZag=function(r){var n=this.readVarint64(r);return n&&n.value instanceof e?n.value=t.zigZagDecode64(n.value):n=t.zigZagDecode64(n),n}),r.writeCString=function(e,t){var r=void 0===t;r&&(t=this.offset);var n,i=e.length;if(!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");for(n=0;n>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}i=f.calculateUTF16asUTF8(o(e))[1],t+=i+1;var a=this.buffer.byteLength;return t>a&&this.resize((a*=2)>t?a:t),t-=i+1,f.encodeUTF16toUTF8(o(e),function(e){this.view[t++]=e}.bind(this)),this.view[t++]=0,r?(this.offset=t,this):i},r.readCString=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r,n=e,i=-1;return f.decodeUTF8toUTF16(function(){if(0===i)return null;if(e>=this.limit)throw RangeError("Illegal range: Truncated data, "+e+" < "+this.limit);return 0===(i=this.view[e++])?null:i}.bind(this),r=a(),!0),t?(this.offset=e,r()):{string:r(),length:e-n}},r.writeIString=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}var n,i=t;n=f.calculateUTF16asUTF8(o(e),this.noAssert)[1],t+=4+n;var a=this.buffer.byteLength;if(t>a&&this.resize((a*=2)>t?a:t),t-=4+n,this.littleEndian?(this.view[t+3]=n>>>24&255,this.view[t+2]=n>>>16&255,this.view[t+1]=n>>>8&255,this.view[t]=255&n):(this.view[t]=n>>>24&255,this.view[t+1]=n>>>16&255,this.view[t+2]=n>>>8&255,this.view[t+3]=255&n),t+=4,f.encodeUTF16toUTF8(o(e),function(e){this.view[t++]=e}.bind(this)),t!==i+4+n)throw RangeError("Illegal range: Truncated data, "+t+" == "+(t+4+n));return r?(this.offset=t,this):t-i},r.readIString=function(e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var n=e,i=this.readUint32(e),o=this.readUTF8String(i,t.METRICS_BYTES,e+=4);return e+=o.length,r?(this.offset=e,o.string):{string:o.string,length:e-n}},t.METRICS_CHARS="c",t.METRICS_BYTES="b",r.writeUTF8String=function(e,t){var r,n=void 0===t;if(n&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}var i=t;r=f.calculateUTF16asUTF8(o(e))[1],t+=r;var a=this.buffer.byteLength;return t>a&&this.resize((a*=2)>t?a:t),t-=r,f.encodeUTF16toUTF8(o(e),function(e){this.view[t++]=e}.bind(this)),n?(this.offset=t,this):t-i},r.writeString=r.writeUTF8String,t.calculateUTF8Chars=function(e){return f.calculateUTF16asUTF8(o(e))[0]},t.calculateUTF8Bytes=function(e){return f.calculateUTF16asUTF8(o(e))[1]},t.calculateString=t.calculateUTF8Bytes,r.readUTF8String=function(e,r,n){"number"==typeof r&&(n=r,r=void 0);var i=void 0===n;if(i&&(n=this.offset),void 0===r&&(r=t.METRICS_CHARS),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal length: "+e+" (not an integer)");if(e|=0,"number"!=typeof n||n%1!=0)throw TypeError("Illegal offset: "+n+" (not an integer)");if((n>>>=0)<0||n+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+n+" (+0) <= "+this.buffer.byteLength)}var o,s=0,u=n;if(r===t.METRICS_CHARS){if(o=a(),f.decodeUTF8(function(){return s>>=0)<0||n+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+n+" (+"+e+") <= "+this.buffer.byteLength)}var l=n+e;if(f.decodeUTF8toUTF16(function(){return n>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var i,a,s=r;i=f.calculateUTF16asUTF8(o(e),this.noAssert)[1],a=t.calculateVarint32(i),r+=a+i;var u=this.buffer.byteLength;if(r>u&&this.resize((u*=2)>r?u:r),r-=a+i,r+=this.writeVarint32(i,r),f.encodeUTF16toUTF8(o(e),function(e){this.view[r++]=e}.bind(this)),r!==s+i+a)throw RangeError("Illegal range: Truncated data, "+r+" == "+(r+i+a));return n?(this.offset=r,this):r-s},r.readVString=function(e){var r=void 0===e;if(r&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var n=e,i=this.readVarint32(e),o=this.readUTF8String(i.value,t.METRICS_BYTES,e+=i.length);return e+=o.length,r?(this.offset=e,o.string):{string:o.string,length:e-n}},r.append=function(e,r,n){"number"!=typeof r&&"string"==typeof r||(n=r,r=void 0);var i=void 0===n;if(i&&(n=this.offset),!this.noAssert){if("number"!=typeof n||n%1!=0)throw TypeError("Illegal offset: "+n+" (not an integer)");if((n>>>=0)<0||n+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+n+" (+0) <= "+this.buffer.byteLength)}e instanceof t||(e=t.wrap(e,r));var o=e.limit-e.offset;if(o<=0)return this;n+=o;var a=this.buffer.byteLength;return n>a&&this.resize((a*=2)>n?a:n),n-=o,this.view.set(e.view.subarray(e.offset,e.limit),n),e.offset+=o,i&&(this.offset+=o),this},r.appendTo=function(e,t){return e.append(this,t),this},r.assert=function(e){return this.noAssert=!e,this},r.capacity=function(){return this.buffer.byteLength},r.clear=function(){return this.offset=0,this.limit=this.buffer.byteLength,this.markedOffset=-1,this},r.clone=function(e){var r=new t(0,this.littleEndian,this.noAssert);return e?(r.buffer=new ArrayBuffer(this.buffer.byteLength),r.view=new Uint8Array(r.buffer)):(r.buffer=this.buffer,r.view=this.view),r.offset=this.offset,r.markedOffset=this.markedOffset,r.limit=this.limit,r},r.compact=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(0===e&&t===this.buffer.byteLength)return this;var r=t-e;if(0===r)return this.buffer=n,this.view=null,this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=0,this;var i=new ArrayBuffer(r),o=new Uint8Array(i);return o.set(this.view.subarray(e,t)),this.buffer=i,this.view=o,this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=r,this},r.copy=function(e,r){if(void 0===e&&(e=this.offset),void 0===r&&(r=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof r||r%1!=0)throw TypeError("Illegal end: Not an integer");if(r>>>=0,e<0||e>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+r+" <= "+this.buffer.byteLength)}if(e===r)return new t(0,this.littleEndian,this.noAssert);var n=r-e,i=new t(n,this.littleEndian,this.noAssert);return i.offset=0,i.limit=n,i.markedOffset>=0&&(i.markedOffset-=e),this.copyTo(i,0,e,r),i},r.copyTo=function(e,r,n,i){var o,a;if(!this.noAssert&&!t.isByteBuffer(e))throw TypeError("Illegal target: Not a ByteBuffer");if(r=(a=void 0===r)?e.offset:0|r,n=(o=void 0===n)?this.offset:0|n,i=void 0===i?this.limit:0|i,r<0||r>e.buffer.byteLength)throw RangeError("Illegal target range: 0 <= "+r+" <= "+e.buffer.byteLength);if(n<0||i>this.buffer.byteLength)throw RangeError("Illegal source range: 0 <= "+n+" <= "+this.buffer.byteLength);var s=i-n;return 0===s?e:(e.ensureCapacity(r+s),e.view.set(this.view.subarray(n,i),r),o&&(this.offset+=s),a&&(e.offset+=s),this)},r.ensureCapacity=function(e){var t=this.buffer.byteLength;return te?t:e):this},r.fill=function(e,t,r){var n=void 0===t;if(n&&(t=this.offset),"string"==typeof e&&e.length>0&&(e=e.charCodeAt(0)),void 0===t&&(t=this.offset),void 0===r&&(r=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal begin: Not an integer");if(t>>>=0,"number"!=typeof r||r%1!=0)throw TypeError("Illegal end: Not an integer");if(r>>>=0,t<0||t>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+r+" <= "+this.buffer.byteLength)}if(t>=r)return this;for(;t>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}return this.markedOffset=e,this},r.order=function(e){if(!this.noAssert&&"boolean"!=typeof e)throw TypeError("Illegal littleEndian: Not a boolean");return this.littleEndian=!!e,this},r.LE=function(e){return this.littleEndian=void 0===e||!!e,this},r.BE=function(e){return this.littleEndian=void 0!==e&&!e,this},r.prepend=function(e,r,n){"number"!=typeof r&&"string"==typeof r||(n=r,r=void 0);var i=void 0===n;if(i&&(n=this.offset),!this.noAssert){if("number"!=typeof n||n%1!=0)throw TypeError("Illegal offset: "+n+" (not an integer)");if((n>>>=0)<0||n+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+n+" (+0) <= "+this.buffer.byteLength)}e instanceof t||(e=t.wrap(e,r));var o=e.limit-e.offset;if(o<=0)return this;var a=o-n;if(a>0){var s=new ArrayBuffer(this.buffer.byteLength+a),u=new Uint8Array(s);u.set(this.view.subarray(n,this.buffer.byteLength),o),this.buffer=s,this.view=u,this.offset+=a,this.markedOffset>=0&&(this.markedOffset+=a),this.limit+=a,n+=a}else new Uint8Array(this.buffer);return this.view.set(e.view.subarray(e.offset,e.limit),n-o),e.offset=e.limit,i&&(this.offset-=o),this},r.prependTo=function(e,t){return e.prepend(this,t),this},r.printDebug=function(e){"function"!=typeof e&&(e=console.log.bind(console)),e(this.toString()+"\n-------------------------------------------------------------------\n"+this.toDebug(!0))},r.remaining=function(){return this.limit-this.offset},r.reset=function(){return this.markedOffset>=0?(this.offset=this.markedOffset,this.markedOffset=-1):this.offset=0,this},r.resize=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal capacity: "+e+" (not an integer)");if((e|=0)<0)throw RangeError("Illegal capacity: 0 <= "+e)}if(this.buffer.byteLength>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}return e===t?this:(Array.prototype.reverse.call(this.view.subarray(e,t)),this)},r.skip=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal length: "+e+" (not an integer)");e|=0}var t=this.offset+e;if(!this.noAssert&&(t<0||t>this.buffer.byteLength))throw RangeError("Illegal length: 0 <= "+this.offset+" + "+e+" <= "+this.buffer.byteLength);return this.offset=t,this},r.slice=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var r=this.clone();return r.offset=e,r.limit=t,r},r.toBuffer=function(e){var t=this.offset,r=this.limit;if(!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: Not an integer");if(t>>>=0,"number"!=typeof r||r%1!=0)throw TypeError("Illegal limit: Not an integer");if(r>>>=0,t<0||t>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+r+" <= "+this.buffer.byteLength)}if(!e&&0===t&&r===this.buffer.byteLength)return this.buffer;if(t===r)return n;var i=new ArrayBuffer(r-t);return new Uint8Array(i).set(new Uint8Array(this.buffer).subarray(t,r),0),i},r.toArrayBuffer=r.toBuffer,r.toString=function(e,t,r){if(void 0===e)return"ByteBufferAB(offset="+this.offset+",markedOffset="+this.markedOffset+",limit="+this.limit+",capacity="+this.capacity()+")";switch("number"==typeof e&&(r=t=e="utf8"),e){case"utf8":return this.toUTF8(t,r);case"base64":return this.toBase64(t,r);case"hex":return this.toHex(t,r);case"binary":return this.toBinary(t,r);case"debug":return this.toDebug();case"columns":return this.toColumns();default:throw Error("Unsupported encoding: "+e)}};var l=function(){for(var e={},t=[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47],r=[],n=0,i=t.length;n>2&63]),i=(3&n)<<4,null!==(n=e())?(r(t[63&((i|=n>>4&15)|n>>4&15)]),i=(15&n)<<2,null!==(n=e())?(r(t[63&(i|n>>6&3)]),r(t[63&n])):(r(t[63&i]),r(61))):(r(t[63&i]),r(61),r(61))},e.decode=function(e,t){var n,i,o;function a(e){throw Error("Illegal character code: "+e)}for(;null!==(n=e());)if(void 0===(i=r[n])&&a(n),null!==(n=e())&&(void 0===(o=r[n])&&a(n),t(i<<2>>>0|(48&o)>>4),null!==(n=e()))){if(void 0===(i=r[n])){if(61===n)break;a(n)}if(t((15&o)<<4>>>0|(60&i)>>2),null!==(n=e())){if(void 0===(o=r[n])){if(61===n)break;a(n)}t((3&i)<<6>>>0|o)}}},e.test=function(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)},e}();r.toBase64=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),t|=0,(e|=0)<0||t>this.capacity||e>t)throw RangeError("begin, end");var r;return l.encode(function(){return ethis.capacity()||e>t)throw RangeError("begin, end");if(e===t)return"";for(var r=[],n=[];e=1024&&(n.push(String.fromCharCode.apply(String,r)),r=[]);return n.join("")+String.fromCharCode.apply(String,r)},t.fromBinary=function(e,r){if("string"!=typeof e)throw TypeError("str");for(var n,i=0,o=e.length,a=new t(o,r);i255)throw RangeError("illegal char code: "+n);a.view[i++]=n}return a.limit=o,a},r.toDebug=function(e){for(var t,r=-1,n=this.buffer.byteLength,i="",o="",a="";r32&&t<127?String.fromCharCode(t):".")),++r,e&&r>0&&r%16==0&&r!==n){for(;i.length<51;)i+=" ";a+=i+o+"\n",i=o=""}r===this.offset&&r===this.limit?i+=r===this.markedOffset?"!":"|":r===this.offset?i+=r===this.markedOffset?"[":"<":r===this.limit?i+=r===this.markedOffset?"]":">":i+=r===this.markedOffset?"'":e||0!==r&&r!==n?" ":""}if(e&&" "!==i){for(;i.length<51;)i+=" ";a+=i+o+"\n"}return e?a:i},t.fromDebug=function(e,r,n){for(var i,o,a=e.length,s=new t((a+1)/3|0,r,n),u=0,l=0,f=!1,c=!1,h=!1,d=!1,p=!1;u":if(!n){if(d){p=!0;break}d=!0}s.limit=l,f=!1;break;case"'":if(!n){if(h){p=!0;break}h=!0}s.markedOffset=l,f=!1;break;case" ":f=!1;break;default:if(!n&&f){p=!0;break}if(o=parseInt(i+e.charAt(u++),16),!n&&(isNaN(o)||o<0||o>255))throw TypeError("Illegal str: Not a debug encoded string");s.view[l++]=o,f=!0}if(p)throw TypeError("Illegal str: Invalid symbol at "+u)}if(!n){if(!c||!d)throw TypeError("Illegal str: Missing offset or limit");if(l>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}for(var r,n=new Array(t-e);e255))throw TypeError("Illegal str: Contains non-hex characters");a.view[u++]=i}return a.limit=u,a};var f=function(){var e={MAX_CODEPOINT:1114111,encodeUTF8:function(e,t){var r=null;for("number"==typeof e&&(r=e,e=function(){return null});null!==r||null!==(r=e());)r<128?t(127&r):r<2048?(t(r>>6&31|192),t(63&r|128)):r<65536?(t(r>>12&15|224),t(r>>6&63|128),t(63&r|128)):(t(r>>18&7|240),t(r>>12&63|128),t(r>>6&63|128),t(63&r|128)),r=null},decodeUTF8:function(e,t){for(var r,n,i,o,a=function(e){e=e.slice(0,e.indexOf(null));var t=Error(e.toString());throw t.name="TruncatedError",t.bytes=e,t};null!==(r=e());)if(0==(128&r))t(r);else if(192==(224&r))null===(n=e())&&a([r,n]),t((31&r)<<6|63&n);else if(224==(240&r))(null===(n=e())||null===(i=e()))&&a([r,n,i]),t((15&r)<<12|(63&n)<<6|63&i);else{if(240!=(248&r))throw RangeError("Illegal starting byte: "+r);(null===(n=e())||null===(i=e())||null===(o=e()))&&a([r,n,i,o]),t((7&r)<<18|(63&n)<<12|(63&i)<<6|63&o)}},UTF16toUTF8:function(e,t){for(var r,n=null;null!==(r=null!==n?n:e());)r>=55296&&r<=57343&&null!==(n=e())&&n>=56320&&n<=57343?(t(1024*(r-55296)+n-56320+65536),n=null):t(r);null!==n&&t(n)},UTF8toUTF16:function(e,t){var r=null;for("number"==typeof e&&(r=e,e=function(){return null});null!==r||null!==(r=e());)r<=65535?t(r):(t(55296+((r-=65536)>>10)),t(r%1024+56320)),r=null},encodeUTF16toUTF8:function(t,r){e.UTF16toUTF8(t,function(t){e.encodeUTF8(t,r)})},decodeUTF8toUTF16:function(t,r){e.decodeUTF8(t,function(t){e.UTF8toUTF16(t,r)})},calculateCodePoint:function(e){return e<128?1:e<2048?2:e<65536?3:4},calculateUTF8:function(e){for(var t,r=0;null!==(t=e());)r+=t<128?1:t<2048?2:t<65536?3:4;return r},calculateUTF16asUTF8:function(t){var r=0,n=0;return e.UTF16toUTF8(t,function(e){++r,n+=e<128?1:e<2048?2:e<65536?3:4}),[r,n]}};return e}();return r.toUTF8=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var r;try{f.decodeUTF8toUTF16(function(){return e-1?i(r):r}},{"./":27,"get-intrinsic":59}],27:[function(e,t,r){"use strict";var n=e("function-bind"),i=e("get-intrinsic"),o=e("set-function-length"),a=i("%TypeError%"),s=i("%Function.prototype.apply%"),u=i("%Function.prototype.call%"),l=i("%Reflect.apply%",!0)||n.call(u,s),f=i("%Object.defineProperty%",!0),c=i("%Math.max%");if(f)try{f({},"a",{value:1})}catch(e){f=null}t.exports=function(e){if("function"!=typeof e)throw new a("a function is required");var t=l(n,u,arguments);return o(t,1+c(0,e.length-(arguments.length-1)),!0)};var h=function(){return l(n,s,arguments)};f?f(t.exports,"apply",{value:h}):t.exports.apply=h},{"function-bind":58,"get-intrinsic":59,"set-function-length":113}],28:[function(e,t,r){(function(r){(function(){"use strict";(function(){var n,i,o,a,s,u,l,f=[].indexOf||function(e){for(var t=0,r=this.length;t",N,0)[0],N=e.slice(x,x+4),x+=4,u.type=N.toString(),u.data=N=e.slice(x,x+u.length),x+=u.length;let S=e.slice(x,x+4);if(x+=4,u.crc=n.unpack("L>",S,0)[0],"CgBI"===u.type&&(E=!0),t=u.type,!(f.call(o,t)>=0))if("IHDR"===u.type&&(a=n.unpack("L>",N)[0],s=n.unpack("L>",N,4)[0]),"IDAT"===u.type&&E)k=r.concat([k,N]);else{if("IEND"===u.type&&E){c=l.inflateRawSync(k),h=new r(c.length);let e=0;for(p=d=0,g=s-1;0<=g?d<=g:d>=g;p=0<=g?++d:--d)for(h[e]=c[e],e++,m=b=0,y=a-1;0<=y?b<=y:b>=y;m=0<=y?++b:--b)h[e+0]=c[e+2],h[e+1]=c[e+1],h[e+2]=c[e+0],h[e+3]=c[e+3],e+=4;v=l.deflateSync(h),w=i.crc32("IDAT"),w=((w=i.crc32(v,w))+4294967296)%4294967296,_={type:"IDAT",length:v.length,data:v,crc:w},T.push(_)}T.push(u)}}let S=N;for(let e=0,t=T.length;e",[u.length])]),S=r.concat([S,new r(u.type)]),u.length>0&&(S=r.concat([S,new r(u.data)])),S=r.concat([S,n.pack("L>",[u.crc])]);return S}}).call(this)}).call(this)}).call(this,e("buffer").Buffer)},{buffer:23,bufferpack:24,crc:54,"stream-to-buffer":115,streamifier:117,zlib:21}],29:[function(e,t,r){function n(e){return Object.prototype.toString.call(e)}r.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===n(e)},r.isBoolean=function(e){return"boolean"==typeof e},r.isNull=function(e){return null===e},r.isNullOrUndefined=function(e){return null==e},r.isNumber=function(e){return"number"==typeof e},r.isString=function(e){return"string"==typeof e},r.isSymbol=function(e){return"symbol"==typeof e},r.isUndefined=function(e){return void 0===e},r.isRegExp=function(e){return"[object RegExp]"===n(e)},r.isObject=function(e){return"object"==typeof e&&null!==e},r.isDate=function(e){return"[object Date]"===n(e)},r.isError=function(e){return"[object Error]"===n(e)||e instanceof Error},r.isFunction=function(e){return"function"==typeof e},r.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},r.isBuffer=e("buffer").Buffer.isBuffer},{buffer:23}],30:[function(e,t,r){"use strict";t.exports=e("./es6/crc1").default},{"./es6/crc1":41}],31:[function(e,t,r){"use strict";t.exports=e("./es6/crc16").default},{"./es6/crc16":42}],32:[function(e,t,r){"use strict";t.exports=e("./es6/crc16ccitt").default},{"./es6/crc16ccitt":43}],33:[function(e,t,r){"use strict";t.exports=e("./es6/crc16kermit").default},{"./es6/crc16kermit":44}],34:[function(e,t,r){"use strict";t.exports=e("./es6/crc16modbus").default},{"./es6/crc16modbus":45}],35:[function(e,t,r){"use strict";t.exports=e("./es6/crc16xmodem").default},{"./es6/crc16xmodem":46}],36:[function(e,t,r){"use strict";t.exports=e("./es6/crc24").default},{"./es6/crc24":47}],37:[function(e,t,r){"use strict";t.exports=e("./es6/crc32").default},{"./es6/crc32":48}],38:[function(e,t,r){"use strict";t.exports=e("./es6/crc8").default},{"./es6/crc8":49}],39:[function(e,t,r){"use strict";t.exports=e("./es6/crc81wire").default},{"./es6/crc81wire":50}],40:[function(e,t,r){"use strict";t.exports=e("./es6/crcjam").default},{"./es6/crcjam":51}],41:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("buffer"),i=o(e("./create_buffer"));function o(e){return e&&e.__esModule?e:{default:e}}var a=(0,o(e("./define_crc")).default)("crc1",function(e,t){n.Buffer.isBuffer(e)||(e=(0,i.default)(e));for(var r=~~t,o=0,a=0;a>8)}return r});r.default=u},{"./create_buffer":52,"./define_crc":53,buffer:23}],43:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("buffer"),i=a(e("./create_buffer")),o=a(e("./define_crc"));function a(e){return e&&e.__esModule?e:{default:e}}var s=[0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920];"undefined"!=typeof Int32Array&&(s=new Int32Array(s));var u=(0,o.default)("ccitt",function(e,t){n.Buffer.isBuffer(e)||(e=(0,i.default)(e));for(var r=void 0!==t?~~t:65535,o=0;o>8^a)]^r<<8)}return r});r.default=u},{"./create_buffer":52,"./define_crc":53,buffer:23}],44:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("buffer"),i=a(e("./create_buffer")),o=a(e("./define_crc"));function a(e){return e&&e.__esModule?e:{default:e}}var s=[0,4489,8978,12955,17956,22445,25910,29887,35912,40385,44890,48851,51820,56293,59774,63735,4225,264,13203,8730,22181,18220,30135,25662,40137,36160,49115,44626,56045,52068,63999,59510,8450,12427,528,5017,26406,30383,17460,21949,44362,48323,36440,40913,60270,64231,51324,55797,12675,8202,4753,792,30631,26158,21685,17724,48587,44098,40665,36688,64495,60006,55549,51572,16900,21389,24854,28831,1056,5545,10034,14011,52812,57285,60766,64727,34920,39393,43898,47859,21125,17164,29079,24606,5281,1320,14259,9786,57037,53060,64991,60502,39145,35168,48123,43634,25350,29327,16404,20893,9506,13483,1584,6073,61262,65223,52316,56789,43370,47331,35448,39921,29575,25102,20629,16668,13731,9258,5809,1848,65487,60998,56541,52564,47595,43106,39673,35696,33800,38273,42778,46739,49708,54181,57662,61623,2112,6601,11090,15067,20068,24557,28022,31999,38025,34048,47003,42514,53933,49956,61887,57398,6337,2376,15315,10842,24293,20332,32247,27774,42250,46211,34328,38801,58158,62119,49212,53685,10562,14539,2640,7129,28518,32495,19572,24061,46475,41986,38553,34576,62383,57894,53437,49460,14787,10314,6865,2904,32743,28270,23797,19836,50700,55173,58654,62615,32808,37281,41786,45747,19012,23501,26966,30943,3168,7657,12146,16123,54925,50948,62879,58390,37033,33056,46011,41522,23237,19276,31191,26718,7393,3432,16371,11898,59150,63111,50204,54677,41258,45219,33336,37809,27462,31439,18516,23005,11618,15595,3696,8185,63375,58886,54429,50452,45483,40994,37561,33584,31687,27214,22741,18780,15843,11370,7921,3960];"undefined"!=typeof Int32Array&&(s=new Int32Array(s));var u=(0,o.default)("kermit",function(e,t){n.Buffer.isBuffer(e)||(e=(0,i.default)(e));for(var r=void 0!==t?~~t:0,o=0;o>8)}return r});r.default=u},{"./create_buffer":52,"./define_crc":53,buffer:23}],45:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("buffer"),i=a(e("./create_buffer")),o=a(e("./define_crc"));function a(e){return e&&e.__esModule?e:{default:e}}var s=[0,49345,49537,320,49921,960,640,49729,50689,1728,1920,51009,1280,50625,50305,1088,52225,3264,3456,52545,3840,53185,52865,3648,2560,51905,52097,2880,51457,2496,2176,51265,55297,6336,6528,55617,6912,56257,55937,6720,7680,57025,57217,8e3,56577,7616,7296,56385,5120,54465,54657,5440,55041,6080,5760,54849,53761,4800,4992,54081,4352,53697,53377,4160,61441,12480,12672,61761,13056,62401,62081,12864,13824,63169,63361,14144,62721,13760,13440,62529,15360,64705,64897,15680,65281,16320,16e3,65089,64001,15040,15232,64321,14592,63937,63617,14400,10240,59585,59777,10560,60161,11200,10880,59969,60929,11968,12160,61249,11520,60865,60545,11328,58369,9408,9600,58689,9984,59329,59009,9792,8704,58049,58241,9024,57601,8640,8320,57409,40961,24768,24960,41281,25344,41921,41601,25152,26112,42689,42881,26432,42241,26048,25728,42049,27648,44225,44417,27968,44801,28608,28288,44609,43521,27328,27520,43841,26880,43457,43137,26688,30720,47297,47489,31040,47873,31680,31360,47681,48641,32448,32640,48961,32e3,48577,48257,31808,46081,29888,30080,46401,30464,47041,46721,30272,29184,45761,45953,29504,45313,29120,28800,45121,20480,37057,37249,20800,37633,21440,21120,37441,38401,22208,22400,38721,21760,38337,38017,21568,39937,23744,23936,40257,24320,40897,40577,24128,23040,39617,39809,23360,39169,22976,22656,38977,34817,18624,18816,35137,19200,35777,35457,19008,19968,36545,36737,20288,36097,19904,19584,35905,17408,33985,34177,17728,34561,18368,18048,34369,33281,17088,17280,33601,16640,33217,32897,16448];"undefined"!=typeof Int32Array&&(s=new Int32Array(s));var u=(0,o.default)("crc-16-modbus",function(e,t){n.Buffer.isBuffer(e)||(e=(0,i.default)(e));for(var r=void 0!==t?~~t:65535,o=0;o>8)}return r});r.default=u},{"./create_buffer":52,"./define_crc":53,buffer:23}],46:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("buffer"),i=o(e("./create_buffer"));function o(e){return e&&e.__esModule?e:{default:e}}var a=(0,o(e("./define_crc")).default)("xmodem",function(e,t){n.Buffer.isBuffer(e)||(e=(0,i.default)(e));for(var r=void 0!==t?~~t:0,o=0;o>>8&255;a^=255&e[o],r=r<<8&65535,r^=a^=a>>>4,r^=a=a<<5&65535,r^=a=a<<7&65535}return r});r.default=a},{"./create_buffer":52,"./define_crc":53,buffer:23}],47:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("buffer"),i=a(e("./create_buffer")),o=a(e("./define_crc"));function a(e){return e&&e.__esModule?e:{default:e}}var s=[0,8801531,9098509,825846,9692897,1419802,1651692,10452759,10584377,2608578,2839604,11344079,3303384,11807523,12104405,4128302,12930697,4391538,5217156,13227903,5679208,13690003,14450021,5910942,6606768,14844747,15604413,6837830,16197969,7431594,8256604,16494759,840169,9084178,8783076,18463,10434312,1670131,1434117,9678590,11358416,2825259,2590173,10602790,4109873,12122826,11821884,3289031,13213536,5231515,4409965,12912278,5929345,14431610,13675660,5693559,6823513,15618722,14863188,6588335,16513208,8238147,7417269,16212302,1680338,10481449,9664223,1391140,9061683,788936,36926,8838341,12067563,4091408,3340262,11844381,2868234,11372785,10555655,2579964,14478683,5939616,5650518,13661357,5180346,13190977,12967607,4428364,8219746,16457881,16234863,7468436,15633027,6866552,6578062,14816117,1405499,9649856,10463030,1698765,8819930,55329,803287,9047340,11858690,3325945,4072975,12086004,2561507,10574104,11387118,2853909,13647026,5664841,5958079,14460228,4446803,12949160,13176670,5194661,7454091,16249200,16476294,8201341,14834538,6559633,6852199,15647388,3360676,11864927,12161705,4185682,10527045,2551230,2782280,11286707,9619101,1346150,1577872,10379115,73852,8875143,9172337,899466,16124205,7357910,8182816,16421083,6680524,14918455,15678145,6911546,5736468,13747439,14507289,5968354,12873461,4334094,5159928,13170435,4167245,12180150,11879232,3346363,11301036,2767959,2532769,10545498,10360692,1596303,1360505,9604738,913813,9157998,8856728,92259,16439492,8164415,7343561,16138546,6897189,15692510,14936872,6662099,5986813,14488838,13733104,5750795,13156124,5174247,4352529,12855018,2810998,11315341,10498427,2522496,12124823,4148844,3397530,11901793,9135439,862644,110658,8912057,1606574,10407765,9590435,1317464,15706879,6940164,6651890,14889737,8145950,16384229,16161043,7394792,5123014,13133629,12910283,4370992,14535975,5997020,5707818,13718737,2504095,10516836,11329682,2796649,11916158,3383173,4130419,12143240,8893606,129117,876971,9121104,1331783,9576124,10389322,1625009,14908182,6633453,6925851,15721184,7380471,16175372,16402682,8127489,4389423,12891860,13119266,5137369,13704398,5722165,6015427,14517560];"undefined"!=typeof Int32Array&&(s=new Int32Array(s));var u=(0,o.default)("crc-24",function(e,t){n.Buffer.isBuffer(e)||(e=(0,i.default)(e));for(var r=void 0!==t?~~t:11994318,o=0;o>16^a)]^r<<8)}return r});r.default=u},{"./create_buffer":52,"./define_crc":53,buffer:23}],48:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("buffer"),i=a(e("./create_buffer")),o=a(e("./define_crc"));function a(e){return e&&e.__esModule?e:{default:e}}var s=[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,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];"undefined"!=typeof Int32Array&&(s=new Int32Array(s));var u=(0,o.default)("crc-32",function(e,t){n.Buffer.isBuffer(e)||(e=(0,i.default)(e));for(var r=0===t?0:-1^~~t,o=0;o>>8}return-1^r});r.default=u},{"./create_buffer":52,"./define_crc":53,buffer:23}],49:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("buffer"),i=a(e("./create_buffer")),o=a(e("./define_crc"));function a(e){return e&&e.__esModule?e:{default:e}}var s=[0,7,14,9,28,27,18,21,56,63,54,49,36,35,42,45,112,119,126,121,108,107,98,101,72,79,70,65,84,83,90,93,224,231,238,233,252,251,242,245,216,223,214,209,196,195,202,205,144,151,158,153,140,139,130,133,168,175,166,161,180,179,186,189,199,192,201,206,219,220,213,210,255,248,241,246,227,228,237,234,183,176,185,190,171,172,165,162,143,136,129,134,147,148,157,154,39,32,41,46,59,60,53,50,31,24,17,22,3,4,13,10,87,80,89,94,75,76,69,66,111,104,97,102,115,116,125,122,137,142,135,128,149,146,155,156,177,182,191,184,173,170,163,164,249,254,247,240,229,226,235,236,193,198,207,200,221,218,211,212,105,110,103,96,117,114,123,124,81,86,95,88,77,74,67,68,25,30,23,16,5,2,11,12,33,38,47,40,61,58,51,52,78,73,64,71,82,85,92,91,118,113,120,127,106,109,100,99,62,57,48,55,34,37,44,43,6,1,8,15,26,29,20,19,174,169,160,167,178,181,188,187,150,145,152,159,138,141,132,131,222,217,208,215,194,197,204,203,230,225,232,239,250,253,244,243];"undefined"!=typeof Int32Array&&(s=new Int32Array(s));var u=(0,o.default)("crc-8",function(e,t){n.Buffer.isBuffer(e)||(e=(0,i.default)(e));for(var r=~~t,o=0;o1&&void 0!==arguments[1]?arguments[1]:-1;n.Buffer.isBuffer(e)||(e=(0,i.default)(e));for(var r=0===t?0:~~t,o=0;o>>8}return r});r.default=u},{"./create_buffer":52,"./define_crc":53,buffer:23}],52:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("buffer"),i=n.Buffer.from&&n.Buffer.alloc&&n.Buffer.allocUnsafe&&n.Buffer.allocUnsafeSlow?n.Buffer.from:function(e){return new n.Buffer(e)};r.default=i},{buffer:23}],53:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=function(e,t){var r=function(e,r){return t(e,r)>>>0};return r.signed=t,r.unsigned=r,r.model=e,r}},{}],54:[function(e,t,r){"use strict";t.exports={crc1:e("./crc1"),crc8:e("./crc8"),crc81wire:e("./crc8_1wire"),crc16:e("./crc16"),crc16ccitt:e("./crc16_ccitt"),crc16modbus:e("./crc16_modbus"),crc16xmodem:e("./crc16_xmodem"),crc16kermit:e("./crc16_kermit"),crc24:e("./crc24"),crc32:e("./crc32"),crcjam:e("./crcjam")}},{"./crc1":30,"./crc16":31,"./crc16_ccitt":32,"./crc16_kermit":33,"./crc16_modbus":34,"./crc16_xmodem":35,"./crc24":36,"./crc32":37,"./crc8":38,"./crc8_1wire":39,"./crcjam":40}],55:[function(e,t,r){"use strict";var n=e("has-property-descriptors")(),i=e("get-intrinsic"),o=n&&i("%Object.defineProperty%",!0);if(o)try{o({},"a",{value:1})}catch(e){o=!1}var a=i("%SyntaxError%"),s=i("%TypeError%"),u=e("gopd");t.exports=function(e,t,r){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new s("`obj` must be an object or a function`");if("string"!=typeof t&&"symbol"!=typeof t)throw new s("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new s("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new s("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new s("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new s("`loose`, if provided, must be a boolean");var n=arguments.length>3?arguments[3]:null,i=arguments.length>4?arguments[4]:null,l=arguments.length>5?arguments[5]:null,f=arguments.length>6&&arguments[6],c=!!u&&u(e,t);if(o)o(e,t,{configurable:null===l&&c?c.configurable:!l,enumerable:null===n&&c?c.enumerable:!n,value:r,writable:null===i&&c?c.writable:!i});else{if(!f&&(n||i||l))throw new a("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");e[t]=r}}},{"get-intrinsic":59,gopd:60,"has-property-descriptors":61}],56:[function(e,t,r){var n=Object.create||function(e){var t=function(){};return t.prototype=e,new t},i=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return r},o=Function.prototype.bind||function(e){var t=this;return function(){return t.apply(e,arguments)}};function a(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=n(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._maxListeners=void 0;var s,u=10;try{var l={};Object.defineProperty&&Object.defineProperty(l,"x",{value:0}),s=0===l.x}catch(e){s=!1}function f(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function c(e,t,r,i){var o,a,s;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((a=e._events)?(a.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),a=e._events),s=a[t]):(a=e._events=n(null),e._eventsCount=0),s){if("function"==typeof s?s=a[t]=i?[r,s]:[s,r]:i?s.unshift(r):s.push(r),!s.warned&&(o=f(e))&&o>0&&s.length>o){s.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+s.length+' "'+String(t)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=s.length,"object"==typeof console&&console.warn&&console.warn("%s: %s",u.name,u.message)}}else s=a[t]=r,++e._eventsCount;return e}function h(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t1&&(t=arguments[1]),t instanceof Error)throw t;var u=new Error('Unhandled "error" event. ('+t+")");throw u.context=t,u}if(!(r=a[e]))return!1;var l="function"==typeof r;switch(n=arguments.length){case 1:!function(e,t,r){if(t)e.call(r);else for(var n=e.length,i=y(e,n),o=0;o=0;a--)if(r[a]===t||r[a].listener===t){s=r[a].listener,o=a;break}if(o<0)return this;0===o?r.shift():function(e,t){for(var r=t,n=r+1,i=e.length;n=0;o--)this.removeListener(e,t[o]);return this},a.prototype.listeners=function(e){return p(this,e,!0)},a.prototype.rawListeners=function(e){return p(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):g.call(e,t)},a.prototype.listenerCount=g,a.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]}},{}],57:[function(e,t,r){"use strict";var n=Object.prototype.toString,i=Math.max,o=function(e,t){for(var r=[],n=0;n1&&"boolean"!=typeof t)throw new o('"allowMissing" argument must be a boolean');if(null===T(/^%?[^%]*%?$/,e))throw new n("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(e){var t=x(e,0,1),r=x(e,-1);if("%"===t&&"%"!==r)throw new n("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new n("invalid intrinsic syntax, expected opening `%`");var i=[];return E(e,k,function(e,t,r,n){i[i.length]=r?E(n,N,"$1"):t||e}),i}(e),i=r.length>0?r[0]:"",a=S("%"+i+"%",t),u=a.name,l=a.value,f=!1,c=a.alias;c&&(i=c[0],_(r,w([0,1],c)));for(var h=1,d=!0;h=r.length){var m=s(l,p);l=(d=!!m)&&"get"in m&&!("originalValue"in m.get)?m.get:l[p]}else d=v(l,p),l=l[p];d&&!f&&(g[u]=l)}}return l}},{"function-bind":58,"has-proto":62,"has-symbols":63,hasown:65}],60:[function(e,t,r){"use strict";var n=e("get-intrinsic")("%Object.getOwnPropertyDescriptor%",!0);if(n)try{n([],"length")}catch(e){n=null}t.exports=n},{"get-intrinsic":59}],61:[function(e,t,r){"use strict";var n=e("get-intrinsic")("%Object.defineProperty%",!0),i=function(){if(n)try{return n({},"a",{value:1}),!0}catch(e){return!1}return!1};i.hasArrayLengthDefineBug=function(){if(!i())return null;try{return 1!==n([],"length",{value:1}).length}catch(e){return!0}},t.exports=i},{"get-intrinsic":59}],62:[function(e,t,r){"use strict";var n={foo:{}},i=Object;t.exports=function(){return{__proto__:n}.foo===n.foo&&!({__proto__:null}instanceof i)}},{}],63:[function(e,t,r){"use strict";var n="undefined"!=typeof Symbol&&Symbol,i=e("./shams");t.exports=function(){return"function"==typeof n&&("function"==typeof Symbol&&("symbol"==typeof n("foo")&&("symbol"==typeof Symbol("bar")&&i())))}},{"./shams":64}],64:[function(e,t,r){"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var n=Object.getOwnPropertySymbols(e);if(1!==n.length||n[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},{}],65:[function(e,t,r){"use strict";var n=Function.prototype.call,i=Object.prototype.hasOwnProperty,o=e("function-bind");t.exports=o.call(n,i)},{"function-bind":58}],66:[function(e,t,r){r.read=function(e,t,r,n,i){var o,a,s=8*i-n-1,u=(1<>1,f=-7,c=r?i-1:0,h=r?-1:1,d=e[t+c];for(c+=h,o=d&(1<<-f)-1,d>>=-f,f+=s;f>0;o=256*o+e[t+c],c+=h,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=n;f>0;a=256*a+e[t+c],c+=h,f-=8);if(0===o)o=1-l;else{if(o===u)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),o-=l}return(d?-1:1)*a*Math.pow(2,o-n)},r.write=function(e,t,r,n,i,o){var a,s,u,l=8*o-i-1,f=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=f):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),(t+=a+c>=1?h/u:h*Math.pow(2,1-c))*u>=2&&(a++,u/=2),a+c>=f?(s=0,a=f):a+c>=1?(s=(t*u-1)*Math.pow(2,i),a+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;e[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,l-=8);e[r+d-p]|=128*g}},{}],67:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},{}],68:[function(e,t,r){function n(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}t.exports=function(e){return null!=e&&(n(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},{}],69:[function(e,t,r){var n={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},{}],70:[function(e,t,r){var n=e("buffer").Buffer;t.exports=function(e,t){if("undefined"==typeof Blob||!(e instanceof Blob))throw new Error("first argument must be a Blob");if("function"!=typeof t)throw new Error("second argument must be a function");var r=new FileReader;r.addEventListener("loadend",function e(i){r.removeEventListener("loadend",e,!1),i.error?t(i.error):t(null,new n(r.result))},!1),r.readAsArrayBuffer(e)}},{buffer:23}],71:[function(e,t,r){t.exports='function inflate(a){"use strict";function w(){function m(a,b,d,h,m,n,o,p,q,r,s){var t,u,w,x,z,A,B,C,E,F,G,H,I,D=0,y=d;do e[a[b+D]]++,D++,y--;while(0!==y);if(e[0]==d)return o[0]=-1,p[0]=0,c;for(B=p[0],z=1;v>=z&&0===e[z];z++);for(A=z,z>B&&(B=z),y=v;0!==y&&0===e[y];y--);for(w=y,B>y&&(B=y),p[0]=B,H=1<z;z++,H<<=1)if((H-=e[z])<0)return g;if((H-=e[y])<0)return g;for(e[y]+=H,l[1]=z=0,D=1,G=2;0!==--y;)l[G]=z+=e[D],G++,D++;y=0,D=0;do 0!==(z=a[b+D])&&(s[l[z]++]=y),D++;while(++y=A;A++)for(t=e[A];0!==t--;){for(;A>F+B;){if(x++,F+=B,I=w-F,I=I>B?B:I,(u=1<<(z=A-F))>t+1&&(u-=t+1,G=A,I>z))for(;++zk)return g;j[x]=E=r[0],r[0]+=I,0!==x?(l[x]=y,f[0]=z,f[1]=B,z=y>>>F-B,f[2]=E-j[x-1]-z,q.set(f,3*(j[x-1]+z))):o[0]=E}for(f[1]=A-F,D>=d?f[0]=192:s[D]>>F;I>z;z+=u)q.set(f,3*(E+z));for(z=1<>>=1)y^=z;for(y^=z,C=(1<c;c++)d[c]=0;for(c=0;v+1>c;c++)e[c]=0;for(c=0;3>c;c++)f[c]=0;j.set(e.subarray(0,v),0),l.set(e.subarray(0,v+1),0)}var b,d,e,f,j,l,a=this;a.inflate_trees_bits=function(a,c,e,f,h){var j;return n(19),b[0]=0,j=m(a,0,19,19,null,null,e,c,f,b,d),j==g?h.msg="oversubscribed dynamic bit lengths tree":(j==i||0===c[0])&&(h.msg="incomplete dynamic bit lengths tree",j=g),j},a.inflate_trees_dynamic=function(a,e,f,j,k,l,o,p,q){var v;return n(288),b[0]=0,v=m(f,0,a,257,r,s,l,j,p,b,d),v!=c||0===j[0]?(v==g?q.msg="oversubscribed literal/length tree":v!=h&&(q.msg="incomplete literal/length tree",v=g),v):(n(288),v=m(f,a,e,0,t,u,o,k,p,b,d),v!=c||0===k[0]&&a>257?(v==g?q.msg="oversubscribed distance tree":v==i?(q.msg="incomplete distance tree",v=g):v!=h&&(q.msg="empty distance tree with lengths",v=g),v):c)}}function H(){function u(a,b,e,f,h,i,k,l){var m,n,o,p,y,z,A,B,s=l.next_in_index,t=l.avail_in,q=k.bitb,r=k.bitk,u=k.write,v=ur;)t--,q|=(255&l.read_byte(s++))<>=n[B+1],r-=n[B+1],0!==(16&p)){for(p&=15,y=n[B+2]+(q&j[p]),q>>=p,r-=p;15>r;)t--,q|=(255&l.read_byte(s++))<>=n[B+1],r-=n[B+1],0!==(16&p)){for(p&=15;p>r;)t--,q|=(255&l.read_byte(s++))<>=p,r-=p,v-=y,u>=z)A=u-z,u-A>0&&2>u-A?(k.window[u++]=k.window[A++],k.window[u++]=k.window[A++],y-=2):(k.window.set(k.window.subarray(A,A+2),u),u+=2,A+=2,y-=2);else{A=u-z;do A+=k.end;while(0>A);if(p=k.end-A,y>p){if(y-=p,u-A>0&&p>u-A){do k.window[u++]=k.window[A++];while(0!==--p)}else k.window.set(k.window.subarray(A,A+p),u),u+=p,A+=p,p=0;A=0}}if(u-A>0&&y>u-A){do k.window[u++]=k.window[A++];while(0!==--y)}else k.window.set(k.window.subarray(A,A+y),u),u+=y,A+=y,y=0;break}if(0!==(64&p))return l.msg="invalid distance code",y=l.avail_in-t,y=y>r>>3?r>>3:y,t+=y,s-=y,r-=y<<3,k.bitb=q,k.bitk=r,l.avail_in=t,l.total_in+=s-l.next_in_index,l.next_in_index=s,k.write=u,g;m+=n[B+2],m+=q&j[p],B=3*(o+m),p=n[B]}break}if(0!==(64&p))return 0!==(32&p)?(y=l.avail_in-t,y=y>r>>3?r>>3:y,t+=y,s-=y,r-=y<<3,k.bitb=q,k.bitk=r,l.avail_in=t,l.total_in+=s-l.next_in_index,l.next_in_index=s,k.write=u,d):(l.msg="invalid literal/length code",y=l.avail_in-t,y=y>r>>3?r>>3:y,t+=y,s-=y,r-=y<<3,k.bitb=q,k.bitk=r,l.avail_in=t,l.total_in+=s-l.next_in_index,l.next_in_index=s,k.write=u,g);if(m+=n[B+2],m+=q&j[p],B=3*(o+m),0===(p=n[B])){q>>=n[B+1],r-=n[B+1],k.window[u++]=n[B+2],v--;break}}else q>>=n[B+1],r-=n[B+1],k.window[u++]=n[B+2],v--}while(v>=258&&t>=10);return y=l.avail_in-t,y=y>r>>3?r>>3:y,t+=y,s-=y,r-=y<<3,k.bitb=q,k.bitk=r,l.avail_in=t,l.total_in+=s-l.next_in_index,l.next_in_index=s,k.write=u,c}var b,h,q,s,a=this,e=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,r=0,t=0;a.init=function(a,c,d,e,f,g){b=x,o=a,p=c,q=d,r=e,s=f,t=g,h=null},a.proc=function(a,v,w){var H,I,J,N,O,P,Q,K=0,L=0,M=0;for(M=v.next_in_index,N=v.avail_in,K=a.bitb,L=a.bitk,O=a.write,P=O=258&&N>=10&&(a.bitb=K,a.bitk=L,v.avail_in=N,v.total_in+=M-v.next_in_index,v.next_in_index=M,a.write=O,w=u(o,p,q,r,s,t,a,v),M=v.next_in_index,N=v.avail_in,K=a.bitb,L=a.bitk,O=a.write,P=OL;){if(0===N)return a.bitb=K,a.bitk=L,v.avail_in=N,v.total_in+=M-v.next_in_index,v.next_in_index=M,a.write=O,a.inflate_flush(v,w);w=c,N--,K|=(255&v.read_byte(M++))<>>=h[I+1],L-=h[I+1],J=h[I],0===J){l=h[I+2],b=D;break}if(0!==(16&J)){m=15&J,e=h[I+2],b=z;break}if(0===(64&J)){k=J,i=I/3+h[I+2];break}if(0!==(32&J)){b=E;break}return b=G,v.msg="invalid literal/length code",w=g,a.bitb=K,a.bitk=L,v.avail_in=N,v.total_in+=M-v.next_in_index,v.next_in_index=M,a.write=O,a.inflate_flush(v,w);case z:for(H=m;H>L;){if(0===N)return a.bitb=K,a.bitk=L,v.avail_in=N,v.total_in+=M-v.next_in_index,v.next_in_index=M,a.write=O,a.inflate_flush(v,w);w=c,N--,K|=(255&v.read_byte(M++))<>=H,L-=H,k=p,h=s,i=t,b=A;case A:for(H=k;H>L;){if(0===N)return a.bitb=K,a.bitk=L,v.avail_in=N,v.total_in+=M-v.next_in_index,v.next_in_index=M,a.write=O,a.inflate_flush(v,w);w=c,N--,K|=(255&v.read_byte(M++))<>=h[I+1],L-=h[I+1],J=h[I],0!==(16&J)){m=15&J,n=h[I+2],b=B;break}if(0===(64&J)){k=J,i=I/3+h[I+2];break}return b=G,v.msg="invalid distance code",w=g,a.bitb=K,a.bitk=L,v.avail_in=N,v.total_in+=M-v.next_in_index,v.next_in_index=M,a.write=O,a.inflate_flush(v,w);case B:for(H=m;H>L;){if(0===N)return a.bitb=K,a.bitk=L,v.avail_in=N,v.total_in+=M-v.next_in_index,v.next_in_index=M,a.write=O,a.inflate_flush(v,w);w=c,N--,K|=(255&v.read_byte(M++))<>=H,L-=H,b=C;case C:for(Q=O-n;0>Q;)Q+=a.end;for(;0!==e;){if(0===P&&(O==a.end&&0!==a.read&&(O=0,P=O7&&(L-=8,N++,M--),a.write=O,w=a.inflate_flush(v,w),O=a.write,P=Oa.avail_out&&(d=a.avail_out),0!==d&&b==i&&(b=c),a.avail_out-=d,a.total_out+=d,a.next_out.set(e.window.subarray(g,g+d),f),f+=d,g+=d,g==e.end&&(g=0,e.write==e.end&&(e.write=0),d=e.write-g,d>a.avail_out&&(d=a.avail_out),0!==d&&b==i&&(b=c),a.avail_out-=d,a.total_out+=d,a.next_out.set(e.window.subarray(g,g+d),f),f+=d,g+=d),a.next_out_index=f,e.read=g,b},e.proc=function(a,b){for(var i,B,C,D,E,F,G,H,T,U,V,W,x=a.next_in_index,y=a.avail_in,k=e.bitb,u=e.bitk,z=e.write,A=zu;){if(0===y)return e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);b=c,y--,k|=(255&a.read_byte(x++))<>>1){case 0:k>>>=3,u-=3,i=7&u,k>>>=i,u-=i,h=K;break;case 1:C=[],D=[],E=[[]],F=[[]],w.inflate_trees_fixed(C,D,E,F),r.init(C[0],D[0],E[0],0,F[0],0),k>>>=3,u-=3,h=P;break;case 2:k>>>=3,u-=3,h=M;break;case 3:return k>>>=3,u-=3,h=S,a.msg="invalid block type",b=g,e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b)}break;case K:for(;32>u;){if(0===y)return e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);b=c,y--,k|=(255&a.read_byte(x++))<>>16)!=(65535&k))return h=S,a.msg="invalid stored block lengths",b=g,e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);l=65535&k,k=u=0,h=0!==l?L:0!==s?Q:J;break;case L:if(0===y)return e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);if(0===A&&(z==e.end&&0!==e.read&&(z=0,A=zy&&(i=y),i>A&&(i=A),e.window.set(a.read_buf(x,i),z),x+=i,y-=i,z+=i,A-=i,0!==(l-=i))break;h=0!==s?Q:J;break;case M:for(;14>u;){if(0===y)return e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);b=c,y--,k|=(255&a.read_byte(x++))<29||(31&i>>5)>29)return h=S,a.msg="too many length or distance symbols",b=g,e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);if(i=258+(31&i)+(31&i>>5),!o||o.lengthB;B++)o[B]=0;k>>>=14,u-=14,n=0,h=N;case N:for(;4+(m>>>10)>n;){for(;3>u;){if(0===y)return e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);b=c,y--,k|=(255&a.read_byte(x++))<>>=3,u-=3}for(;19>n;)o[I[n++]]=0;if(p[0]=7,i=v.inflate_trees_bits(o,p,q,t,a),i!=c)return b=i,b==g&&(o=null,h=S),e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);n=0,h=O;case O:for(;;){if(i=m,n>=258+(31&i)+(31&i>>5))break;for(i=p[0];i>u;){if(0===y)return e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);b=c,y--,k|=(255&a.read_byte(x++))<H)k>>>=i,u-=i,o[n++]=H;else{for(B=18==H?7:H-14,G=18==H?11:3;i+B>u;){if(0===y)return e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);b=c,y--,k|=(255&a.read_byte(x++))<>>=i,u-=i,G+=k&j[B],k>>>=B,u-=B,B=n,i=m,B+G>258+(31&i)+(31&i>>5)||16==H&&1>B)return o=null,h=S,a.msg="invalid bit length repeat",b=g,e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);H=16==H?o[B-1]:0;do o[B++]=H;while(0!==--G);n=B}}if(q[0]=-1,T=[],U=[],V=[],W=[],T[0]=9,U[0]=6,i=m,i=v.inflate_trees_dynamic(257+(31&i),1+(31&i>>5),o,T,U,V,W,t,a),i!=c)return i==g&&(o=null,h=S),b=i,e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,e.inflate_flush(a,b);r.init(T[0],U[0],t,V[0],t,W[0]),h=P;case P:if(e.bitb=k,e.bitk=u,a.avail_in=y,a.total_in+=x-a.next_in_index,a.next_in_index=x,e.write=z,(b=r.proc(e,a,b))!=d)return e.inflate_flush(a,b);if(b=c,r.free(a),x=a.next_in_index,y=a.avail_in,k=e.bitb,u=e.bitk,z=e.write,A=ze||e>15?(a.inflateEnd(d),f):(a.wbits=e,d.istate.blocks=new T(d,1<>4)+8>a.istate.wbits){a.istate.mode=db,a.msg="invalid window size",a.istate.marker=5;break}a.istate.mode=X;case X:if(0===a.avail_in)return h;if(h=b,a.avail_in--,a.total_in++,j=255&a.read_byte(a.next_in_index++),0!==((a.istate.method<<8)+j)%31){a.istate.mode=db,a.msg="incorrect header check",a.istate.marker=5;break}if(0===(j&U)){a.istate.mode=bb;break}a.istate.mode=Y;case Y:if(0===a.avail_in)return h;h=b,a.avail_in--,a.total_in++,a.istate.need=4278190080&(255&a.read_byte(a.next_in_index++))<<24,a.istate.mode=Z;case Z:if(0===a.avail_in)return h;h=b,a.avail_in--,a.total_in++,a.istate.need+=16711680&(255&a.read_byte(a.next_in_index++))<<16,a.istate.mode=$;case $:if(0===a.avail_in)return h;h=b,a.avail_in--,a.total_in++,a.istate.need+=65280&(255&a.read_byte(a.next_in_index++))<<8,a.istate.mode=_;case _:return 0===a.avail_in?h:(h=b,a.avail_in--,a.total_in++,a.istate.need+=255&a.read_byte(a.next_in_index++),a.istate.mode=ab,e);case ab:return a.istate.mode=db,a.msg="need dictionary",a.istate.marker=0,f;case bb:if(h=a.istate.blocks.proc(a,h),h==g){a.istate.mode=db,a.istate.marker=0;break}if(h==c&&(h=b),h!=d)return h;h=b,a.istate.blocks.reset(a,a.istate.was),a.istate.mode=cb;case cb:return d;case db:return g;default:return f}},a.inflateSetDictionary=function(a,b,d){var e=0,g=d;return a&&a.istate&&a.istate.mode==ab?(g>=1<h;)a.read_byte(e)==eb[h]?h++:h=0!==a.read_byte(e)?0:4-h,e++,d--;return a.total_in+=e-a.next_in_index,a.next_in_index=e,a.avail_in=d,a.istate.marker=h,4!=h?g:(j=a.total_in,k=a.total_out,b(a),a.total_in=j,a.total_out=k,a.istate.mode=bb,c)},a.inflateSyncPoint=function(a){return a&&a.istate&&a.istate.blocks?a.istate.blocks.sync_point():f}}function gb(){}function hb(){var a=this,b=new gb,e=512,f=l,g=new Uint8Array(e),h=!1;b.inflateInit(),b.next_out=g,a.append=function(a,j){var k,p,l=[],m=0,n=0,o=0;if(0!==a.length){b.next_in_index=0,b.next_in=a,b.avail_in=a.length;do{if(b.next_out_index=0,b.avail_out=e,0!==b.avail_in||h||(b.next_in_index=0,h=!0),k=b.inflate(f),h&&k===i){if(0!==b.avail_in)throw new Error("inflating: bad input")}else if(k!==c&&k!==d)throw new Error("inflating: "+b.msg);if((h||k===d)&&b.avail_in===a.length)throw new Error("inflating: bad input");b.next_out_index&&(b.next_out_index===e?l.push(new Uint8Array(g)):l.push(new Uint8Array(g.subarray(0,b.next_out_index)))),o+=b.next_out_index,j&&b.next_in_index>0&&b.next_in_index!=m&&(j(b.next_in_index),m=b.next_in_index)}while(b.avail_in>0||0===b.avail_out);return p=new Uint8Array(o),l.forEach(function(a){p.set(a,n),n+=a.length}),p}},a.flush=function(){b.inflateEnd()}}var x,y,z,A,B,C,D,E,F,G,I,J,K,L,M,N,O,P,Q,R,S,U,V,W,X,Y,Z,$,_,ab,bb,cb,db,eb,ib,b=15,c=0,d=1,e=2,f=-2,g=-3,h=-4,i=-5,j=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],k=1440,l=0,m=4,n=9,o=5,p=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],q=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],r=[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],s=[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,112,112],t=[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],u=[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],v=15;w.inflate_trees_fixed=function(a,b,d,e){return a[0]=n,b[0]=o,d[0]=p,e[0]=q,c},x=0,y=1,z=2,A=3,B=4,C=5,D=6,E=7,F=8,G=9,I=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],J=0,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,U=32,V=8,W=0,X=1,Y=2,Z=3,$=4,_=5,ab=6,bb=7,cb=12,db=13,eb=[0,0,255,255],gb.prototype={inflateInit:function(a){var c=this;return c.istate=new fb,a||(a=b),c.istate.inflateInit(c,a)},inflate:function(a){var b=this;return b.istate?b.istate.inflate(b,a):f},inflateEnd:function(){var b,a=this;return a.istate?(b=a.istate.inflateEnd(a),a.istate=null,b):f},inflateSync:function(){var a=this;return a.istate?a.istate.inflateSync(a):f},inflateSetDictionary:function(a,b){var c=this;return c.istate?c.istate.inflateSetDictionary(c,a,b):f},read_byte:function(a){var b=this;return b.next_in.subarray(a,a+1)[0]},read_buf:function(a,b){var c=this;return c.next_in.subarray(a,a+b)}},ib=a.zip||a,ib.Inflater=ib._jzlib_Inflater=hb}!function(a){"use strict";function d(){inflate(a),postMessage({type:"importScripts"})}function e(b){var d=a[b.codecClass],e=b.sn;if(c[e])throw Error("duplicated sn");c[e]={codec:new d(b.options),crcInput:"input"===b.crcType,crcOutput:"output"===b.crcType,crc:new j},postMessage({type:"newTask",sn:e})}function g(a){var i,j,k,m,n,o,p,b=a.sn,d=a.type,g=a.data,h=c[b];if(!h&&a.codecClass&&(e(a),h=c[b]),i="append"===d,j=f(),i)try{k=h.codec.append(g,function(a){postMessage({type:"progress",sn:b,loaded:a})})}catch(l){throw delete c[b],l}else delete c[b],k=h.codec.flush();m=f()-j,j=f(),g&&h.crcInput&&h.crc.append(g),k&&h.crcOutput&&h.crc.append(k),n=f()-j,o={type:d,sn:b,codecTime:m,crcTime:n},p=[],k&&(o.data=k,p.push(k.buffer)),i||!h.crcInput&&!h.crcOutput||(o.crc=h.crc.get());try{postMessage(o,p)}catch(q){postMessage(o)}}function h(a,b,c){var d={type:a,sn:b,error:i(c)};postMessage(d)}function i(a){return{message:a.message,stack:a.stack}}function j(){this.crc=-1}function k(){}var b,c,f;if(a.zWorkerInitialized)throw new Error("z-worker.js should be run only once");a.zWorkerInitialized=!0,addEventListener("message",function(a){var c=a.data,d=c.type,e=c.sn,f=b[d];if(f)try{f(c)}catch(g){h(d,e,g)}postMessage({type:"echo",originalType:d,sn:e})}),b={importScripts:d,newTask:e,append:g,flush:g},c={},f=a.performance?a.performance.now.bind(a.performance):Date.now,j.prototype.append=function(a){var d,e,b=0|this.crc,c=this.table;for(d=0,e=0|a.length;e>d;d++)b=b>>>8^c[255&(b^a[d])];this.crc=b},j.prototype.get=function(){return~this.crc},j.prototype.table=function(){var a,b,c,d=[];for(a=0;256>a;a++){for(c=a,b=0;8>b;b++)1&c?c=3988292384^c>>>1:c>>>=1;d[a]=c}return d}(),a.NOOP=k,k.prototype.append=function(a){return a},k.prototype.flush=function(){}}(this);'},{}],72:[function(e,t,r){var n,i=e("./z-worker"),o=URL.createObjectURL(new Blob([i],{type:"text/javascript"})),a="File format is not recognized.",s="CRC failed.",u="File contains encrypted entry.",l="File is using Zip64 (4gb+ file size).",f="Error while reading zip file.",c="Error while writing zip file.",h="Error while writing file data.",d="Error while reading file data.",p="File already exists.",g=524288,y="text/plain";try{n=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){n=void 0}var b={};function m(){this.crc=-1}function v(){}function w(e,t){var r,n;return r=new ArrayBuffer(e),n=new Uint8Array(r),t&&n.set(t,0),{buffer:r,array:n,view:new DataView(r)}}function _(){}function E(e){var t,r=this;r.size=0,r.init=function(n,i){var o=new Blob([e],{type:y});(t=new T(o)).init(function(){r.size=t.size,n()},i)},r.readUint8Array=function(e,r,n,i){t.readUint8Array(e,r,n,i)}}function x(e){var t,r=this;r.size=0,r.init=function(n){for(var i=e.length;"="==e.charAt(i-1);)i--;t=e.indexOf(",")+1,r.size=Math.floor(.75*(i-t)),n()},r.readUint8Array=function(r,n,i){var o,a=w(n),s=4*Math.floor(r/3),u=4*Math.ceil((r+n)/3),l=atob(e.substring(s+t,u+t)),f=r-3*Math.floor(s/4);for(o=f;oe.size)throw new RangeError("offset:"+t+", length:"+r+", size:"+e.size);return e.slice?e.slice(t,t+r):e.webkitSlice?e.webkitSlice(t,t+r):e.mozSlice?e.mozSlice(t,t+r):e.msSlice?e.msSlice(t,t+r):void 0}(e,t,r))}catch(e){i(e)}}}function k(){}function N(e){var t;this.init=function(e){t=new Blob([],{type:y}),e()},this.writeUint8Array=function(e,r){t=new Blob([t,n?e:e.buffer],{type:y}),r()},this.getData=function(r,n){var i=new FileReader;i.onload=function(e){r(e.target.result)},i.onerror=n,i.readAsText(t,e)}}function S(e){var t="",r="";this.init=function(r){t+="data:"+(e||"")+";base64,",r()},this.writeUint8Array=function(e,n){var i,o=r.length,a=r;for(r="",i=0;i<3*Math.floor((o+e.length)/3)-o;i++)a+=String.fromCharCode(e[i]);for(;i2?t+=btoa(a):r=a,n()},this.getData=function(e){e(t+btoa(r))}}function I(e){var t;this.init=function(r){t=new Blob([],{type:e}),r()},this.writeUint8Array=function(r,i){t=new Blob([t,n?r:r.buffer],{type:e}),i()},this.getData=function(e){e(t)}}function A(e,t,r,n,i,o,a,s,u,l){var f,c,h,d=0,p=t.sn;function y(){e.removeEventListener("message",b,!1),s(c,h)}function b(t){var r=t.data,i=r.data,s=r.error;if(s)return s.toString=function(){return"Error: "+this.message},void u(s);if(r.sn===p)switch("number"==typeof r.codecTime&&(e.codecTime+=r.codecTime),"number"==typeof r.crcTime&&(e.crcTime+=r.crcTime),r.type){case"append":i?(c+=i.length,n.writeUint8Array(i,function(){m()},l)):m();break;case"flush":h=r.crc,i?(c+=i.length,n.writeUint8Array(i,function(){y()},l)):y();break;case"progress":a&&a(f+r.loaded,o);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",r)}}function m(){(f=d*g)<=o?r.readUint8Array(i+f,Math.min(g,o-f),function(r){a&&a(f,o);var n=0===f?t:{sn:p};n.type="append",n.data=r;try{e.postMessage(n,[r.buffer])}catch(t){e.postMessage(n)}d++},u):e.postMessage({sn:p,type:"flush"})}c=0,e.addEventListener("message",b,!1),m()}function D(e,t,r,n,i,o,a,s,u,l){var f,c=0,h=0,d="input"===o,p="output"===o,y=new m;!function o(){var b;if((f=c*g)127?i[r-128]:String.fromCharCode(r);return n}function M(e){return decodeURIComponent(escape(e))}function U(e){var t,r="";for(t=0;t>16,r=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((n||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(r+10,!0),e.compressedSize=t.view.getUint32(r+14,!0),e.uncompressedSize=t.view.getUint32(r+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(r+22,!0),e.extraFieldLength=t.view.getUint16(r+24,!0)):i(l)):i(u)}function B(e,t,r){var n=0;function i(){}i.prototype.getData=function(t,i,o,u){var l=this;function f(e,n){u&&!function(e){var t=w(4);return t.view.setUint32(0,e),l.crc32==t.view.getUint32(0)}(n)?r(s):t.getData(function(e){i(e)})}function c(e){r(e||d)}function p(e){r(e||h)}e.readUint8Array(l.offset,30,function(i){var s,h=w(i.length,i);1347093252==h.view.getUint32(0)?(C(l,h,4,!1,r),s=l.offset+30+l.filenameLength+l.extraFieldLength,t.init(function(){0===l.compressionMethod?L(l._worker,n++,e,t,s,l.compressedSize,u,f,o,c,p):function(e,t,r,n,i,o,a,s,u,l,f){var c=a?"output":"none";b.useWebWorkers?A(e,{sn:t,codecClass:"Inflater",crcType:c},r,n,i,o,u,s,l,f):D(new b.Inflater,r,n,i,o,c,u,s,l,f)}(l._worker,n++,e,t,s,l.compressedSize,u,f,o,c,p)},p)):r(a)},c)};var o={getEntries:function(t){var n=this._worker;!function(t){var n=22;if(e.size=0;r--)if(80===e[r]&&75===e[r+1]&&5===e[r+2]&&6===e[r+3])return void t(new DataView(e.buffer,r,n));o()},function(){r(f)})}}(function(o){var s,u;s=o.getUint32(16,!0),u=o.getUint16(8,!0),s<0||s>=e.size?r(a):e.readUint8Array(s,e.size-s,function(e){var o,s,l,f,c=0,h=[],d=w(e.length,e);for(o=0;o>>8^r[255&(t^e[n])];this.crc=t},m.prototype.get=function(){return~this.crc},m.prototype.table=function(){var e,t,r,n=[];for(e=0;e<256;e++){for(r=e,t=0;t<8;t++)1&r?r=r>>>1^3988292384:r>>>=1;n[e]=r}return n}(),v.prototype.append=function(e,t){return e},v.prototype.flush=function(){},E.prototype=new _,E.prototype.constructor=E,x.prototype=new _,x.prototype.constructor=x,T.prototype=new _,T.prototype.constructor=T,k.prototype.getData=function(e){e(this.data)},N.prototype=new k,N.prototype.constructor=N,S.prototype=new k,S.prototype.constructor=S,I.prototype=new k,I.prototype.constructor=I;var q={Reader:_,Writer:k,BlobReader:T,Data64URIReader:x,TextReader:E,BlobWriter:I,Data64URIWriter:S,TextWriter:N,createReader:function(e,t,r){r=r||z,e.init(function(){B(e,t,r)},r)},createWriter:function(e,t,r,n){r=r||z,n=!!n,e.init(function(){j(e,t,r,n)},r)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null};for(var X in q)b[X]=q[X];t.exports=b},{"./z-worker":71}],73:[function(e,t,r){function n(e){return e?Array.prototype.slice.call(e):[]}function i(e,t){return!!t&&(t=t.toLowerCase(),Object.prototype.toString.call(e).toLowerCase()==="[object "+t+"]")}function o(e){return"function"==typeof e}function a(e){return"string"==typeof e}function s(e){return i(e,"regexp")}function u(e,t){return 0===e.indexOf(t)}t.exports={toArray:n,extend:function(e){var t=n(arguments);if(1==t.length)return e;t.shift();for(var r=0,i=t.length;r-1:!!s(e)&&e.test(t.toLowerCase())}}},{}],74:[function(e,t,r){var n=e("./lib/browser/zip"),i=e("./lib/browser/blob-to-buffer"),o=e("./lib/utils");function a(e){if(!(e instanceof Blob))throw new Error("Invalid input, expect the first param to be a File/Blob.");if(!(this instanceof a))return new a(e);this.file=e}a.prototype.destroy=function(){this.file=null},a.prototype.getBuffer=function(e,t,r){if(!o.isArray(e)||!o.isFunction(r))return r(new Error("getBuffer: invalid param, expect first param to be an Array and the second param to be a callback function"));o.isFunction(t)&&(r=t,t={}),e=e.map(function(e){return"string"==typeof e&&(e=e.split("\0").join("")),e});var n=t&&t.multiple||!1;this.getEntries(function(s,u){if(s)return r(s);var l={};u.forEach(function(t){return e.some(function(e){if(o.isThisWhatYouNeed(e,t.filename)){if(n){var r={fileName:e,buffer:t};l[e]?l[e].push(r):l[e]=[r]}else l[e]=t;return!0}})}),function(e,t,r){var n={},o=[],s=0;for(var u in e)o.push({name:u,entry:e[u]});o.length||r(null,{},o.length);function l(e,t){s++,n[e]=t}o.forEach(function(e){var u,f;u=e.name,f=e.entry,a.getEntryData(f,function(e,a){if(e)return r(e);"blob"===t.type?(l(u,a),s>=o.length&&r(null,n,o.length)):i(a,function(e,t){if(e)return console.error(e),r(e);l(u,t),s>=o.length&&r(null,n,o.length)})})})}(l,t,function(e,t){r(e,t,u.length)})})},a.prototype.getEntries=function(e){n.createReader(new n.BlobReader(this.file),function(t){t.getEntries(function(t){e(null,t,t.length)})},e)},a.getEntryData=function(e,t){var r=new n.BlobWriter;e.getData(r,function(r){t(null,r,e.length)})},t.exports=a},{"./lib/browser/blob-to-buffer":70,"./lib/browser/zip":72,"./lib/utils":73}],75:[function(e,t,r){var n,i;n=this,i=function(){"use strict";function e(e,t,r){this.low=0|e,this.high=0|t,this.unsigned=!!r}function t(e){return!0===(e&&e.__isLong__)}e.prototype.__isLong__,Object.defineProperty(e.prototype,"__isLong__",{value:!0,enumerable:!1,configurable:!1}),e.isLong=t;var r={},n={};function i(e,t){var i,o,s;return t?(s=0<=(e>>>=0)&&e<256)&&(o=n[e])?o:(i=a(e,(0|e)<0?-1:0,!0),s&&(n[e]=i),i):(s=-128<=(e|=0)&&e<128)&&(o=r[e])?o:(i=a(e,e<0?-1:0,!1),s&&(r[e]=i),i)}function o(e,t){if(isNaN(e)||!isFinite(e))return t?g:p;if(t){if(e<0)return g;if(e>=c)return w}else{if(e<=-h)return _;if(e+1>=h)return v}return e<0?o(-e,t).neg():a(e%f|0,e/f|0,t)}function a(t,r,n){return new e(t,r,n)}e.fromInt=i,e.fromNumber=o,e.fromBits=a;var s=Math.pow;function u(e,t,r){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return p;if("number"==typeof t?(r=t,t=!1):t=!!t,(r=r||10)<2||360)throw Error("interior hyphen");if(0===n)return u(e.substring(1),t,r).neg();for(var i=o(s(r,8)),a=p,l=0;l>>0:this.low},E.toNumber=function(){return this.unsigned?(this.high>>>0)*f+(this.low>>>0):this.high*f+(this.low>>>0)},E.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=l).isZero())return f+u;for(;f.length<6;)f="0"+f;u=""+f+u}},E.getHighBits=function(){return this.high},E.getHighBitsUnsigned=function(){return this.high>>>0},E.getLowBits=function(){return this.low},E.getLowBitsUnsigned=function(){return this.low>>>0},E.getNumBitsAbs=function(){if(this.isNegative())return this.eq(_)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},E.isOdd=function(){return 1==(1&this.low)},E.isEven=function(){return 0==(1&this.low)},E.equals=function(e){return t(e)||(e=l(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},E.eq=E.equals,E.notEquals=function(e){return!this.eq(e)},E.neq=E.notEquals,E.lessThan=function(e){return this.comp(e)<0},E.lt=E.lessThan,E.lessThanOrEqual=function(e){return this.comp(e)<=0},E.lte=E.lessThanOrEqual,E.greaterThan=function(e){return this.comp(e)>0},E.gt=E.greaterThan,E.greaterThanOrEqual=function(e){return this.comp(e)>=0},E.gte=E.greaterThanOrEqual,E.compare=function(e){if(t(e)||(e=l(e)),this.eq(e))return 0;var r=this.isNegative(),n=e.isNegative();return r&&!n?-1:!r&&n?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},E.comp=E.compare,E.negate=function(){return!this.unsigned&&this.eq(_)?_:this.not().add(y)},E.neg=E.negate,E.add=function(e){t(e)||(e=l(e));var r=this.high>>>16,n=65535&this.high,i=this.low>>>16,o=65535&this.low,s=e.high>>>16,u=65535&e.high,f=e.low>>>16,c=0,h=0,d=0,p=0;return d+=(p+=o+(65535&e.low))>>>16,h+=(d+=i+f)>>>16,c+=(h+=n+u)>>>16,c+=r+s,a((d&=65535)<<16|(p&=65535),(c&=65535)<<16|(h&=65535),this.unsigned)},E.subtract=function(e){return t(e)||(e=l(e)),this.add(e.neg())},E.sub=E.subtract,E.multiply=function(e){if(this.isZero())return p;if(t(e)||(e=l(e)),e.isZero())return p;if(this.eq(_))return e.isOdd()?_:p;if(e.eq(_))return this.isOdd()?_:p;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(d)&&e.lt(d))return o(this.toNumber()*e.toNumber(),this.unsigned);var r=this.high>>>16,n=65535&this.high,i=this.low>>>16,s=65535&this.low,u=e.high>>>16,f=65535&e.high,c=e.low>>>16,h=65535&e.low,g=0,y=0,b=0,m=0;return b+=(m+=s*h)>>>16,y+=(b+=i*h)>>>16,b&=65535,y+=(b+=s*c)>>>16,g+=(y+=n*h)>>>16,y&=65535,g+=(y+=i*c)>>>16,y&=65535,g+=(y+=s*f)>>>16,g+=r*h+n*c+i*f+s*u,a((b&=65535)<<16|(m&=65535),(g&=65535)<<16|(y&=65535),this.unsigned)},E.mul=E.multiply,E.divide=function(e){if(t(e)||(e=l(e)),e.isZero())throw Error("division by zero");if(this.isZero())return this.unsigned?g:p;var r,n,i;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return g;if(e.gt(this.shru(1)))return b;i=g}else{if(this.eq(_))return e.eq(y)||e.eq(m)?_:e.eq(_)?y:(r=this.shr(1).div(e).shl(1)).eq(p)?e.isNegative()?y:m:(n=this.sub(e.mul(r)),i=r.add(n.div(e)));else if(e.eq(_))return this.unsigned?g:p;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();i=p}for(n=this;n.gte(e);){r=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(r)/Math.LN2),u=a<=48?1:s(2,a-48),f=o(r),c=f.mul(e);c.isNegative()||c.gt(n);)c=(f=o(r-=u,this.unsigned)).mul(e);f.isZero()&&(f=y),i=i.add(f),n=n.sub(c)}return i},E.div=E.divide,E.modulo=function(e){return t(e)||(e=l(e)),this.sub(this.div(e).mul(e))},E.mod=E.modulo,E.not=function(){return a(~this.low,~this.high,this.unsigned)},E.and=function(e){return t(e)||(e=l(e)),a(this.low&e.low,this.high&e.high,this.unsigned)},E.or=function(e){return t(e)||(e=l(e)),a(this.low|e.low,this.high|e.high,this.unsigned)},E.xor=function(e){return t(e)||(e=l(e)),a(this.low^e.low,this.high^e.high,this.unsigned)},E.shiftLeft=function(e){return t(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?a(this.low<>>32-e,this.unsigned):a(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):a(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},E.shr=E.shiftRight,E.shiftRightUnsigned=function(e){if(t(e)&&(e=e.toInt()),0===(e&=63))return this;var r=this.high;return e<32?a(this.low>>>e|r<<32-e,r>>>e,this.unsigned):a(32===e?r:r>>>e-32,0,this.unsigned)},E.shru=E.shiftRightUnsigned,E.toSigned=function(){return this.unsigned?a(this.low,this.high,!1):this},E.toUnsigned=function(){return this.unsigned?this:a(this.low,this.high,!0)},E.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},E.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24&255,255&e,e>>>8&255,e>>>16&255,e>>>24&255]},E.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t]},e},"function"==typeof e&&"object"==typeof t&&t&&t.exports?t.exports=i():(n.dcodeIO=n.dcodeIO||{}).Long=i()},{}],76:[function(e,t,r){"use strict";var n;if(!Object.keys){var i=Object.prototype.hasOwnProperty,o=Object.prototype.toString,a=e("./isArguments"),s=Object.prototype.propertyIsEnumerable,u=!s.call({toString:null},"toString"),l=s.call(function(){},"prototype"),f=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],c=function(e){var t=e.constructor;return t&&t.prototype===e},h={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!h["$"+e]&&i.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{c(window[e])}catch(e){return!0}}catch(e){return!0}return!1}();n=function(e){var t=null!==e&&"object"==typeof e,r="[object Function]"===o.call(e),n=a(e),s=t&&"[object String]"===o.call(e),h=[];if(!t&&!r&&!n)throw new TypeError("Object.keys called on a non-object");var p=l&&r;if(s&&e.length>0&&!i.call(e,0))for(var g=0;g0)for(var y=0;y=0&&"[object Function]"===n.call(e.callee)),r}},{}],79:[function(e,t,r){"use strict";var n=e("object-keys"),i=e("has-symbols/shams")(),o=e("call-bind/callBound"),a=Object,s=o("Array.prototype.push"),u=o("Object.prototype.propertyIsEnumerable"),l=i?Object.getOwnPropertySymbols:null;t.exports=function(e,t){if(null==e)throw new TypeError("target must be an object");var r=a(e);if(1===arguments.length)return r;for(var o=1;o>>16&65535|0,a=0;0!==r;){r-=a=r>2e3?2e3:r;do{o=o+(i=i+t[n++]|0)|0}while(--a);i%=65521,o%=65521}return i|o<<16|0}},{}],83:[function(e,t,r){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],84:[function(e,t,r){"use strict";var n=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,i){var o=n,a=i+r;e^=-1;for(var s=i;s>>8^o[255&(e^t[s])];return-1^e}},{}],85:[function(e,t,r){"use strict";var n,i=e("../utils/common"),o=e("./trees"),a=e("./adler32"),s=e("./crc32"),u=e("./messages"),l=0,f=1,c=3,h=4,d=5,p=0,g=1,y=-2,b=-3,m=-5,v=-1,w=1,_=2,E=3,x=4,T=0,k=2,N=8,S=9,I=15,A=8,D=286,L=30,O=19,M=2*D+1,U=15,C=3,B=258,R=B+C+1,P=32,j=42,F=69,z=73,q=91,X=103,Z=113,V=666,H=1,W=2,G=3,K=4,$=3;function Y(e,t){return e.msg=u[t],t}function J(e){return(e<<1)-(e>4?9:0)}function Q(e){for(var t=e.length;--t>=0;)e[t]=0}function ee(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(i.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function te(e,t){o._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ee(e.strm)}function re(e,t){e.pending_buf[e.pending++]=t}function ne(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function ie(e,t){var r,n,i=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match,u=e.strstart>e.w_size-R?e.strstart-(e.w_size-R):0,l=e.window,f=e.w_mask,c=e.prev,h=e.strstart+B,d=l[o+a-1],p=l[o+a];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(l[(r=t)+a]===p&&l[r+a-1]===d&&l[r]===l[o]&&l[++r]===l[o+1]){o+=2,r++;do{}while(l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&l[++o]===l[++r]&&oa){if(e.match_start=t,a=n,n>=s)break;d=l[o+a-1],p=l[o+a]}}}while((t=c[t&f])>u&&0!=--i);return a<=e.lookahead?a:e.lookahead}function oe(e){var t,r,n,o,u,l,f,c,h,d,p=e.w_size;do{if(o=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-R)){i.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=p?n-p:0}while(--r);t=r=p;do{n=e.prev[--t],e.prev[t]=n>=p?n-p:0}while(--r);o+=p}if(0===e.strm.avail_in)break;if(l=e.strm,f=e.window,c=e.strstart+e.lookahead,h=o,d=void 0,(d=l.avail_in)>h&&(d=h),r=0===d?0:(l.avail_in-=d,i.arraySet(f,l.input,l.next_in,d,c),1===l.state.wrap?l.adler=a(l.adler,f,d,c):2===l.state.wrap&&(l.adler=s(l.adler,f,d,c)),l.next_in+=d,l.total_in+=d,d),e.lookahead+=r,e.lookahead+e.insert>=C)for(u=e.strstart-e.insert,e.ins_h=e.window[u],e.ins_h=(e.ins_h<=C&&(e.ins_h=(e.ins_h<=C)if(n=o._tr_tally(e,e.strstart-e.match_start,e.match_length-C),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=C){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=C&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=C-1)),e.prev_length>=C&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-C,n=o._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-C),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(s=2,n-=16),o<1||o>S||r!==N||n<8||n>15||t<0||t>9||a<0||a>x)return Y(e,y);8===n&&(n=9);var u=new function(){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=N,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 i.Buf16(2*M),this.dyn_dtree=new i.Buf16(2*(2*L+1)),this.bl_tree=new i.Buf16(2*(2*O+1)),Q(this.dyn_ltree),Q(this.dyn_dtree),Q(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(U+1),this.heap=new i.Buf16(2*D+1),Q(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*D+1),Q(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};return e.state=u,u.strm=e,u.wrap=s,u.gzhead=null,u.w_bits=n,u.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(oe(e),0===e.lookahead&&t===l)return H;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,te(e,!1),0===e.strm.avail_out))return H;if(e.strstart-e.block_start>=e.w_size-R&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===h?(te(e,!0),0===e.strm.avail_out?G:K):(e.strstart>e.block_start&&(te(e,!1),e.strm.avail_out),H)}),new ue(4,4,8,4,ae),new ue(4,5,16,8,ae),new ue(4,6,32,32,ae),new ue(4,4,16,16,se),new ue(8,16,32,32,se),new ue(8,16,128,128,se),new ue(8,32,128,256,se),new ue(32,128,258,1024,se),new ue(32,258,258,4096,se)],r.deflateInit=function(e,t){return ce(e,t,N,I,A,T)},r.deflateInit2=ce,r.deflateReset=fe,r.deflateResetKeep=le,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?y:(e.state.gzhead=t,p):y},r.deflate=function(e,t){var r,i,a,u;if(!e||!e.state||t>d||t<0)return e?Y(e,y):y;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||i.status===V&&t!==h)return Y(e,0===e.avail_out?m:y);if(i.strm=e,r=i.last_flush,i.last_flush=t,i.status===j)if(2===i.wrap)e.adler=0,re(i,31),re(i,139),re(i,8),i.gzhead?(re(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),re(i,255&i.gzhead.time),re(i,i.gzhead.time>>8&255),re(i,i.gzhead.time>>16&255),re(i,i.gzhead.time>>24&255),re(i,9===i.level?2:i.strategy>=_||i.level<2?4:0),re(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(re(i,255&i.gzhead.extra.length),re(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=s(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=F):(re(i,0),re(i,0),re(i,0),re(i,0),re(i,0),re(i,9===i.level?2:i.strategy>=_||i.level<2?4:0),re(i,$),i.status=Z);else{var b=N+(i.w_bits-8<<4)<<8;b|=(i.strategy>=_||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(b|=P),b+=31-b%31,i.status=Z,ne(i,b),0!==i.strstart&&(ne(i,e.adler>>>16),ne(i,65535&e.adler)),e.adler=1}if(i.status===F)if(i.gzhead.extra){for(a=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),ee(e),a=i.pending,i.pending!==i.pending_buf_size));)re(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=z)}else i.status=z;if(i.status===z)if(i.gzhead.name){a=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),ee(e),a=i.pending,i.pending===i.pending_buf_size)){u=1;break}u=i.gzindexa&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),0===u&&(i.gzindex=0,i.status=q)}else i.status=q;if(i.status===q)if(i.gzhead.comment){a=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>a&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),ee(e),a=i.pending,i.pending===i.pending_buf_size)){u=1;break}u=i.gzindexa&&(e.adler=s(e.adler,i.pending_buf,i.pending-a,a)),0===u&&(i.status=X)}else i.status=X;if(i.status===X&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ee(e),i.pending+2<=i.pending_buf_size&&(re(i,255&e.adler),re(i,e.adler>>8&255),e.adler=0,i.status=Z)):i.status=Z),0!==i.pending){if(ee(e),0===e.avail_out)return i.last_flush=-1,p}else if(0===e.avail_in&&J(t)<=J(r)&&t!==h)return Y(e,m);if(i.status===V&&0!==e.avail_in)return Y(e,m);if(0!==e.avail_in||0!==i.lookahead||t!==l&&i.status!==V){var v=i.strategy===_?function(e,t){for(var r;;){if(0===e.lookahead&&(oe(e),0===e.lookahead)){if(t===l)return H;break}if(e.match_length=0,r=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===h?(te(e,!0),0===e.strm.avail_out?G:K):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:W}(i,t):i.strategy===E?function(e,t){for(var r,n,i,a,s=e.window;;){if(e.lookahead<=B){if(oe(e),e.lookahead<=B&&t===l)return H;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=C&&e.strstart>0&&(n=s[i=e.strstart-1])===s[++i]&&n===s[++i]&&n===s[++i]){a=e.strstart+B;do{}while(n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=C?(r=o._tr_tally(e,1,e.match_length-C),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===h?(te(e,!0),0===e.strm.avail_out?G:K):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:W}(i,t):n[i.level].func(i,t);if(v!==G&&v!==K||(i.status=V),v===H||v===G)return 0===e.avail_out&&(i.last_flush=-1),p;if(v===W&&(t===f?o._tr_align(i):t!==d&&(o._tr_stored_block(i,0,0,!1),t===c&&(Q(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ee(e),0===e.avail_out))return i.last_flush=-1,p}return t!==h?p:i.wrap<=0?g:(2===i.wrap?(re(i,255&e.adler),re(i,e.adler>>8&255),re(i,e.adler>>16&255),re(i,e.adler>>24&255),re(i,255&e.total_in),re(i,e.total_in>>8&255),re(i,e.total_in>>16&255),re(i,e.total_in>>24&255)):(ne(i,e.adler>>>16),ne(i,65535&e.adler)),ee(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?p:g)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==j&&t!==F&&t!==z&&t!==q&&t!==X&&t!==Z&&t!==V?Y(e,y):(e.state=null,t===Z?Y(e,b):p):y},r.deflateSetDictionary=function(e,t){var r,n,o,s,u,l,f,c,h=t.length;if(!e||!e.state)return y;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==j||r.lookahead)return y;for(1===s&&(e.adler=a(e.adler,t,h,0)),r.wrap=0,h>=r.w_size&&(0===s&&(Q(r.head),r.strstart=0,r.block_start=0,r.insert=0),c=new i.Buf8(r.w_size),i.arraySet(c,t,h-r.w_size,r.w_size,0),t=c,h=r.w_size),u=e.avail_in,l=e.next_in,f=e.input,e.avail_in=h,e.next_in=0,e.input=t,oe(r);r.lookahead>=C;){n=r.strstart,o=r.lookahead-(C-1);do{r.ins_h=(r.ins_h<>>=w=v>>>24,p-=w,0===(w=v>>>16&255))N[o++]=65535&v;else{if(!(16&w)){if(0==(64&w)){v=g[(65535&v)+(d&(1<>>=w,p-=w),p<15&&(d+=k[n++]<>>=w=v>>>24,p-=w,!(16&(w=v>>>16&255))){if(0==(64&w)){v=y[(65535&v)+(d&(1<u){e.msg="invalid distance too far back",r.mode=30;break e}if(d>>>=w,p-=w,E>(w=o-a)){if((w=E-w)>f&&r.sane){e.msg="invalid distance too far back",r.mode=30;break e}if(x=0,T=h,0===c){if(x+=l-w,w<_){_-=w;do{N[o++]=h[x++]}while(--w);x=o-E,T=N}}else if(c2;)N[o++]=T[x++],N[o++]=T[x++],N[o++]=T[x++],_-=3;_&&(N[o++]=T[x++],_>1&&(N[o++]=T[x++]))}else{x=o-E;do{N[o++]=N[x++],N[o++]=N[x++],N[o++]=N[x++],_-=3}while(_>2);_&&(N[o++]=N[x++],_>1&&(N[o++]=N[x++]))}break}}break}}while(n>3,d&=(1<<(p-=_<<3))-1,e.next_in=n,e.next_out=o,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function ie(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=E,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(ee),t.distcode=t.distdyn=new n.Buf32(te),t.sane=1,t.back=-1,p):b}function oe(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,ie(e)):b}function ae(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?b:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,oe(e))):b}function se(e,t){var r,i;return e?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},e.state=i,i.window=null,(r=ae(e,t))!==p&&(e.state=null),r):b}var ue,le,fe=!0;function ce(e){if(fe){var t;for(ue=new n.Buf32(512),le=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(l,e.lens,0,288,ue,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(f,e.lens,0,32,le,0,e.work,{bits:5}),fe=!1}e.lencode=ue,e.lenbits=9,e.distcode=le,e.distbits=5}function he(e,t,r,i){var o,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(n.arraySet(a.window,t,r-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):((o=a.wsize-a.wnext)>i&&(o=i),n.arraySet(a.window,t,r-i,o,a.wnext),(i-=o)?(n.arraySet(a.window,t,r-i,i,0),a.wnext=i,a.whave=a.wsize):(a.wnext+=o,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,r.check=o(r.check,Se,2,0),se=0,ue=0,r.mode=x;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&se)<<8)+(se>>8))%31){e.msg="incorrect header check",r.mode=Y;break}if((15&se)!==_){e.msg="unknown compression method",r.mode=Y;break}if(ue-=4,Ee=8+(15&(se>>>=4)),0===r.wbits)r.wbits=Ee;else if(Ee>r.wbits){e.msg="invalid window size",r.mode=Y;break}r.dmax=1<>8&1),512&r.flags&&(Se[0]=255&se,Se[1]=se>>>8&255,r.check=o(r.check,Se,2,0)),se=0,ue=0,r.mode=T;case T:for(;ue<32;){if(0===oe)break e;oe--,se+=ee[re++]<>>8&255,Se[2]=se>>>16&255,Se[3]=se>>>24&255,r.check=o(r.check,Se,4,0)),se=0,ue=0,r.mode=k;case k:for(;ue<16;){if(0===oe)break e;oe--,se+=ee[re++]<>8),512&r.flags&&(Se[0]=255&se,Se[1]=se>>>8&255,r.check=o(r.check,Se,2,0)),se=0,ue=0,r.mode=N;case N:if(1024&r.flags){for(;ue<16;){if(0===oe)break e;oe--,se+=ee[re++]<>>8&255,r.check=o(r.check,Se,2,0)),se=0,ue=0}else r.head&&(r.head.extra=null);r.mode=S;case S:if(1024&r.flags&&((de=r.length)>oe&&(de=oe),de&&(r.head&&(Ee=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,ee,re,de,Ee)),512&r.flags&&(r.check=o(r.check,ee,de,re)),oe-=de,re+=de,r.length-=de),r.length))break e;r.length=0,r.mode=I;case I:if(2048&r.flags){if(0===oe)break e;de=0;do{Ee=ee[re+de++],r.head&&Ee&&r.length<65536&&(r.head.name+=String.fromCharCode(Ee))}while(Ee&&de>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=M;break;case L:for(;ue<32;){if(0===oe)break e;oe--,se+=ee[re++]<>>=7&ue,ue-=7&ue,r.mode=G;break}for(;ue<3;){if(0===oe)break e;oe--,se+=ee[re++]<>>=1)){case 0:r.mode=C;break;case 1:if(ce(r),r.mode=z,t===d){se>>>=2,ue-=2;break e}break;case 2:r.mode=P;break;case 3:e.msg="invalid block type",r.mode=Y}se>>>=2,ue-=2;break;case C:for(se>>>=7&ue,ue-=7&ue;ue<32;){if(0===oe)break e;oe--,se+=ee[re++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=Y;break}if(r.length=65535&se,se=0,ue=0,r.mode=B,t===d)break e;case B:r.mode=R;case R:if(de=r.length){if(de>oe&&(de=oe),de>ae&&(de=ae),0===de)break e;n.arraySet(te,ee,re,de,ie),oe-=de,re+=de,ae-=de,ie+=de,r.length-=de;break}r.mode=M;break;case P:for(;ue<14;){if(0===oe)break e;oe--,se+=ee[re++]<>>=5,ue-=5,r.ndist=1+(31&se),se>>>=5,ue-=5,r.ncode=4+(15&se),se>>>=4,ue-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=Y;break}r.have=0,r.mode=j;case j:for(;r.have>>=3,ue-=3}for(;r.have<19;)r.lens[Ie[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,Te={bits:r.lenbits},xe=s(u,r.lens,0,19,r.lencode,0,r.work,Te),r.lenbits=Te.bits,xe){e.msg="invalid code lengths set",r.mode=Y;break}r.have=0,r.mode=F;case F:for(;r.have>>16&255,me=65535&Ne,!((ye=Ne>>>24)<=ue);){if(0===oe)break e;oe--,se+=ee[re++]<>>=ye,ue-=ye,r.lens[r.have++]=me;else{if(16===me){for(ke=ye+2;ue>>=ye,ue-=ye,0===r.have){e.msg="invalid bit length repeat",r.mode=Y;break}Ee=r.lens[r.have-1],de=3+(3&se),se>>>=2,ue-=2}else if(17===me){for(ke=ye+3;ue>>=ye)),se>>>=3,ue-=3}else{for(ke=ye+7;ue>>=ye)),se>>>=7,ue-=7}if(r.have+de>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=Y;break}for(;de--;)r.lens[r.have++]=Ee}}if(r.mode===Y)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=Y;break}if(r.lenbits=9,Te={bits:r.lenbits},xe=s(l,r.lens,0,r.nlen,r.lencode,0,r.work,Te),r.lenbits=Te.bits,xe){e.msg="invalid literal/lengths set",r.mode=Y;break}if(r.distbits=6,r.distcode=r.distdyn,Te={bits:r.distbits},xe=s(f,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,Te),r.distbits=Te.bits,xe){e.msg="invalid distances set",r.mode=Y;break}if(r.mode=z,t===d)break e;case z:r.mode=q;case q:if(oe>=6&&ae>=258){e.next_out=ie,e.avail_out=ae,e.next_in=re,e.avail_in=oe,r.hold=se,r.bits=ue,a(e,fe),ie=e.next_out,te=e.output,ae=e.avail_out,re=e.next_in,ee=e.input,oe=e.avail_in,se=r.hold,ue=r.bits,r.mode===M&&(r.back=-1);break}for(r.back=0;be=(Ne=r.lencode[se&(1<>>16&255,me=65535&Ne,!((ye=Ne>>>24)<=ue);){if(0===oe)break e;oe--,se+=ee[re++]<>ve)])>>>16&255,me=65535&Ne,!(ve+(ye=Ne>>>24)<=ue);){if(0===oe)break e;oe--,se+=ee[re++]<>>=ve,ue-=ve,r.back+=ve}if(se>>>=ye,ue-=ye,r.back+=ye,r.length=me,0===be){r.mode=W;break}if(32&be){r.back=-1,r.mode=M;break}if(64&be){e.msg="invalid literal/length code",r.mode=Y;break}r.extra=15&be,r.mode=X;case X:if(r.extra){for(ke=r.extra;ue>>=r.extra,ue-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=Z;case Z:for(;be=(Ne=r.distcode[se&(1<>>16&255,me=65535&Ne,!((ye=Ne>>>24)<=ue);){if(0===oe)break e;oe--,se+=ee[re++]<>ve)])>>>16&255,me=65535&Ne,!(ve+(ye=Ne>>>24)<=ue);){if(0===oe)break e;oe--,se+=ee[re++]<>>=ve,ue-=ve,r.back+=ve}if(se>>>=ye,ue-=ye,r.back+=ye,64&be){e.msg="invalid distance code",r.mode=Y;break}r.offset=me,r.extra=15&be,r.mode=V;case V:if(r.extra){for(ke=r.extra;ue>>=r.extra,ue-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=Y;break}r.mode=H;case H:if(0===ae)break e;if(de=fe-ae,r.offset>de){if((de=r.offset-de)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=Y;break}de>r.wnext?(de-=r.wnext,pe=r.wsize-de):pe=r.wnext-de,de>r.length&&(de=r.length),ge=r.window}else ge=te,pe=ie-r.offset,de=r.length;de>ae&&(de=ae),ae-=de,r.length-=de;do{te[ie++]=ge[pe++]}while(--de);0===r.length&&(r.mode=q);break;case W:if(0===ae)break e;te[ie++]=r.length,ae--,r.mode=q;break;case G:if(r.wrap){for(;ue<32;){if(0===oe)break e;oe--,se|=ee[re++]<=1&&0===C[N];N--);if(S>N&&(S=N),0===N)return l[f++]=20971520,l[f++]=20971520,h.bits=1,0;for(k=1;k0&&(0===e||1!==N))return-1;for(B[1]=0,x=1;x<15;x++)B[x+1]=B[x]+C[x];for(T=0;T852||2===e&&L>592)return 1;for(;;){v=x-A,c[T]m?(w=R[P+c[T]],_=M[U+c[T]]):(w=96,_=0),d=1<>A)+(p-=d)]=v<<24|w<<16|_|0}while(0!==p);for(d=1<>=1;if(0!==d?(O&=d-1,O+=d):O=0,T++,0==--C[x]){if(x===N)break;x=t[r+c[T]]}if(x>S&&(O&y)!==g){for(0===A&&(A=S),b+=k,D=1<<(I=x-A);I+A852||2===e&&L>592)return 1;l[g=O&y]=S<<24|I<<16|b-f|0}}return 0!==O&&(l[b+O]=x-A<<24|64<<16|0),h.bits=S,0}},{"../utils/common":81}],89:[function(e,t,r){"use strict";t.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"}},{}],90:[function(e,t,r){"use strict";var n=e("../utils/common"),i=4,o=0,a=1,s=2;function u(e){for(var t=e.length;--t>=0;)e[t]=0}var l=0,f=1,c=2,h=29,d=256,p=d+1+h,g=30,y=19,b=2*p+1,m=15,v=16,w=7,_=256,E=16,x=17,T=18,k=[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],N=[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],S=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],I=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],A=new Array(2*(p+2));u(A);var D=new Array(2*g);u(D);var L=new Array(512);u(L);var O=new Array(256);u(O);var M=new Array(h);u(M);var U,C,B,R=new Array(g);function P(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function j(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function F(e){return e<256?L[e]:L[256+(e>>>7)]}function z(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function q(e,t,r){e.bi_valid>v-r?(e.bi_buf|=t<>v-e.bi_valid,e.bi_valid+=r-v):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function V(e,t,r){var n,i,o=new Array(m+1),a=0;for(n=1;n<=m;n++)o[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=Z(o[s]++,s))}}function H(e){var t;for(t=0;t8?z(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function G(e,t,r,n){var i=2*t,o=2*r;return e[i]>1;r>=1;r--)K(e,o,r);i=u;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],K(e,o,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,o[2*i]=o[2*r]+o[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,o[2*r+1]=o[2*n+1]=i,e.heap[1]=i++,K(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,o,a,s,u=t.dyn_tree,l=t.max_code,f=t.stat_desc.static_tree,c=t.stat_desc.has_stree,h=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,g=0;for(o=0;o<=m;o++)e.bl_count[o]=0;for(u[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;rp&&(o=p,g++),u[2*n+1]=o,n>l||(e.bl_count[o]++,a=0,n>=d&&(a=h[n-d]),s=u[2*n],e.opt_len+=s*(o+a),c&&(e.static_len+=s*(f[2*n+1]+a)));if(0!==g){do{for(o=p-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[p]--,g-=2}while(g>0);for(o=p;0!==o;o--)for(n=e.bl_count[o];0!==n;)(i=e.heap[--r])>l||(u[2*i+1]!==o&&(e.opt_len+=(o-u[2*i+1])*u[2*i],u[2*i+1]=o),n--)}}(e,t),V(o,l,e.bl_count)}function J(e,t,r){var n,i,o=-1,a=t[1],s=0,u=7,l=4;for(0===a&&(u=138,l=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++s>=7;n0?(e.strm.data_type===s&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return a;for(t=32;t=3&&0===e.bl_tree[2*I[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),u=e.opt_len+3+7>>>3,(l=e.static_len+3+7>>>3)<=u&&(u=l)):u=l=r+5,r+4<=u&&-1!==t?te(e,t,r,n):e.strategy===i||l===u?(q(e,(f<<1)+(n?1:0),3),$(e,A,D)):(q(e,(c<<1)+(n?1:0),3),function(e,t,r,n){var i;for(q(e,t-257,5),q(e,r-1,5),q(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(O[r]+d+1)]++,e.dyn_dtree[2*F(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){q(e,f<<1,3),X(e,_,A),function(e){16===e.bi_valid?(z(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":81}],91:[function(e,t,r){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],92:[function(e,t,r){(function(e){(function(){function t(e,t){for(var r=0,n=e.length-1;n>=0;n--){var i=e[n];"."===i?e.splice(n,1):".."===i?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}function n(e,t){if(e.filter)return e.filter(t);for(var r=[],n=0;n=-1&&!i;o--){var a=o>=0?arguments[o]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(r=a+"/"+r,i="/"===a.charAt(0))}return r=t(n(r.split("/"),function(e){return!!e}),!i).join("/"),(i?"/":"")+r||"."},r.normalize=function(e){var o=r.isAbsolute(e),a="/"===i(e,-1);return(e=t(n(e.split("/"),function(e){return!!e}),!o).join("/"))||o||(e="."),e&&a&&(e+="/"),(o?"/":"")+e},r.isAbsolute=function(e){return"/"===e.charAt(0)},r.join=function(){var e=Array.prototype.slice.call(arguments,0);return r.normalize(n(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},r.relative=function(e,t){function n(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=r.resolve(e).substr(1),t=r.resolve(t).substr(1);for(var i=n(e.split("/")),o=n(t.split("/")),a=Math.min(i.length,o.length),s=a,u=0;u=1;--o)if(47===(t=e.charCodeAt(o))){if(!i){n=o;break}}else i=!1;return-1===n?r?"/":".":r&&1===n?"/":e.slice(0,n)},r.basename=function(e,t){var r=function(e){"string"!=typeof e&&(e+="");var t,r=0,n=-1,i=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!i){r=t+1;break}}else-1===n&&(i=!1,n=t+1);return-1===n?"":e.slice(r,n)}(e);return t&&r.substr(-1*t.length)===t&&(r=r.substr(0,r.length-t.length)),r},r.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,r=0,n=-1,i=!0,o=0,a=e.length-1;a>=0;--a){var s=e.charCodeAt(a);if(47!==s)-1===n&&(i=!1,n=a+1),46===s?-1===t?t=a:1!==o&&(o=1):-1!==t&&(o=-1);else if(!i){r=a+1;break}}return-1===t||-1===n||0===o||1===o&&t===n-1&&t===r+1?"":e.slice(t,n)};var i="b"==="ab".substr(-1)?function(e,t,r){return e.substr(t,r)}:function(e,t,r){return t<0&&(t=e.length+t),e.substr(t,r)}}).call(this)}).call(this,e("_process"))},{_process:97}],93:[function(e,t,r){var n=e("./lib/parse");Object.keys(n).forEach(function(e){r[e]=n[e]});var i=e("./lib/build");Object.keys(i).forEach(function(e){r[e]=i[e]})},{"./lib/build":94,"./lib/parse":95}],94:[function(e,t,r){(function(t){(function(){var n=e("base64-js"),i=e("xmlbuilder");r.build=function(e,r){var o={version:"1.0",encoding:"UTF-8"},s={pubid:"-//Apple//DTD PLIST 1.0//EN",sysid:"http://www.apple.com/DTDs/PropertyList-1.0.dtd"},u=i.create("plist");u.dec(o.version,o.encoding,o.standalone),u.dtd(s.pubid,s.sysid),u.att("version","1.0"),function e(r,i){var o,s,u,l=a(r);if("Undefined"!=l)if(Array.isArray(r))for(i=i.ele("array"),s=0;s");var a=function e(r){var n,a,f,c,h,d;if(!r)return null;if("plist"===r.nodeName){if(c=[],u(r))return c;for(n=0;n."),f=e(r.childNodes[n])):(l("key"!==r.childNodes[n].nodeName,'Unexpected key "'+e(r.childNodes[n])+'" while parsing .'),a[f]=e(r.childNodes[n])),d+=1);return d%2==1&&(a[f]=""),a}if("array"===r.nodeName){if(c=[],u(r))return c;for(n=0;n1)for(var r=1;r0?("string"==typeof t||a.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),n?a.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):_(e,a,t,!0):a.ended?e.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?_(e,a,t,!1):N(e,a)):_(e,a,t,!1))):n||(a.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=E?e=E:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function T(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(d("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(k,e):k(e))}function k(e){d("emit readable"),e.emit("readable"),D(e)}function N(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(S,e,t))}function S(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;eo.length?o.length:e;if(a===o.length?i+=o:i+=o.slice(0,e),0===(e-=a)){a===o.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(a));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=l.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var o=n.data,a=e>o.length?o.length:e;if(o.copy(r,r.length-e,0,a),0===(e-=a)){a===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(a));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function O(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(M,t,e))}function M(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function U(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return d("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?O(this):T(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&O(this),null;var n,i=t.needReadable;return d("need readable",i),(0===t.length||t.length-e0?L(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&O(this)),null!==n&&this.emit("data",n),n},v.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},v.prototype.pipe=function(e,t){var n=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=e;break;case 1:o.pipes=[o.pipes,e];break;default:o.pipes.push(e)}o.pipesCount+=1,d("pipe count=%d opts=%j",o.pipesCount,t);var u=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?f:v;function l(t,r){d("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,d("cleanup"),e.removeListener("close",b),e.removeListener("finish",m),e.removeListener("drain",c),e.removeListener("error",y),e.removeListener("unpipe",l),n.removeListener("end",f),n.removeListener("end",v),n.removeListener("data",g),h=!0,!o.awaitDrain||e._writableState&&!e._writableState.needDrain||c())}function f(){d("onend"),e.end()}o.endEmitted?i.nextTick(u):n.once("end",u),e.on("unpipe",l);var c=function(e){return function(){var t=e._readableState;d("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,"data")&&(t.flowing=!0,D(e))}}(n);e.on("drain",c);var h=!1;var p=!1;function g(t){d("ondata"),p=!1,!1!==e.write(t)||p||((1===o.pipesCount&&o.pipes===e||o.pipesCount>1&&-1!==U(o.pipes,e))&&!h&&(d("false write response, pause",o.awaitDrain),o.awaitDrain++,p=!0),n.pause())}function y(t){d("onerror",t),v(),e.removeListener("error",y),0===s(e,"error")&&e.emit("error",t)}function b(){e.removeListener("finish",m),v()}function m(){d("onfinish"),e.removeListener("close",b),v()}function v(){d("unpipe"),n.unpipe(e)}return n.on("data",g),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?a(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",y),e.once("close",b),e.once("finish",m),e.emit("pipe",n),o.flowing||(d("pipe resume"),n.resume()),e},v.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o-1?i:o.nextTick;m.WritableState=b;var l=Object.create(e("core-util-is"));l.inherits=e("inherits");var f={deprecate:e("util-deprecate")},c=e("./internal/streams/stream"),h=e("safe-buffer").Buffer,d=(void 0!==n?n:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var p,g=e("./internal/streams/destroy");function y(){}function b(t,r){s=s||e("./_stream_duplex"),t=t||{};var n=r instanceof s;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,l=t.writableHighWaterMark,f=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(l||0===l)?l:f,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var c=!1===t.decodeStrings;this.decodeStrings=!c,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(o.nextTick(i,n),o.nextTick(T,e,t),e._writableState.errorEmitted=!0,e.emit("error",n)):(i(n),e._writableState.errorEmitted=!0,e.emit("error",n),T(e,t))}(e,r,n,t,i);else{var a=E(r);a||r.corked||r.bufferProcessing||!r.bufferedRequest||_(e,r),n?u(w,e,r,a,i):w(e,r,a,i)}}(r,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function m(t){if(s=s||e("./_stream_duplex"),!(p.call(m,this)||this instanceof s))return new m(t);this._writableState=new b(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),c.call(this)}function v(e,t,r,n,i,o,a){t.writelen=n,t.writecb=a,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function w(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,n(),T(e,t)}function _(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var s=0,u=!0;r;)i[s]=r,r.isBuf||(u=!1),r=r.next,s+=1;i.allBuffers=u,v(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new a(t),t.bufferedRequestCount=0}else{for(;r;){var l=r.chunk,f=r.encoding,c=r.callback;if(v(e,t,!1,t.objectMode?1:l.length,l,f,c),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function x(e,t){e._final(function(r){t.pendingcb--,r&&e.emit("error",r),t.prefinished=!0,e.emit("prefinish"),T(e,t)})}function T(e,t){var r=E(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,o.nextTick(x,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),r}l.inherits(m,c),b.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(b.prototype,"buffer",{get:f.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(m,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===m&&(e&&e._writableState instanceof b)}})):p=function(e){return e instanceof this},m.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},m.prototype.write=function(e,t,r){var n,i=this._writableState,a=!1,s=!i.objectMode&&(n=e,h.isBuffer(n)||n instanceof d);return s&&!h.isBuffer(e)&&(e=function(e){return h.from(e)}(e)),"function"==typeof t&&(r=t,t=null),s?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=y),i.ended?function(e,t){var r=new Error("write after end");e.emit("error",r),o.nextTick(t,r)}(this,r):(s||function(e,t,r,n){var i=!0,a=!1;return null===r?a=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||t.objectMode||(a=new TypeError("Invalid non-string/buffer chunk")),a&&(e.emit("error",a),o.nextTick(n,a),i=!1),i}(this,i,e,r))&&(i.pendingcb++,a=function(e,t,r,n,i,o){if(!r){var a=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=h.from(t,r));return t}(t,n,i);n!==a&&(r=!0,i="buffer",n=a)}var s=t.objectMode?1:n.length;t.length+=s;var u=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(m.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),m.prototype._write=function(e,t,r){r(new Error("_write() is not implemented"))},m.prototype._writev=null,m.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function(e,t,r){t.ending=!0,T(e,t),r&&(t.finished?o.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(m.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),m.prototype.destroy=g.destroy,m.prototype._undestroy=g.undestroy,m.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("timers").setImmediate)},{"./_stream_duplex":99,"./internal/streams/destroy":105,"./internal/streams/stream":106,_process:97,"core-util-is":29,inherits:67,"process-nextick-args":96,"safe-buffer":107,timers:118,"util-deprecate":119}],104:[function(e,t,r){"use strict";var n=e("safe-buffer").Buffer,i=e("util");t.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);for(var t,r,i,o=n.allocUnsafe(e>>>0),a=this.head,s=0;a;)t=a.data,r=o,i=s,t.copy(r,i),s+=a.data.length,a=a.next;return o},e}(),i&&i.inspect&&i.inspect.custom&&(t.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+" "+e})},{"safe-buffer":107,util:19}],105:[function(e,t,r){"use strict";var n=e("process-nextick-args");function i(e,t){e.emit("error",t)}t.exports={destroy:function(e,t){var r=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(i,this,e)):n.nextTick(i,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?r._writableState?r._writableState.errorEmitted||(r._writableState.errorEmitted=!0,n.nextTick(i,r,e)):n.nextTick(i,r,e):t&&t(e)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{"process-nextick-args":96}],106:[function(e,t,r){t.exports=e("events").EventEmitter},{events:56}],107:[function(e,t,r){var n=e("buffer"),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function a(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(o(n,r),r.Buffer=a),o(i,a),a.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,r)},a.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var n=i(e);return void 0!==t?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},a.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},a.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},{buffer:23}],108:[function(e,t,r){"use strict";var n=e("safe-buffer").Buffer,i=n.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(n.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=l,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=f,this.end=c,t=3;break;default:return this.write=h,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function f(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function c(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function h(e){return e.toString(this.encoding)}function d(e){return e&&e.length?this.write(e):""}r.StringDecoder=o,o.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},{"safe-buffer":107}],109:[function(e,t,r){t.exports=e("./readable").PassThrough},{"./readable":110}],110:[function(e,t,r){(r=t.exports=e("./lib/_stream_readable.js")).Stream=r,r.Readable=r,r.Writable=e("./lib/_stream_writable.js"),r.Duplex=e("./lib/_stream_duplex.js"),r.Transform=e("./lib/_stream_transform.js"),r.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":99,"./lib/_stream_passthrough.js":100,"./lib/_stream_readable.js":101,"./lib/_stream_transform.js":102,"./lib/_stream_writable.js":103}],111:[function(e,t,r){t.exports=e("./readable").Transform},{"./readable":110}],112:[function(e,t,r){t.exports=e("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":103}],113:[function(e,t,r){"use strict";var n=e("get-intrinsic"),i=e("define-data-property"),o=e("has-property-descriptors")(),a=e("gopd"),s=n("%TypeError%"),u=n("%Math.floor%");t.exports=function(e,t){if("function"!=typeof e)throw new s("`fn` is not a function");if("number"!=typeof t||t<0||t>4294967295||u(t)!==t)throw new s("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],n=!0,l=!0;if("length"in e&&a){var f=a(e,"length");f&&!f.configurable&&(n=!1),f&&!f.writable&&(l=!1)}return(n||l||!r)&&(o?i(e,"length",t,!0,!0):i(e,"length",t)),e}},{"define-data-property":55,"get-intrinsic":59,gopd:60,"has-property-descriptors":61}],114:[function(e,t,r){t.exports=i;var n=e("events").EventEmitter;function i(){n.call(this)}e("inherits")(i,n),i.Readable=e("readable-stream/readable.js"),i.Writable=e("readable-stream/writable.js"),i.Duplex=e("readable-stream/duplex.js"),i.Transform=e("readable-stream/transform.js"),i.PassThrough=e("readable-stream/passthrough.js"),i.Stream=i,i.prototype.pipe=function(e,t){var r=this;function i(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on("data",i),e.on("drain",o),e._isStdio||t&&!1===t.end||(r.on("end",s),r.on("close",u));var a=!1;function s(){a||(a=!0,e.end())}function u(){a||(a=!0,"function"==typeof e.destroy&&e.destroy())}function l(e){if(f(),0===n.listenerCount(this,"error"))throw e}function f(){r.removeListener("data",i),e.removeListener("drain",o),r.removeListener("end",s),r.removeListener("close",u),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",f),r.removeListener("close",f),e.removeListener("close",f)}return r.on("error",l),e.on("error",l),r.on("end",f),r.on("close",f),e.on("close",f),e.emit("pipe",r),e}},{events:56,inherits:67,"readable-stream/duplex.js":98,"readable-stream/passthrough.js":109,"readable-stream/readable.js":110,"readable-stream/transform.js":111,"readable-stream/writable.js":112}],115:[function(e,t,r){t.exports=e("stream-to").buffer},{"stream-to":116}],116:[function(e,t,r){(function(e){(function(){function t(e,t){var r=[];function n(e){r.push(e)}function i(){t(null,r),o()}function o(){r=null,e.removeListener("data",n),e.removeListener("end",i),e.removeListener("error",t),e.removeListener("error",o),e.removeListener("close",o)}return e.on("data",n),e.once("end",i),e.once("error",t),e.once("error",o),e.once("close",o),e}r.array=t,r.buffer=function(r,n){return t(r,function(t,r){t||!r?n(t):n(null,e.concat(r))}),r}}).call(this)}).call(this,e("buffer").Buffer)},{buffer:23}],117:[function(e,t,r){(function(r){(function(){"use strict";var n=e("util"),i=e("stream");t.exports.createReadStream=function(e,t){return new o(e,t)};var o=function(e,t){e instanceof r||"string"==typeof e?(t=t||{},i.Readable.call(this,{highWaterMark:t.highWaterMark,encoding:t.encoding})):i.Readable.call(this,{objectMode:!0}),this._object=e};n.inherits(o,i.Readable),o.prototype._read=function(){this.push(this._object),this._object=null}}).call(this)}).call(this,e("buffer").Buffer)},{buffer:23,stream:114,util:122}],118:[function(e,t,r){(function(t,n){(function(){var i=e("process/browser.js").nextTick,o=Function.prototype.apply,a=Array.prototype.slice,s={},u=0;function l(e,t){this._id=e,this._clearFn=t}r.setTimeout=function(){return new l(o.call(setTimeout,window,arguments),clearTimeout)},r.setInterval=function(){return new l(o.call(setInterval,window,arguments),clearInterval)},r.clearTimeout=r.clearInterval=function(e){e.close()},l.prototype.unref=l.prototype.ref=function(){},l.prototype.close=function(){this._clearFn.call(window,this._id)},r.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},r.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},r._unrefActive=r.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r.setImmediate="function"==typeof t?t:function(e){var t=u++,n=!(arguments.length<2)&&a.call(arguments,1);return s[t]=!0,i(function(){s[t]&&(n?e.apply(null,n):e.call(null),r.clearImmediate(t))}),t},r.clearImmediate="function"==typeof n?n:function(e){delete s[e]}}).call(this)}).call(this,e("timers").setImmediate,e("timers").clearImmediate)},{"process/browser.js":97,timers:118}],119:[function(e,t,r){(function(e){(function(){function r(t){try{if(!e.localStorage)return!1}catch(e){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}t.exports=function(e,t){if(r("noDeprecation"))return e;var n=!1;return function(){if(!n){if(r("throwDeprecation"))throw new Error(t);r("traceDeprecation")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],120:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},{}],121:[function(e,t,r){t.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},{}],122:[function(e,t,r){(function(t,n){(function(){var i=/%[sdj%]/g;r.format=function(e){if(!b(e)){for(var t=[],r=0;r=o)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}}),u=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(t)?n.showHidden=t:t&&r._extend(n,t),m(n.showHidden)&&(n.showHidden=!1),m(n.depth)&&(n.depth=2),m(n.colors)&&(n.colors=!1),m(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=u),f(n,e,n.depth)}function u(e,t){var r=s.styles[t];return r?"["+s.colors[r][0]+"m"+e+"["+s.colors[r][1]+"m":e}function l(e,t){return e}function f(e,t,n){if(e.customInspect&&t&&x(t.inspect)&&t.inspect!==r.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(n,e);return b(i)||(i=f(e,i,n)),i}var o=function(e,t){if(m(t))return e.stylize("undefined","undefined");if(b(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(y(t))return e.stylize(""+t,"number");if(p(t))return e.stylize(""+t,"boolean");if(g(t))return e.stylize("null","null")}(e,t);if(o)return o;var a=Object.keys(t),s=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),E(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return c(t);if(0===a.length){if(x(t)){var u=t.name?": "+t.name:"";return e.stylize("[Function"+u+"]","special")}if(v(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(_(t))return e.stylize(Date.prototype.toString.call(t),"date");if(E(t))return c(t)}var l,w="",T=!1,k=["{","}"];(d(t)&&(T=!0,k=["[","]"]),x(t))&&(w=" [Function"+(t.name?": "+t.name:"")+"]");return v(t)&&(w=" "+RegExp.prototype.toString.call(t)),_(t)&&(w=" "+Date.prototype.toUTCString.call(t)),E(t)&&(w=" "+c(t)),0!==a.length||T&&0!=t.length?n<0?v(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),l=T?function(e,t,r,n,i){for(var o=[],a=0,s=t.length;a=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(l,w,k)):k[0]+w+k[1]}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function h(e,t,r,n,i,o){var a,s,u;if((u=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=u.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):u.set&&(s=e.stylize("[Setter]","special")),S(n,i)||(a="["+i+"]"),s||(e.seen.indexOf(u.value)<0?(s=g(r)?f(e,u.value,null):f(e,u.value,r-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+s.split("\n").map(function(e){return" "+e}).join("\n")):s=e.stylize("[Circular]","special")),m(a)){if(o&&i.match(/^\d+$/))return s;(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=e.stylize(a,"string"))}return a+": "+s}function d(e){return Array.isArray(e)}function p(e){return"boolean"==typeof e}function g(e){return null===e}function y(e){return"number"==typeof e}function b(e){return"string"==typeof e}function m(e){return void 0===e}function v(e){return w(e)&&"[object RegExp]"===T(e)}function w(e){return"object"==typeof e&&null!==e}function _(e){return w(e)&&"[object Date]"===T(e)}function E(e){return w(e)&&("[object Error]"===T(e)||e instanceof Error)}function x(e){return"function"==typeof e}function T(e){return Object.prototype.toString.call(e)}function k(e){return e<10?"0"+e.toString(10):e.toString(10)}r.debuglog=function(e){if(m(o)&&(o=t.env.NODE_DEBUG||""),e=e.toUpperCase(),!a[e])if(new RegExp("\\b"+e+"\\b","i").test(o)){var n=t.pid;a[e]=function(){var t=r.format.apply(r,arguments);console.error("%s %d: %s",e,n,t)}}else a[e]=function(){};return a[e]},r.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},r.isArray=d,r.isBoolean=p,r.isNull=g,r.isNullOrUndefined=function(e){return null==e},r.isNumber=y,r.isString=b,r.isSymbol=function(e){return"symbol"==typeof e},r.isUndefined=m,r.isRegExp=v,r.isObject=w,r.isDate=_,r.isError=E,r.isFunction=x,r.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},r.isBuffer=e("./support/isBuffer");var N=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function S(e,t){return Object.prototype.hasOwnProperty.call(e,t)}r.log=function(){var e,t;console.log("%s - %s",(e=new Date,t=[k(e.getHours()),k(e.getMinutes()),k(e.getSeconds())].join(":"),[e.getDate(),N[e.getMonth()],t].join(" ")),r.format.apply(r,arguments))},r.inherits=e("inherits"),r._extend=function(e,t){if(!t||!w(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":121,_process:97,inherits:120}],123:[function(e,t,r){(function(){t.exports={Disconnected:1,Preceding:2,Following:4,Contains:8,ContainedBy:16,ImplementationSpecific:32}}).call(this)},{}],124:[function(e,t,r){(function(){t.exports={Element:1,Attribute:2,Text:3,CData:4,EntityReference:5,EntityDeclaration:6,ProcessingInstruction:7,Comment:8,Document:9,DocType:10,DocumentFragment:11,NotationDeclaration:12,Declaration:201,Raw:202,AttributeDeclaration:203,ElementDeclaration:204,Dummy:205}}).call(this)},{}],125:[function(e,t,r){(function(){var e,r,n,i,o,a,s,u={}.hasOwnProperty;e=function(e,...t){var r,n,i,a;if(o(Object.assign))Object.assign.apply(null,arguments);else for(r=0,i=t.length;r":"attribute: {"+e+"}, parent: <"+this.parent.name+">"}isEqualNode(e){return e.namespaceURI===this.namespaceURI&&(e.prefix===this.prefix&&(e.localName===this.localName&&e.value===this.value))}}return Object.defineProperty(e.prototype,"nodeType",{get:function(){return this.type}}),Object.defineProperty(e.prototype,"ownerElement",{get:function(){return this.parent}}),Object.defineProperty(e.prototype,"textContent",{get:function(){return this.value},set:function(e){return this.value=e||""}}),Object.defineProperty(e.prototype,"namespaceURI",{get:function(){return""}}),Object.defineProperty(e.prototype,"prefix",{get:function(){return""}}),Object.defineProperty(e.prototype,"localName",{get:function(){return this.name}}),Object.defineProperty(e.prototype,"specified",{get:function(){return!0}}),e}.call(this)}).call(this)},{"./NodeType":124,"./XMLNode":146}],128:[function(e,t,r){(function(){var r,n;r=e("./NodeType"),n=e("./XMLCharacterData"),t.exports=class extends n{constructor(e,t){if(super(e),null==t)throw new Error("Missing CDATA text. "+this.debugInfo());this.name="#cdata-section",this.type=r.CData,this.value=this.stringify.cdata(t)}clone(){return Object.create(this)}toString(e){return this.options.writer.cdata(this,this.options.writer.filterOptions(e))}}}).call(this)},{"./NodeType":124,"./XMLCharacterData":129}],129:[function(e,t,r){(function(){var r;r=e("./XMLNode"),t.exports=function(){class e extends r{constructor(e){super(e),this.value=""}clone(){return Object.create(this)}substringData(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())}appendData(e){throw new Error("This DOM method is not implemented."+this.debugInfo())}insertData(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())}deleteData(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())}replaceData(e,t,r){throw new Error("This DOM method is not implemented."+this.debugInfo())}isEqualNode(e){return!!super.isEqualNode(e)&&e.data===this.data}}return Object.defineProperty(e.prototype,"data",{get:function(){return this.value},set:function(e){return this.value=e||""}}),Object.defineProperty(e.prototype,"length",{get:function(){return this.value.length}}),Object.defineProperty(e.prototype,"textContent",{get:function(){return this.value},set:function(e){return this.value=e||""}}),e}.call(this)}).call(this)},{"./XMLNode":146}],130:[function(e,t,r){(function(){var r,n;r=e("./NodeType"),n=e("./XMLCharacterData"),t.exports=class extends n{constructor(e,t){if(super(e),null==t)throw new Error("Missing comment text. "+this.debugInfo());this.name="#comment",this.type=r.Comment,this.value=this.stringify.comment(t)}clone(){return Object.create(this)}toString(e){return this.options.writer.comment(this,this.options.writer.filterOptions(e))}}}).call(this)},{"./NodeType":124,"./XMLCharacterData":129}],131:[function(e,t,r){(function(){var r,n;r=e("./XMLDOMErrorHandler"),n=e("./XMLDOMStringList"),t.exports=function(){class e{constructor(){this.defaultParams={"canonical-form":!1,"cdata-sections":!1,comments:!1,"datatype-normalization":!1,"element-content-whitespace":!0,entities:!0,"error-handler":new r,infoset:!0,"validate-if-schema":!1,namespaces:!0,"namespace-declarations":!0,"normalize-characters":!1,"schema-location":"","schema-type":"","split-cdata-sections":!0,validate:!1,"well-formed":!0},this.params=Object.create(this.defaultParams)}getParameter(e){return this.params.hasOwnProperty(e)?this.params[e]:null}canSetParameter(e,t){return!0}setParameter(e,t){return null!=t?this.params[e]=t:delete this.params[e]}}return Object.defineProperty(e.prototype,"parameterNames",{get:function(){return new n(Object.keys(this.defaultParams))}}),e}.call(this)}).call(this)},{"./XMLDOMErrorHandler":132,"./XMLDOMStringList":134}],132:[function(e,t,r){(function(){t.exports=class{constructor(){}handleError(e){throw new Error(e)}}}).call(this)},{}],133:[function(e,t,r){(function(){t.exports=class{hasFeature(e,t){return!0}createDocumentType(e,t,r){throw new Error("This DOM method is not implemented.")}createDocument(e,t,r){throw new Error("This DOM method is not implemented.")}createHTMLDocument(e){throw new Error("This DOM method is not implemented.")}getFeature(e,t){throw new Error("This DOM method is not implemented.")}}}).call(this)},{}],134:[function(e,t,r){(function(){t.exports=function(){class e{constructor(e){this.arr=e||[]}item(e){return this.arr[e]||null}contains(e){return-1!==this.arr.indexOf(e)}}return Object.defineProperty(e.prototype,"length",{get:function(){return this.arr.length}}),e}.call(this)}).call(this)},{}],135:[function(e,t,r){(function(){var r,n;n=e("./XMLNode"),r=e("./NodeType"),t.exports=class extends n{constructor(e,t,n,i,o,a){if(super(e),null==t)throw new Error("Missing DTD element name. "+this.debugInfo());if(null==n)throw new Error("Missing DTD attribute name. "+this.debugInfo(t));if(!i)throw new Error("Missing DTD attribute type. "+this.debugInfo(t));if(!o)throw new Error("Missing DTD attribute default. "+this.debugInfo(t));if(0!==o.indexOf("#")&&(o="#"+o),!o.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/))throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. "+this.debugInfo(t));if(a&&!o.match(/^(#FIXED|#DEFAULT)$/))throw new Error("Default value only applies to #FIXED or #DEFAULT. "+this.debugInfo(t));this.elementName=this.stringify.name(t),this.type=r.AttributeDeclaration,this.attributeName=this.stringify.name(n),this.attributeType=this.stringify.dtdAttType(i),a&&(this.defaultValue=this.stringify.dtdAttDefault(a)),this.defaultValueType=o}toString(e){return this.options.writer.dtdAttList(this,this.options.writer.filterOptions(e))}}}).call(this)},{"./NodeType":124,"./XMLNode":146}],136:[function(e,t,r){(function(){var r,n;n=e("./XMLNode"),r=e("./NodeType"),t.exports=class extends n{constructor(e,t,n){if(super(e),null==t)throw new Error("Missing DTD element name. "+this.debugInfo());n||(n="(#PCDATA)"),Array.isArray(n)&&(n="("+n.join(",")+")"),this.name=this.stringify.name(t),this.type=r.ElementDeclaration,this.value=this.stringify.dtdElementValue(n)}toString(e){return this.options.writer.dtdElement(this,this.options.writer.filterOptions(e))}}}).call(this)},{"./NodeType":124,"./XMLNode":146}],137:[function(e,t,r){(function(){var r,n,i;({isObject:i}=e("./Utility")),n=e("./XMLNode"),r=e("./NodeType"),t.exports=function(){class e extends n{constructor(e,t,n,o){if(super(e),null==n)throw new Error("Missing DTD entity name. "+this.debugInfo(n));if(null==o)throw new Error("Missing DTD entity value. "+this.debugInfo(n));if(this.pe=!!t,this.name=this.stringify.name(n),this.type=r.EntityDeclaration,i(o)){if(!o.pubID&&!o.sysID)throw new Error("Public and/or system identifiers are required for an external entity. "+this.debugInfo(n));if(o.pubID&&!o.sysID)throw new Error("System identifier is required for a public external entity. "+this.debugInfo(n));if(this.internal=!1,null!=o.pubID&&(this.pubID=this.stringify.dtdPubID(o.pubID)),null!=o.sysID&&(this.sysID=this.stringify.dtdSysID(o.sysID)),null!=o.nData&&(this.nData=this.stringify.dtdNData(o.nData)),this.pe&&this.nData)throw new Error("Notation declaration is not allowed in a parameter entity. "+this.debugInfo(n))}else this.value=this.stringify.dtdEntityValue(o),this.internal=!0}toString(e){return this.options.writer.dtdEntity(this,this.options.writer.filterOptions(e))}}return Object.defineProperty(e.prototype,"publicId",{get:function(){return this.pubID}}),Object.defineProperty(e.prototype,"systemId",{get:function(){return this.sysID}}),Object.defineProperty(e.prototype,"notationName",{get:function(){return this.nData||null}}),Object.defineProperty(e.prototype,"inputEncoding",{get:function(){return null}}),Object.defineProperty(e.prototype,"xmlEncoding",{get:function(){return null}}),Object.defineProperty(e.prototype,"xmlVersion",{get:function(){return null}}),e}.call(this)}).call(this)},{"./NodeType":124,"./Utility":125,"./XMLNode":146}],138:[function(e,t,r){(function(){var r,n;n=e("./XMLNode"),r=e("./NodeType"),t.exports=function(){class e extends n{constructor(e,t,n){if(super(e),null==t)throw new Error("Missing DTD notation name. "+this.debugInfo(t));if(!n.pubID&&!n.sysID)throw new Error("Public or system identifiers are required for an external entity. "+this.debugInfo(t));this.name=this.stringify.name(t),this.type=r.NotationDeclaration,null!=n.pubID&&(this.pubID=this.stringify.dtdPubID(n.pubID)),null!=n.sysID&&(this.sysID=this.stringify.dtdSysID(n.sysID))}toString(e){return this.options.writer.dtdNotation(this,this.options.writer.filterOptions(e))}}return Object.defineProperty(e.prototype,"publicId",{get:function(){return this.pubID}}),Object.defineProperty(e.prototype,"systemId",{get:function(){return this.sysID}}),e}.call(this)}).call(this)},{"./NodeType":124,"./XMLNode":146}],139:[function(e,t,r){(function(){var r,n,i;({isObject:i}=e("./Utility")),n=e("./XMLNode"),r=e("./NodeType"),t.exports=class extends n{constructor(e,t,n,o){super(e),i(t)&&({version:t,encoding:n,standalone:o}=t),t||(t="1.0"),this.type=r.Declaration,this.version=this.stringify.xmlVersion(t),null!=n&&(this.encoding=this.stringify.xmlEncoding(n)),null!=o&&(this.standalone=this.stringify.xmlStandalone(o))}toString(e){return this.options.writer.declaration(this,this.options.writer.filterOptions(e))}}}).call(this)},{"./NodeType":124,"./Utility":125,"./XMLNode":146}],140:[function(e,t,r){(function(){var r,n,i,o,a,s,u,l;({isObject:l}=e("./Utility")),u=e("./XMLNode"),r=e("./NodeType"),n=e("./XMLDTDAttList"),o=e("./XMLDTDEntity"),i=e("./XMLDTDElement"),a=e("./XMLDTDNotation"),s=e("./XMLNamedNodeMap"),t.exports=function(){class e extends u{constructor(e,t,n){var i,o,a,s;if(super(e),this.type=r.DocType,e.children)for(o=0,a=(s=e.children).length;o=0;)this.up();return this.onEnd()}openCurrent(){if(this.currentNode)return this.currentNode.children=!0,this.openNode(this.currentNode)}openNode(e){var t,i,o,a;if(!e.isOpen){if(this.root||0!==this.currentLevel||e.type!==r.Element||(this.root=e),i="",e.type===r.Element){for(o in this.writerOptions.state=n.OpenTag,i=this.writer.indent(e,this.writerOptions,this.currentLevel)+"<"+e.name,a=e.attribs)T.call(a,o)&&(t=a[o],i+=this.writer.attribute(t,this.writerOptions,this.currentLevel));i+=(e.children?">":"/>")+this.writer.endline(e,this.writerOptions,this.currentLevel),this.writerOptions.state=n.InsideTag}else this.writerOptions.state=n.OpenTag,i=this.writer.indent(e,this.writerOptions,this.currentLevel)+""),i+=this.writer.endline(e,this.writerOptions,this.currentLevel);return this.onData(i,this.currentLevel),e.isOpen=!0}}closeNode(e){var t;if(!e.isClosed)return t="",this.writerOptions.state=n.CloseTag,t=e.type===r.Element?this.writer.indent(e,this.writerOptions,this.currentLevel)+""+this.writer.endline(e,this.writerOptions,this.currentLevel):this.writer.indent(e,this.writerOptions,this.currentLevel)+"]>"+this.writer.endline(e,this.writerOptions,this.currentLevel),this.writerOptions.state=n.None,this.onData(t,this.currentLevel),e.isClosed=!0}onData(e,t){return this.documentStarted=!0,this.onDataCallback(e,t+1)}onEnd(){return this.documentCompleted=!0,this.onEndCallback()}debugInfo(e){return null==e?"":"node: <"+e+">"}ele(){return this.element(...arguments)}nod(e,t,r){return this.node(e,t,r)}txt(e){return this.text(e)}dat(e){return this.cdata(e)}com(e){return this.comment(e)}ins(e,t){return this.instruction(e,t)}dec(e,t,r){return this.declaration(e,t,r)}dtd(e,t,r){return this.doctype(e,t,r)}e(e,t,r){return this.element(e,t,r)}n(e,t,r){return this.node(e,t,r)}t(e){return this.text(e)}d(e){return this.cdata(e)}c(e){return this.comment(e)}r(e){return this.raw(e)}i(e,t){return this.instruction(e,t)}att(){return this.currentNode&&this.currentNode.type===r.DocType?this.attList(...arguments):this.attribute(...arguments)}a(){return this.currentNode&&this.currentNode.type===r.DocType?this.attList(...arguments):this.attribute(...arguments)}ent(e,t){return this.entity(e,t)}pent(e,t){return this.pEntity(e,t)}not(e,t){return this.notation(e,t)}}}).call(this)},{"./NodeType":124,"./Utility":125,"./WriterState":126,"./XMLAttribute":127,"./XMLCData":128,"./XMLComment":130,"./XMLDTDAttList":135,"./XMLDTDElement":136,"./XMLDTDEntity":137,"./XMLDTDNotation":138,"./XMLDeclaration":139,"./XMLDocType":140,"./XMLDocument":141,"./XMLElement":144,"./XMLProcessingInstruction":148,"./XMLRaw":149,"./XMLStringWriter":151,"./XMLStringifier":152,"./XMLText":153}],143:[function(e,t,r){(function(){var r,n;n=e("./XMLNode"),r=e("./NodeType"),t.exports=class extends n{constructor(e){super(e),this.type=r.Dummy}clone(){return Object.create(this)}toString(e){return""}}}).call(this)},{"./NodeType":124,"./XMLNode":146}],144:[function(e,t,r){(function(){var r,n,i,o,a,s,u,l={}.hasOwnProperty;({isObject:u,isFunction:s,getValue:a}=e("./Utility")),o=e("./XMLNode"),r=e("./NodeType"),n=e("./XMLAttribute"),i=e("./XMLNamedNodeMap"),t.exports=function(){class e extends o{constructor(e,t,n){var i,o,a,s;if(super(e),null==t)throw new Error("Missing element name. "+this.debugInfo());if(this.name=this.stringify.name(t),this.type=r.Element,this.attribs={},this.schemaTypeInfo=null,null!=n&&this.attribute(n),e.type===r.Document&&(this.isRoot=!0,this.documentObject=e,e.rootObject=this,e.children))for(o=0,a=(s=e.children).length;o=n;t=0<=n?++r:--r)if(!this.attribs[t].isEqualNode(e.attribs[t]))return!1;return!0}}return Object.defineProperty(e.prototype,"tagName",{get:function(){return this.name}}),Object.defineProperty(e.prototype,"namespaceURI",{get:function(){return""}}),Object.defineProperty(e.prototype,"prefix",{get:function(){return""}}),Object.defineProperty(e.prototype,"localName",{get:function(){return this.name}}),Object.defineProperty(e.prototype,"id",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(e.prototype,"className",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(e.prototype,"classList",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(e.prototype,"attributes",{get:function(){return this.attributeMap&&this.attributeMap.nodes||(this.attributeMap=new i(this.attribs)),this.attributeMap}}),e}.call(this)}).call(this)},{"./NodeType":124,"./Utility":125,"./XMLAttribute":127,"./XMLNamedNodeMap":145,"./XMLNode":146}],145:[function(e,t,r){(function(){t.exports=function(){class e{constructor(e){this.nodes=e}clone(){return this.nodes=null}getNamedItem(e){return this.nodes[e]}setNamedItem(e){var t;return t=this.nodes[e.nodeName],this.nodes[e.nodeName]=e,t||null}removeNamedItem(e){var t;return t=this.nodes[e],delete this.nodes[e],t||null}item(e){return this.nodes[Object.keys(this.nodes)[e]]||null}getNamedItemNS(e,t){throw new Error("This DOM method is not implemented.")}setNamedItemNS(e){throw new Error("This DOM method is not implemented.")}removeNamedItemNS(e,t){throw new Error("This DOM method is not implemented.")}}return Object.defineProperty(e.prototype,"length",{get:function(){return Object.keys(this.nodes).length||0}}),e}.call(this)}).call(this)},{}],146:[function(e,t,r){(function(){var r,n,i,o,a,s,u,l,f,c,h,d,p,g,y,b,m={}.hasOwnProperty,v=[].splice;({isObject:b,isFunction:y,isEmpty:g,getValue:p}=e("./Utility")),l=null,i=null,o=null,a=null,s=null,h=null,d=null,c=null,u=null,n=null,f=null,r=null,t.exports=function(){class t{constructor(t){this.parent=t,this.parent&&(this.options=this.parent.options,this.stringify=this.parent.stringify),this.value=null,this.children=[],this.baseURI=null,l||(l=e("./XMLElement"),i=e("./XMLCData"),o=e("./XMLComment"),a=e("./XMLDeclaration"),s=e("./XMLDocType"),h=e("./XMLRaw"),d=e("./XMLText"),c=e("./XMLProcessingInstruction"),u=e("./XMLDummy"),n=e("./NodeType"),f=e("./XMLNodeList"),e("./XMLNamedNodeMap"),r=e("./DocumentPosition"))}setParent(e){var t,r,n,i,o;for(this.parent=e,e&&(this.options=e.options,this.stringify=e.stringify),o=[],r=0,n=(i=this.children).length;r":(null!=(r=this.parent)?r.name:void 0)?"node: <"+e+">, parent: <"+this.parent.name+">":"node: <"+e+">":""}ele(e,t,r){return this.element(e,t,r)}nod(e,t,r){return this.node(e,t,r)}txt(e){return this.text(e)}dat(e){return this.cdata(e)}com(e){return this.comment(e)}ins(e,t){return this.instruction(e,t)}doc(){return this.document()}dec(e,t,r){return this.declaration(e,t,r)}e(e,t,r){return this.element(e,t,r)}n(e,t,r){return this.node(e,t,r)}t(e){return this.text(e)}d(e){return this.cdata(e)}c(e){return this.comment(e)}r(e){return this.raw(e)}i(e,t){return this.instruction(e,t)}u(){return this.up()}importXMLBuilder(e){return this.importDocument(e)}attribute(e,t){throw new Error("attribute() applies to element nodes only.")}att(e,t){return this.attribute(e,t)}a(e,t){return this.attribute(e,t)}removeAttribute(e){throw new Error("attribute() applies to element nodes only.")}replaceChild(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())}removeChild(e){throw new Error("This DOM method is not implemented."+this.debugInfo())}appendChild(e){throw new Error("This DOM method is not implemented."+this.debugInfo())}hasChildNodes(){return 0!==this.children.length}cloneNode(e){throw new Error("This DOM method is not implemented."+this.debugInfo())}normalize(){throw new Error("This DOM method is not implemented."+this.debugInfo())}isSupported(e,t){return!0}hasAttributes(){return 0!==this.attribs.length}compareDocumentPosition(e){var t;return this,this===e?0:this.document()!==e.document()?(t=r.Disconnected|r.ImplementationSpecific,Math.random()<.5?t|=r.Preceding:t|=r.Following,t):this.isAncestor(e)?r.Contains|r.Preceding:this.isDescendant(e)?r.Contains|r.Following:this.isPreceding(e)?r.Preceding:r.Following}isSameNode(e){throw new Error("This DOM method is not implemented."+this.debugInfo())}lookupPrefix(e){throw new Error("This DOM method is not implemented."+this.debugInfo())}isDefaultNamespace(e){throw new Error("This DOM method is not implemented."+this.debugInfo())}lookupNamespaceURI(e){throw new Error("This DOM method is not implemented."+this.debugInfo())}isEqualNode(e){var t,r,n;if(e.nodeType!==this.nodeType)return!1;if(e.children.length!==this.children.length)return!1;for(t=r=0,n=this.children.length-1;0<=n?r<=n:r>=n;t=0<=n?++r:--r)if(!this.children[t].isEqualNode(e.children[t]))return!1;return!0}getFeature(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())}setUserData(e,t,r){throw new Error("This DOM method is not implemented."+this.debugInfo())}getUserData(e){throw new Error("This DOM method is not implemented."+this.debugInfo())}contains(e){return!!e&&(e===this||this.isDescendant(e))}isDescendant(e){var t,r,n,i;for(r=0,n=(i=this.children).length;rr}treePosition(e){var t,r;return r=0,t=!1,this.foreachTreeNode(this.document(),function(n){if(r++,!t&&n===e)return t=!0}),t?r:-1}foreachTreeNode(e,t){var r,n,i,o,a;for(e||(e=this.document()),n=0,i=(o=e.children).length;n0){for(this.stream.write(" ["),this.stream.write(this.endline(e,t,r)),t.state=n.InsideTag,o=0,a=(s=e.children).length;o"),this.stream.write(this.endline(e,t,r)),t.state=n.None,this.closeNode(e,t,r)}element(e,t,i){var a,s,u,l,f,c,h,d,p,g,y,b,m,v;if(i||(i=0),this.openNode(e,t,i),t.state=n.OpenTag,p=this.indent(e,t,i)+"<"+e.name,t.pretty&&t.width>0)for(d in c=p.length,y=e.attribs)o.call(y,d)&&(a=y[d],c+(g=this.attribute(a,t,i)).length>t.width?(v=this.indent(e,t,i+1)+g,p+=this.endline(e,t,i)+v,c=v.length):(p+=v=" "+g,c+=v.length));else for(d in b=e.attribs)o.call(b,d)&&(a=b[d],p+=this.attribute(a,t,i));if(this.stream.write(p),l=0===(u=e.children.length)?null:e.children[0],0===u||e.children.every(function(e){return(e.type===r.Text||e.type===r.Raw||e.type===r.CData)&&""===e.value}))t.allowEmpty?(this.stream.write(">"),t.state=n.CloseTag,this.stream.write("")):(t.state=n.CloseTag,this.stream.write(t.spaceBeforeSlash+"/>"));else if(!t.pretty||1!==u||l.type!==r.Text&&l.type!==r.Raw&&l.type!==r.CData||null==l.value){for(this.stream.write(">"+this.endline(e,t,i)),t.state=n.InsideTag,f=0,h=(m=e.children).length;f")}else this.stream.write(">"),t.state=n.InsideTag,t.suppressPrettyCount++,!0,this.writeChildNode(l,t,i+1),t.suppressPrettyCount--,!1,t.state=n.CloseTag,this.stream.write("");return this.stream.write(this.endline(e,t,i)),t.state=n.None,this.closeNode(e,t,i)}processingInstruction(e,t,r){return this.stream.write(super.processingInstruction(e,t,r))}raw(e,t,r){return this.stream.write(super.raw(e,t,r))}text(e,t,r){return this.stream.write(super.text(e,t,r))}dtdAttList(e,t,r){return this.stream.write(super.dtdAttList(e,t,r))}dtdElement(e,t,r){return this.stream.write(super.dtdElement(e,t,r))}dtdEntity(e,t,r){return this.stream.write(super.dtdEntity(e,t,r))}dtdNotation(e,t,r){return this.stream.write(super.dtdNotation(e,t,r))}}}).call(this)},{"./NodeType":124,"./WriterState":126,"./XMLWriterBase":154}],151:[function(e,t,r){(function(){var r;r=e("./XMLWriterBase"),t.exports=class extends r{constructor(e){super(e)}document(e,t){var r,n,i,o,a;for(t=this.filterOptions(t),o="",n=0,i=(a=e.children).length;n","]]]]>"),this.assertLegalChar(e))}comment(e){if(this.options.noValidation)return e;if((e=""+e||"").match(/--/))throw new Error("Comment text cannot contain double-hypen: "+e);return this.assertLegalChar(e)}raw(e){return this.options.noValidation?e:""+e||""}attValue(e){return this.options.noValidation?e:this.assertLegalChar(this.attEscape(e=""+e||""))}insTarget(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")}insValue(e){if(this.options.noValidation)return e;if((e=""+e||"").match(/\?>/))throw new Error("Invalid processing instruction value: "+e);return this.assertLegalChar(e)}xmlVersion(e){if(this.options.noValidation)return e;if(!(e=""+e||"").match(/1\.[0-9]+/))throw new Error("Invalid version number: "+e);return e}xmlEncoding(e){if(this.options.noValidation)return e;if(!(e=""+e||"").match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/))throw new Error("Invalid encoding: "+e);return this.assertLegalChar(e)}xmlStandalone(e){return this.options.noValidation?e:e?"yes":"no"}dtdPubID(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")}dtdSysID(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")}dtdElementValue(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")}dtdAttType(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")}dtdAttDefault(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")}dtdEntityValue(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")}dtdNData(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")}assertLegalChar(e){var t,r;if(this.options.noValidation)return e;if("1.0"===this.options.version){if(t=/[\0-\x08\x0B\f\x0E-\x1F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,void 0!==this.options.invalidCharReplacement)e=e.replace(t,this.options.invalidCharReplacement);else if(r=e.match(t))throw new Error(`Invalid character in string: ${e} at index ${r.index}`)}else if("1.1"===this.options.version)if(t=/[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,void 0!==this.options.invalidCharReplacement)e=e.replace(t,this.options.invalidCharReplacement);else if(r=e.match(t))throw new Error(`Invalid character in string: ${e} at index ${r.index}`);return e}assertLegalName(e){var t;if(this.options.noValidation)return e;if(t=/^([:A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])([\x2D\.0-:A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])*$/,!(e=this.assertLegalChar(e)).match(t))throw new Error(`Invalid character in name: ${e}`);return e}textEscape(e){var t;return this.options.noValidation?e:(t=this.options.noDoubleEncoding?/(?!&(lt|gt|amp|apos|quot);)&/g:/&/g,e.replace(t,"&").replace(//g,">").replace(/\r/g," "))}attEscape(e){var t;return this.options.noValidation?e:(t=this.options.noDoubleEncoding?/(?!&(lt|gt|amp|apos|quot);)&/g:/&/g,e.replace(t,"&").replace(/0?new Array(n).join(t.indent):""}endline(e,t,r){return!t.pretty||t.suppressPrettyCount?"":t.newline}attribute(e,t,r){var n;return this.openAttribute(e,t,r),n=t.pretty&&t.width>0?e.name+'="'+e.value+'"':" "+e.name+'="'+e.value+'"',this.closeAttribute(e,t,r),n}cdata(e,t,r){var i;return this.openNode(e,t,r),t.state=n.OpenTag,i=this.indent(e,t,r)+""+this.endline(e,t,r),t.state=n.None,this.closeNode(e,t,r),i}comment(e,t,r){var i;return this.openNode(e,t,r),t.state=n.OpenTag,i=this.indent(e,t,r)+"\x3c!-- ",t.state=n.InsideTag,i+=e.value,t.state=n.CloseTag,i+=" --\x3e"+this.endline(e,t,r),t.state=n.None,this.closeNode(e,t,r),i}declaration(e,t,r){var i;return this.openNode(e,t,r),t.state=n.OpenTag,i=this.indent(e,t,r)+"",i+=this.endline(e,t,r),t.state=n.None,this.closeNode(e,t,r),i}docType(e,t,r){var i,o,a,s,u;if(r||(r=0),this.openNode(e,t,r),t.state=n.OpenTag,s=this.indent(e,t,r),s+="0){for(s+=" [",s+=this.endline(e,t,r),t.state=n.InsideTag,o=0,a=(u=e.children).length;o",s+=this.endline(e,t,r),t.state=n.None,this.closeNode(e,t,r),s}element(e,t,i){var a,s,u,l,f,c,h,d,p,g,y,b,m,v,w,_,E,x;if(i||(i=0),y=!1,this.openNode(e,t,i),t.state=n.OpenTag,b=this.indent(e,t,i)+"<"+e.name,t.pretty&&t.width>0)for(g in h=b.length,v=e.attribs)o.call(v,g)&&(a=v[g],h+(m=this.attribute(a,t,i)).length>t.width?(x=this.indent(e,t,i+1)+m,b+=this.endline(e,t,i)+x,h=x.length):(b+=x=" "+m,h+=x.length));else for(g in w=e.attribs)o.call(w,g)&&(a=w[g],b+=this.attribute(a,t,i));if(l=0===(u=e.children.length)?null:e.children[0],0===u||e.children.every(function(e){return(e.type===r.Text||e.type===r.Raw||e.type===r.CData)&&""===e.value}))t.allowEmpty?(b+=">",t.state=n.CloseTag,b+=""+this.endline(e,t,i)):(t.state=n.CloseTag,b+=t.spaceBeforeSlash+"/>"+this.endline(e,t,i));else if(!t.pretty||1!==u||l.type!==r.Text&&l.type!==r.Raw&&l.type!==r.CData||null==l.value){if(t.dontPrettyTextNodes)for(f=0,d=(_=e.children).length;f"+this.endline(e,t,i),t.state=n.InsideTag,c=0,p=(E=e.children).length;c",y&&t.suppressPrettyCount--,b+=this.endline(e,t,i),t.state=n.None}else b+=">",t.state=n.InsideTag,t.suppressPrettyCount++,y=!0,b+=this.writeChildNode(l,t,i+1),t.suppressPrettyCount--,y=!1,t.state=n.CloseTag,b+=""+this.endline(e,t,i);return this.closeNode(e,t,i),b}writeChildNode(e,t,n){switch(e.type){case r.CData:return this.cdata(e,t,n);case r.Comment:return this.comment(e,t,n);case r.Element:return this.element(e,t,n);case r.Raw:return this.raw(e,t,n);case r.Text:return this.text(e,t,n);case r.ProcessingInstruction:return this.processingInstruction(e,t,n);case r.Dummy:return"";case r.Declaration:return this.declaration(e,t,n);case r.DocType:return this.docType(e,t,n);case r.AttributeDeclaration:return this.dtdAttList(e,t,n);case r.ElementDeclaration:return this.dtdElement(e,t,n);case r.EntityDeclaration:return this.dtdEntity(e,t,n);case r.NotationDeclaration:return this.dtdNotation(e,t,n);default:throw new Error("Unknown XML node type: "+e.constructor.name)}}processingInstruction(e,t,r){var i;return this.openNode(e,t,r),t.state=n.OpenTag,i=this.indent(e,t,r)+"",i+=this.endline(e,t,r),t.state=n.None,this.closeNode(e,t,r),i}raw(e,t,r){var i;return this.openNode(e,t,r),t.state=n.OpenTag,i=this.indent(e,t,r),t.state=n.InsideTag,i+=e.value,t.state=n.CloseTag,i+=this.endline(e,t,r),t.state=n.None,this.closeNode(e,t,r),i}text(e,t,r){var i;return this.openNode(e,t,r),t.state=n.OpenTag,i=this.indent(e,t,r),t.state=n.InsideTag,i+=e.value,t.state=n.CloseTag,i+=this.endline(e,t,r),t.state=n.None,this.closeNode(e,t,r),i}dtdAttList(e,t,r){var i;return this.openNode(e,t,r),t.state=n.OpenTag,i=this.indent(e,t,r)+""+this.endline(e,t,r),t.state=n.None,this.closeNode(e,t,r),i}dtdElement(e,t,r){var i;return this.openNode(e,t,r),t.state=n.OpenTag,i=this.indent(e,t,r)+""+this.endline(e,t,r),t.state=n.None,this.closeNode(e,t,r),i}dtdEntity(e,t,r){var i;return this.openNode(e,t,r),t.state=n.OpenTag,i=this.indent(e,t,r)+""+this.endline(e,t,r),t.state=n.None,this.closeNode(e,t,r),i}dtdNotation(e,t,r){var i;return this.openNode(e,t,r),t.state=n.OpenTag,i=this.indent(e,t,r)+""+this.endline(e,t,r),t.state=n.None,this.closeNode(e,t,r),i}openNode(e,t,r){}closeNode(e,t,r){}openAttribute(e,t,r){}closeAttribute(e,t,r){}}}).call(this)},{"./NodeType":124,"./Utility":125,"./WriterState":126,"./XMLCData":128,"./XMLComment":130,"./XMLDTDAttList":135,"./XMLDTDElement":136,"./XMLDTDEntity":137,"./XMLDTDNotation":138,"./XMLDeclaration":139,"./XMLDocType":140,"./XMLDummy":143,"./XMLElement":144,"./XMLProcessingInstruction":148,"./XMLRaw":149,"./XMLText":153}],155:[function(e,t,r){(function(){var r,n,i,o,a,s,u,l,f;({assign:l,isFunction:f}=e("./Utility")),i=e("./XMLDOMImplementation"),o=e("./XMLDocument"),a=e("./XMLDocumentCB"),u=e("./XMLStringWriter"),s=e("./XMLStreamWriter"),r=e("./NodeType"),n=e("./WriterState"),t.exports.create=function(e,t,r,n){var i,a;if(null==e)throw new Error("Root element needs a name.");return n=l({},t,r,n),a=(i=new o(n)).element(e),n.headless||(i.declaration(n),null==n.pubID&&null==n.sysID||i.dtd(n)),a},t.exports.begin=function(e,t,r){return f(e)&&([t,r]=[e,t],e={}),t?new a(e,t,r):new o(e)},t.exports.stringWriter=function(e){return new u(e)},t.exports.streamWriter=function(e,t){return new s(e,t)},t.exports.implementation=new i,t.exports.nodeType=r,t.exports.writerState=n}).call(this)},{"./NodeType":124,"./Utility":125,"./WriterState":126,"./XMLDOMImplementation":133,"./XMLDocument":141,"./XMLDocumentCB":142,"./XMLStreamWriter":150,"./XMLStringWriter":151}]},{},[2])(2)}); +//# sourceMappingURL=./dist/app-info-parser.mini.js.map \ No newline at end of file diff --git a/dist/app-info-parser.min.js.map b/dist/app-info-parser.min.js.map new file mode 100644 index 0000000..4943afd --- /dev/null +++ b/dist/app-info-parser.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["./dist/app-info-parser.js"],"names":["f","exports","module","define","amd","window","global","self","this","AppInfoParser","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","_dereq_","_typeof","Symbol","iterator","constructor","prototype","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","_toPropertyKey","key","toPrimitive","TypeError","String","Number","_toPrimitive","_setPrototypeOf","setPrototypeOf","bind","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","arguments","apply","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","getPrototypeOf","Zip","_require","mapInfoResource","findApkIconPath","getBase64FromBuffer","ManifestName","ResourceName","ManifestXmlParser","ResourceFinder","ApkParser","_Zip","subClass","superClass","create","value","_inherits","Constructor","protoProps","staticProps","_super","file","_this","instance","_classCallCheck","_this2","Promise","resolve","reject","getEntries","then","buffers","resourceMap","apkInfo","_parseManifest","_parseResourceMap","iconPath","getEntry","iconBuffer","icon","console","warn","buffer","ignore","parse","processResourceTable","./resource-finder","./utils","./xml-parser/manifest","./zip","2","IpaParser","supportFileTypes","splits","name","split","fileType","toLowerCase","includes","parser","./apk","./ipa","3","_toConsumableArray","arr","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","minLen","toString","slice","test","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","parsePlist","parseBplist","parseBuffer","cgbiToPng","findIpaIconPath","isBrowser","PlistName","RegExp","ProvisionName","plistInfo","_parsePlist","provisionInfo","_parseProvision","mobileProvision","iconRegex","revert","err","btoa","fromCharCode","bufferType","info","content","firstIndex","indexOf","endIndex","bplist-parser","cgbi-to-png","plist","4","ByteBuffer","valueStringPool","typeStringPool","keyStringPool","package_id","responseMap","entryMap","readBytes","bb","uint8Array","Uint8Array","readUint8","wrap","resourceBuffer","bb2","type","readShort","headerSize","size","readInt","packageCount","limit","offset","realStringPoolCount","realPackageCount","pos","s","prependTo","LE","processStringPool","processPackage","remaining","id","typeStrings","keyStrings","lastPosition","bbTypeStrings","key_size","bbKeyStrings","processTypeSpec","typeSpecCount","processType","typeCount","readByte","entryCount","entriesStart","refKeys","entryIndices","entry_flag","entry_key","value_dataType","value_data","resource_id","idStr","keyStr","data","parseInt","entryArr","push","putIntoMap","entry_count","j","refK","values","toUpperCase","keys","u16len","stringCount","flags","stringsStart","isUTF_8","offsets","strings","u8len","readUint16","resId","bytebuffer","5","process","objectType","isObject","isPrimitive","iteratorObj","obj","iteratorArray","isResources","transKeyToMatchResourceMap","array","l","attrValue","resourceId","replace","application","splice","rulesMap","mdpi","hdpi","xhdpi","xxdpi","xxxhdpi","resultMap","maxDpiIcon","dpi","_loop","some","CFBundleIcons","CFBundlePrimaryIcon","CFBundleIconFiles","decodeNullUnicode","str","_process","6","NodeType","ChunkType","StringFlags","TypedValue","BinaryXmlParser","options","undefined","cursor","resources","document","parent","stack","debug","group","val","groupEnd","readUInt16LE","readInt32LE","readUInt32LE","readU8","readU16","dimension","unit","rawUnit","readU32","fraction","rawType","convertIntToFloat","typedValue","start","dataType","readS32","ref","concat","readHex24","readHex32","readDimension","readFraction","end","_type","diff","_int","buf","ArrayBuffer","Int32Array","Float32Array","encoding","stringLength","readLength8","byteLength","readLength16","header","startOffset","chunkType","chunkSize","styleCount","stylesStart","sorted","_i","_l","readString","count","Math","floor","node","namespaceURI","nodeType","nodeName","attributes","childNodes","nsRef","nameRef","attrCount","readXmlAttribute","attr","valueRef","readTypedValue","pop","cdata","dataRef","readChunkHeader","readStringPool","readResourceMap","readXmlNamespaceStart","readXmlNamespaceEnd","readXmlElementStart","readXmlElementEnd","readXmlCData","readNull","7","ManifestParser","xmlParser","element","collapsed","_Array$from","intentFilters","metaData","forEach","intentFilter","collapseAttributes","actions","categories","app","activities","activityAliases","launcherActivities","services","receivers","providers","usesLibraries","activity","parseIntents","isLauncherActivity","activityAlias","service","receiver","provider","grantUriPermissions","pathPermissions","filter","action","category","_this3","manifest","usesPermissions","usesPermissionsSDK23","permissions","permissionTrees","permissionGroups","instrumentation","usesSdk","usesConfiguration","usesFeatures","supportsScreens","compatibleScreens","supportsGlTextures","screen","parseApplication","./binary","8","Unzip","Blob","unzip","regexps","map","regex","getBuffer","isomorphic-unzip","path","9","freeze","object","oc","MIME_TYPE","HTML","isHTML","XML_APPLICATION","XML_TEXT","XML_XHTML_APPLICATION","XML_SVG_IMAGE","NAMESPACE","uri","SVG","XML","XMLNS","assign","source","hasOwnProperty","find","list","predicate","ac","item","10","conventions","dom","entities","sax","DOMImplementation","ParseError","XMLReader","normalizeLineEndings","input","DOMParser","locator","DOMHandler","position","lineNumber","columnNumber","_locator","systemId","_toString","chars","substr","java","lang","appendElement","hander","currentElement","appendChild","doc","parseFromString","mimeType","domBuilder","errorHandler","defaultNSMap","xmlns","entityMap","HTML_ENTITIES","XML_ENTITIES","setDocumentLocator","errorImpl","isCallback","Function","build","fn","msg","buildErrorHandler","xml","normalize","error","startDocument","createDocument","documentURI","startElement","localName","qName","attrs","el","createElementNS","getURI","getValue","getQName","createAttributeNS","getLocator","nodeValue","setAttributeNode","endElement","current","tagName","parentNode","startPrefixMapping","prefix","endPrefixMapping","processingInstruction","ins","createProcessingInstruction","ignorableWhitespace","ch","characters","charNode","createCDATASection","createTextNode","skippedEntity","endDocument","comment","comm","createComment","startCDATA","endCDATA","startDTD","publicId","impl","implementation","createDocumentType","dt","doctype","warning","fatalError","__DOMHandler","./conventions","./dom","./entities","./sax","11","notEmptyString","orderedSetReducer","toOrderedSet","splitOnASCIIWhitespace","reduce","copy","src","dest","_extends","Class","pt","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","NOT_FOUND_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","INUSE_ATTRIBUTE_ERR","NOT_SUPPORTED_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","DOMException","message","captureStackTrace","NodeList","LiveNodeList","refresh","_node","_refresh","_updateLiveList","inc","_inc","ownerDocument","ls","__set__","$$length","NamedNodeMap","_findNodeIndex","_addNamedNode","newAttr","oldAttr","ownerElement","_onRemoveAttribute","_nsMap","_onAddAttribute","_removeNamedNode","lastIndex","Node","_xmlEncoder","charCodeAt","_visitNode","callback","firstChild","nextSibling","Document","remove","_onUpdateChild","newChild","cs","child","_removeChild","previous","previousSibling","next","lastChild","isDocTypeNode","isElementNode","isTextNode","isElementInsertionPossible","parentChildNodes","docTypeNode","isElementReplacementPossible","assertPreInsertionValidity1to5","hasValidParentNodeType","hasInsertableNodeType","assertPreReplacementValidityInDocument","nodeChildNodes","nodeChildElements","parentElementChild","_insertBefore","_inDocumentAssertion","cp","removeChild","newFirst","newLast","pre","Element","Attr","CharacterData","Text","Comment","CDATASection","DocumentType","Notation","Entity","EntityReference","DocumentFragment","ProcessingInstruction","XMLSerializer","nodeSerializeToString","isHtml","nodeFilter","refNode","documentElement","lookupPrefix","visibleNamespaces","namespace","serializeToString","join","needNamespaceDefine","ns","addSerializedAttribute","qualifiedName","prefixedNodeName","defaultNS","ai","nsi","pubid","sysid","sub","internalSubset","index","getNamedItem","setNamedItem","_ownerElement","setNamedItemNS","getNamedItemNS","removeNamedItem","removeNamedItemNS","hasFeature","feature","version","root","insertBefore","refChild","replaceChild","oldChild","hasChildNodes","cloneNode","deep","node2","v","attrs2","appendData","isSupported","hasAttributes","lookupNamespaceURI","isDefaultNamespace","importNode","importedNode","getElementById","rtv","getAttribute","getElementsByClassName","classNames","classNamesSet","base","nodeClassNames","matches","nodeClassNamesSet","every","createElement","createDocumentFragment","createAttribute","specified","createEntityReference","pl","hasAttribute","getAttributeNode","setAttribute","removeAttribute","removeAttributeNode","_appendSingleChild","setAttributeNodeNS","removeAttributeNS","old","getAttributeNodeNS","hasAttributeNS","getAttributeNS","setAttributeNS","getElementsByTagName","getElementsByTagNameNS","substringData","substring","text","insertData","replaceData","deleteData","splitText","newText","newNode","get","getTextContent","set","12","amp","apos","gt","lt","quot","Aacute","aacute","Abreve","abreve","acd","acE","Acirc","acirc","acute","Acy","acy","AElig","aelig","af","Afr","afr","Agrave","agrave","alefsym","aleph","Alpha","alpha","Amacr","amacr","amalg","AMP","And","and","andand","andd","andslope","andv","ang","ange","angle","angmsd","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","Aogon","aogon","Aopf","aopf","ap","apacir","apE","ape","apid","ApplyFunction","approx","approxeq","Aring","aring","Ascr","ascr","Assign","ast","asymp","asympeq","Atilde","atilde","Auml","auml","awconint","awint","backcong","backepsilon","backprime","backsim","backsimeq","Backslash","Barv","barvee","Barwed","barwed","barwedge","bbrk","bbrktbrk","bcong","Bcy","bcy","bdquo","becaus","Because","because","bemptyv","bepsi","bernou","Bernoullis","Beta","beta","beth","between","Bfr","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","block","bne","bnequiv","bNot","bnot","Bopf","bopf","bot","bottom","bowtie","boxbox","boxDL","boxDl","boxdL","boxdl","boxDR","boxDr","boxdR","boxdr","boxH","boxh","boxHD","boxHd","boxhD","boxhd","boxHU","boxHu","boxhU","boxhu","boxminus","boxplus","boxtimes","boxUL","boxUl","boxuL","boxul","boxUR","boxUr","boxuR","boxur","boxV","boxv","boxVH","boxVh","boxvH","boxvh","boxVL","boxVl","boxvL","boxvl","boxVR","boxVr","boxvR","boxvr","bprime","Breve","breve","brvbar","Bscr","bscr","bsemi","bsim","bsime","bsol","bsolb","bsolhsub","bull","bullet","bump","bumpE","bumpe","Bumpeq","bumpeq","Cacute","cacute","Cap","cap","capand","capbrcup","capcap","capcup","capdot","CapitalDifferentialD","caps","caret","caron","Cayleys","ccaps","Ccaron","ccaron","Ccedil","ccedil","Ccirc","ccirc","Cconint","ccups","ccupssm","Cdot","cdot","cedil","Cedilla","cemptyv","cent","CenterDot","centerdot","Cfr","cfr","CHcy","chcy","check","checkmark","Chi","chi","cir","circ","circeq","circlearrowleft","circlearrowright","circledast","circledcirc","circleddash","CircleDot","circledR","circledS","CircleMinus","CirclePlus","CircleTimes","cirE","cire","cirfnint","cirmid","cirscir","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","clubs","clubsuit","Colon","colon","Colone","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","Congruent","Conint","conint","ContourIntegral","Copf","copf","coprod","Coproduct","COPY","copysr","CounterClockwiseContourIntegral","crarr","Cross","cross","Cscr","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","Cup","cup","cupbrcap","CupCap","cupcap","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","Dagger","dagger","daleth","Darr","dArr","darr","dash","Dashv","dashv","dbkarow","dblac","Dcaron","dcaron","Dcy","dcy","DD","dd","ddagger","ddarr","DDotrahd","ddotseq","deg","Del","Delta","delta","demptyv","dfisht","Dfr","dfr","dHar","dharl","dharr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","diam","Diamond","diamond","diamondsuit","diams","die","DifferentialD","digamma","disin","div","divide","divideontimes","divonx","DJcy","djcy","dlcorn","dlcrop","dollar","Dopf","dopf","Dot","dot","DotDot","doteq","doteqdot","DotEqual","dotminus","dotplus","dotsquare","doublebarwedge","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrow","Downarrow","downarrow","DownArrowBar","DownArrowUpArrow","DownBreve","downdownarrows","downharpoonleft","downharpoonright","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","DownTee","DownTeeArrow","drbkarow","drcorn","drcrop","Dscr","dscr","DScy","dscy","dsol","Dstrok","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","DZcy","dzcy","dzigrarr","Eacute","eacute","easter","Ecaron","ecaron","ecir","Ecirc","ecirc","ecolon","Ecy","ecy","eDDot","Edot","eDot","edot","ee","efDot","Efr","efr","eg","Egrave","egrave","egs","egsdot","elinters","ell","els","elsdot","Emacr","emacr","empty","emptyset","EmptySmallSquare","emptyv","EmptyVerySmallSquare","emsp","emsp13","emsp14","ENG","eng","ensp","Eogon","eogon","Eopf","eopf","epar","eparsl","eplus","epsi","Epsilon","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","Equal","equals","EqualTilde","equest","Equilibrium","equiv","equivDD","eqvparsl","erarr","erDot","Escr","escr","esdot","Esim","esim","Eta","eta","ETH","eth","Euml","euml","euro","excl","exist","Exists","expectation","ExponentialE","exponentiale","fallingdotseq","Fcy","fcy","female","ffilig","fflig","ffllig","Ffr","ffr","filig","FilledSmallSquare","FilledVerySmallSquare","fjlig","flat","fllig","fltns","fnof","Fopf","fopf","ForAll","forall","fork","forkv","Fouriertrf","fpartint","frac12","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","Fscr","fscr","gacute","Gamma","gamma","Gammad","gammad","gap","Gbreve","gbreve","Gcedil","Gcirc","gcirc","Gcy","gcy","Gdot","gdot","gE","ge","gEl","gel","geq","geqq","geqslant","ges","gescc","gesdot","gesdoto","gesdotol","gesl","gesles","Gfr","gfr","Gg","gg","ggg","gimel","GJcy","gjcy","gl","gla","glE","glj","gnap","gnapprox","gnE","gne","gneq","gneqq","gnsim","Gopf","gopf","grave","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","gscr","gsim","gsime","gsiml","Gt","GT","gtcc","gtcir","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","Hacek","hairsp","half","hamilt","HARDcy","hardcy","hArr","harr","harrcir","harrw","Hat","hbar","Hcirc","hcirc","hearts","heartsuit","hellip","hercon","Hfr","hfr","HilbertSpace","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","Hopf","hopf","horbar","HorizontalLine","Hscr","hscr","hslash","Hstrok","hstrok","HumpDownHump","HumpEqual","hybull","hyphen","Iacute","iacute","ic","Icirc","icirc","Icy","icy","Idot","IEcy","iecy","iexcl","iff","Ifr","ifr","Igrave","igrave","ii","iiiint","iiint","iinfin","iiota","IJlig","ijlig","Im","Imacr","imacr","image","ImaginaryI","imagline","imagpart","imath","imof","imped","Implies","in","incare","infin","infintie","inodot","Int","int","intcal","integers","Integral","intercal","Intersection","intlarhk","intprod","InvisibleComma","InvisibleTimes","IOcy","iocy","Iogon","iogon","Iopf","iopf","Iota","iota","iprod","iquest","Iscr","iscr","isin","isindot","isinE","isins","isinsv","isinv","it","Itilde","itilde","Iukcy","iukcy","Iuml","iuml","Jcirc","jcirc","Jcy","jcy","Jfr","jfr","jmath","Jopf","jopf","Jscr","jscr","Jsercy","jsercy","Jukcy","jukcy","Kappa","kappa","kappav","Kcedil","kcedil","Kcy","kcy","Kfr","kfr","kgreen","KHcy","khcy","KJcy","kjcy","Kopf","kopf","Kscr","kscr","lAarr","Lacute","lacute","laemptyv","lagran","Lambda","lambda","Lang","langd","langle","lap","Laplacetrf","laquo","Larr","lArr","larr","larrb","larrbfs","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","lat","lAtail","latail","late","lates","lBarr","lbarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","Lcaron","lcaron","Lcedil","lcedil","lceil","lcub","Lcy","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","lE","le","LeftAngleBracket","LeftArrow","Leftarrow","leftarrow","LeftArrowBar","LeftArrowRightArrow","leftarrowtail","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftFloor","leftharpoondown","leftharpoonup","leftleftarrows","LeftRightArrow","Leftrightarrow","leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","leftthreetimes","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","lEg","leg","leq","leqq","leqslant","les","lescc","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","LessEqualGreater","LessFullEqual","LessGreater","lessgtr","LessLess","lesssim","LessSlantEqual","LessTilde","lfisht","lfloor","Lfr","lfr","lg","lgE","lHar","lhard","lharu","lharul","lhblk","LJcy","ljcy","Ll","ll","llarr","llcorner","Lleftarrow","llhard","lltri","Lmidot","lmidot","lmoust","lmoustache","lnap","lnapprox","lnE","lne","lneq","lneqq","lnsim","loang","loarr","lobrk","LongLeftArrow","Longleftarrow","longleftarrow","LongLeftRightArrow","Longleftrightarrow","longleftrightarrow","longmapsto","LongRightArrow","Longrightarrow","longrightarrow","looparrowleft","looparrowright","lopar","Lopf","lopf","loplus","lotimes","lowast","lowbar","LowerLeftArrow","LowerRightArrow","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","Lscr","lscr","Lsh","lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","Lstrok","lstrok","Lt","LT","ltcc","ltcir","ltdot","lthree","ltimes","ltlarr","ltquest","ltri","ltrie","ltrif","ltrPar","lurdshar","luruhar","lvertneqq","lvnE","macr","male","malt","maltese","Map","mapsto","mapstodown","mapstoleft","mapstoup","marker","mcomma","Mcy","mcy","mdash","mDDot","measuredangle","MediumSpace","Mellintrf","Mfr","mfr","mho","micro","mid","midast","midcir","middot","minus","minusb","minusd","minusdu","MinusPlus","mlcp","mldr","mnplus","models","Mopf","mopf","mp","Mscr","mscr","mstpos","Mu","mu","multimap","mumap","nabla","Nacute","nacute","nang","nap","napE","napid","napos","napprox","natur","natural","naturals","nbsp","nbump","nbumpe","ncap","Ncaron","ncaron","Ncedil","ncedil","ncong","ncongdot","ncup","Ncy","ncy","ndash","ne","nearhk","neArr","nearr","nearrow","nedot","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","nequiv","nesear","nesim","NestedGreaterGreater","NestedLessLess","NewLine","nexist","nexists","Nfr","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","nGg","ngsim","nGt","ngt","ngtr","nGtv","nhArr","nharr","nhpar","ni","nis","nisd","niv","NJcy","njcy","nlArr","nlarr","nldr","nlE","nle","nLeftarrow","nleftarrow","nLeftrightarrow","nleftrightarrow","nleq","nleqq","nleqslant","nles","nless","nLl","nlsim","nLt","nlt","nltri","nltrie","nLtv","nmid","NoBreak","NonBreakingSpace","Nopf","nopf","Not","not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","notin","notindot","notinE","notinva","notinvb","notinvc","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","notni","notniva","notnivb","notnivc","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","npar","nparallel","nparsl","npart","npolint","npr","nprcue","npre","nprec","npreceq","nrArr","nrarr","nrarrc","nrarrw","nRightarrow","nrightarrow","nrtri","nrtrie","nsc","nsccue","nsce","Nscr","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","Ntilde","ntilde","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","Nu","nu","num","numero","numsp","nvap","nVDash","nVdash","nvDash","nvdash","nvge","nvgt","nvHarr","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwarhk","nwArr","nwarr","nwarrow","nwnear","Oacute","oacute","oast","ocir","Ocirc","ocirc","Ocy","ocy","odash","Odblac","odblac","odiv","odot","odsold","OElig","oelig","ofcir","Ofr","ofr","ogon","Ograve","ograve","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","Omacr","omacr","Omega","omega","Omicron","omicron","omid","ominus","Oopf","oopf","opar","OpenCurlyDoubleQuote","OpenCurlyQuote","operp","oplus","Or","or","orarr","ord","order","orderof","ordf","ordm","origof","oror","orslope","orv","oS","Oscr","oscr","Oslash","oslash","osol","Otilde","otilde","Otimes","otimes","otimesas","Ouml","ouml","ovbar","OverBar","OverBrace","OverBracket","OverParenthesis","par","para","parallel","parsim","parsl","part","PartialD","Pcy","pcy","percnt","period","permil","perp","pertenk","Pfr","pfr","Phi","phi","phiv","phmmat","phone","Pi","pi","pitchfork","piv","planck","planckh","plankv","plus","plusacir","plusb","pluscir","plusdo","plusdu","pluse","PlusMinus","plusmn","plussim","plustwo","pm","Poincareplane","pointint","Popf","popf","pound","Pr","pr","prap","prcue","prE","prec","precapprox","preccurlyeq","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","preceq","precnapprox","precneqq","precnsim","precsim","Prime","prime","primes","prnap","prnE","prnsim","prod","Product","profalar","profline","profsurf","prop","Proportion","Proportional","propto","prsim","prurel","Pscr","pscr","Psi","psi","puncsp","Qfr","qfr","qint","Qopf","qopf","qprime","Qscr","qscr","quaternions","quatint","quest","questeq","QUOT","rAarr","race","Racute","racute","radic","raemptyv","Rang","rang","rangd","range","rangle","raquo","Rarr","rArr","rarr","rarrap","rarrb","rarrbfs","rarrc","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","Rarrtl","rarrtl","rarrw","rAtail","ratail","ratio","rationals","RBarr","rBarr","rbarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","Rcaron","rcaron","Rcedil","rcedil","rceil","rcub","Rcy","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","Re","real","realine","realpart","reals","rect","REG","reg","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","rfisht","rfloor","Rfr","rfr","rHar","rhard","rharu","rharul","Rho","rho","rhov","RightAngleBracket","RightArrow","Rightarrow","rightarrow","RightArrowBar","RightArrowLeftArrow","rightarrowtail","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightFloor","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","RightTee","RightTeeArrow","RightTeeVector","rightthreetimes","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","ring","risingdotseq","rlarr","rlhar","rlm","rmoust","rmoustache","rnmid","roang","roarr","robrk","ropar","Ropf","ropf","roplus","rotimes","RoundImplies","rpar","rpargt","rppolint","rrarr","Rrightarrow","rsaquo","Rscr","rscr","Rsh","rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","RuleDelayed","ruluhar","rx","Sacute","sacute","sbquo","Sc","sc","scap","Scaron","scaron","sccue","scE","sce","Scedil","scedil","Scirc","scirc","scnap","scnE","scnsim","scpolint","scsim","Scy","scy","sdot","sdotb","sdote","searhk","seArr","searr","searrow","sect","semi","seswar","setminus","setmn","sext","Sfr","sfr","sfrown","sharp","SHCHcy","shchcy","SHcy","shcy","ShortDownArrow","ShortLeftArrow","shortmid","shortparallel","ShortRightArrow","ShortUpArrow","shy","Sigma","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","SmallCircle","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","SOFTcy","softcy","sol","solb","solbar","Sopf","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","Sqrt","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","squ","Square","square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","squarf","squf","srarr","Sscr","sscr","ssetmn","ssmile","sstarf","Star","star","starf","straightepsilon","straightphi","strns","Sub","subdot","subE","sube","subedot","submult","subnE","subne","subplus","subrarr","Subset","subset","subseteq","subseteqq","SubsetEqual","subsetneq","subsetneqq","subsim","subsub","subsup","succ","succapprox","succcurlyeq","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","succeq","succnapprox","succneqq","succnsim","succsim","SuchThat","Sum","sum","sung","Sup","sup","sup1","sup2","sup3","supdot","supdsub","supE","supe","supedot","Superset","SupersetEqual","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","Supset","supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swarhk","swArr","swarr","swarrow","swnwar","szlig","Tab","Tau","tau","tbrk","Tcaron","tcaron","Tcedil","tcedil","Tcy","tcy","tdot","telrec","Tfr","tfr","there4","Therefore","therefore","Theta","theta","thetasym","thetav","thickapprox","thicksim","ThickSpace","thinsp","ThinSpace","thkap","thksim","THORN","thorn","Tilde","tilde","TildeEqual","TildeFullEqual","TildeTilde","times","timesb","timesbar","timesd","tint","toea","top","topbot","topcir","Topf","topf","topfork","tosa","tprime","TRADE","trade","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","TripleDot","triplus","trisb","tritime","trpezium","Tscr","tscr","TScy","tscy","TSHcy","tshcy","Tstrok","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","Uacute","uacute","Uarr","uArr","uarr","Uarrocir","Ubrcy","ubrcy","Ubreve","ubreve","Ucirc","ucirc","Ucy","ucy","udarr","Udblac","udblac","udhar","ufisht","Ufr","ufr","Ugrave","ugrave","uHar","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","Umacr","umacr","uml","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","uogon","Uopf","uopf","UpArrow","Uparrow","uparrow","UpArrowBar","UpArrowDownArrow","UpDownArrow","Updownarrow","updownarrow","UpEquilibrium","upharpoonleft","upharpoonright","uplus","UpperLeftArrow","UpperRightArrow","Upsi","upsi","upsih","Upsilon","upsilon","UpTee","UpTeeArrow","upuparrows","urcorn","urcorner","urcrop","Uring","uring","urtri","Uscr","uscr","utdot","Utilde","utilde","utri","utrif","uuarr","Uuml","uuml","uwangle","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","vArr","varr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","Vbar","vBar","vBarv","Vcy","vcy","VDash","Vdash","vDash","vdash","Vdashl","Vee","vee","veebar","veeeq","vellip","Verbar","verbar","Vert","vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","vfr","vltri","vnsub","vnsup","Vopf","vopf","vprop","vrtri","Vscr","vscr","vsubnE","vsubne","vsupnE","vsupne","Vvdash","vzigzag","Wcirc","wcirc","wedbar","Wedge","wedge","wedgeq","weierp","Wfr","wfr","Wopf","wopf","wp","wr","wreath","Wscr","wscr","xcap","xcirc","xcup","xdtri","Xfr","xfr","xhArr","xharr","Xi","xi","xlArr","xlarr","xmap","xnis","xodot","Xopf","xopf","xoplus","xotime","xrArr","xrarr","Xscr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","Yacute","yacute","YAcy","yacy","Ycirc","ycirc","Ycy","ycy","yen","Yfr","yfr","YIcy","yicy","Yopf","yopf","Yscr","yscr","YUcy","yucy","Yuml","yuml","Zacute","zacute","Zcaron","zcaron","Zcy","zcy","Zdot","zdot","zeetrf","ZeroWidthSpace","Zeta","zeta","Zfr","zfr","ZHcy","zhcy","zigrarr","Zopf","zopf","Zscr","zscr","zwj","zwnj","13","./dom-parser","14","nameStartChar","nameChar","tagNamePattern","S_TAG","S_ATTR","S_ATTR_SPACE","S_EQ","S_ATTR_NOQUOT_VALUE","S_ATTR_END","S_TAG_SPACE","S_TAG_CLOSE","copyLocator","parseElementStartPart","currentNSMap","entityReplacer","addAttribute","qname","startIndex","attributeNames","addValue","attrName","charAt","setTagName","closed","match","localNSMap","nsp","nsPrefix","_copy","parseHtmlSpecialContent","elStartEnd","elEndStart","fixSelfClosed","closeMap","lastIndexOf","parseDCC","matchs","exec","lastMatch","endDTD","parseInstruction","ElementAttributes","defaultNSMapCopy","k","surrogate1","surrogate2","fixedFromCharCode","appendText","xt","m","lineEnd","linePattern","lineStart","parseStack","tagStart","config","endMatch","endIgnoreCaseMach","locator2","max","getLocalName","15","objectAssign","compare","b","x","y","min","isBuffer","Buffer","_isBuffer","util","hasOwn","pSlice","functionsHaveNames","pToString","isView","arrbuf","DataView","assert","ok","getName","func","isFunction","truncate","inspect","something","rawname","fail","actual","expected","operator","stackStartFunction","AssertionError","_deepEqual","strict","memos","isDate","getTime","isRegExp","multiline","ignoreCase","Float64Array","actualIndex","actualVisitedObjects","aIsArgs","isArguments","bIsArgs","ka","objectKeys","kb","sort","objEquiv","expectedException","isPrototypeOf","_throws","shouldThrow","_tryBlock","userProvidedMessage","isUnwantedException","isError","isUnexpectedException","generatedMessage","out","fn_name","idx","next_line","inherits","equal","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","object.assign/polyfill","util/","16","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","len2","encodeChunk","lookup","output","17","bigInt","BASE","LOG_BASE","MAX_INT","MAX_INT_ARR","smallToArray","DEFAULT_ALPHABET","supportsNativeBigInt","BigInt","Integer","radix","alphabet","caseSensitive","parseBase","parseValue","BigInteger","sign","isSmall","SmallInteger","NativeBigInt","isPrecise","arrayToSmall","trim","compareAbs","createArray","ceil","add","l_a","l_b","carry","addAny","addSmall","subtract","difference","a_l","b_l","borrow","subtractSmall","multiplyLong","product","a_i","multiplySmall","shiftLeft","multiplySmallAndArray","divModSmall","q","remainder","divisor","quotient","divModAny","negate","abs","comparison","quotientDigit","shift","divisorMostSignificantDigit","divMod1","guess","xlen","highx","highy","unshift","reverse","divMod2","qSign","mod","mSign","isBasicPrime","isUnit","isEven","isDivisibleBy","lesser","millerRabinTest","d","nPrev","prev","modPow","subtractAny","small","multiply","l1","l2","multiplyKaratsuba","bd","_multiplyBySmall","divmod","over","pow","_0","_1","_2","isNegative","exp","isZero","modInv","isPositive","isOdd","Infinity","compareTo","eq","notEquals","neq","greater","greaterOrEquals","lesserOrEquals","isPrime","bits","bitLength","logN","log","toJSNumber","isProbablePrime","iterations","rng","randBetween","lastT","lastR","zero","newT","one","newR","powersOfTwo","powers2Length","highestPower2","shift_isSmall","bitwise","xSign","ySign","xRem","yRem","xDigit","yDigit","xDivMod","yDivMod","shiftRight","remQuo","xor","LOBMASK_I","LOBMASK_BI","roughLOB","gcd","integerLogarithm","absBase","alphabetValues","digits","parseBaseFromArray","toBase","neg","left","digit","toBaseString","stringify","parseStringValue","decimalPlace","parseNumberValue","toArray","toJSON","minusOne","lcm","isInstance","usedRNG","random","low","restricted","fromArray","18","fs","maxObjectSize","maxObjectCount","EPOCH","UID","parseFile","fileNameOrBuffer","tryParseBuffer","ex","readFile","trailer","offsetSize","readUInt8","objectRefSize","numObjects","readUInt64BE","topObject","offsetTableOffset","offsetTable","offsetBytes","readUInt","parseObject","tableOffset","objType","objInfo","parseSimple","bufferToHexString","readInt32BE","parseInteger","parseUID","realBuffer","readFloatBE","readDoubleBE","parseReal","dateBuffer","Date","parseDate","dataoffset","int_type","intType","intInfo","intLength","parseData","parsePlistString","arrayoffset","objRef","parseArray","dictoffset","dict","keyRef","valRef","parseDictionary","isUtf16","enc","stroffset","plistString","swapBytes","readUInt32BE","big-integer","19","20","Zstream","zlib_deflate","zlib_inflate","constants","NONE","DEFLATE","INFLATE","GZIP","GUNZIP","DEFLATERAW","INFLATERAW","UNZIP","Zlib","mode","dictionary","flush","init_done","level","memLevel","strategy","windowBits","write_in_progress","pending_close","gzip_id_bytes_read","close","deflateEnd","strm","inflateEnd","write","in_off","in_len","out_off","out_len","_write","writeSync","async","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","alloc","avail_in","next_in","avail_out","next_out","_checkError","_afterSync","nextTick","_after","next_expected_header_byte","deflate","inflate","Z_NEED_DICT","inflateSetDictionary","Z_OK","Z_DATA_ERROR","Z_STREAM_END","reset","Z_BUF_ERROR","_error","onerror","init","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","_init","_setDictionary","params","_reset","deflateInit2","Z_DEFLATED","inflateInit2","deflateSetDictionary","deflateReset","inflateReset","pako/lib/zlib/constants","pako/lib/zlib/deflate.js","pako/lib/zlib/inflate.js","pako/lib/zlib/zstream","21","Transform","binding","kMaxLength","kRangeErrorMessage","Z_MIN_WINDOWBITS","Z_MAX_WINDOWBITS","Z_DEFAULT_WINDOWBITS","Z_MIN_CHUNK","Z_MAX_CHUNK","Z_DEFAULT_CHUNK","Z_MIN_MEMLEVEL","Z_MAX_MEMLEVEL","Z_DEFAULT_MEMLEVEL","Z_MIN_LEVEL","Z_MAX_LEVEL","Z_DEFAULT_LEVEL","Z_DEFAULT_COMPRESSION","bkeys","bk","bkey","codes","Z_ERRNO","Z_STREAM_ERROR","Z_MEM_ERROR","Z_VERSION_ERROR","ckeys","ck","ckey","zlibBuffer","engine","nread","flow","chunk","read","once","onEnd","RangeError","on","removeListener","zlibBufferSync","flushFlag","_finishFlushFlag","_processChunk","Deflate","opts","Inflate","Gzip","Gunzip","DeflateRaw","InflateRaw","isValidFlushFlag","flag","_opts","_chunkSize","finishFlush","_flushFlag","_handle","_hadError","errno","_close","emit","_buffer","allocUnsafe","_offset","_level","_strategy","emitCloseNT","createDeflate","createInflate","createDeflateRaw","createInflateRaw","createGzip","createGunzip","createUnzip","deflateSync","gzip","gzipSync","deflateRaw","deflateRawSync","unzipSync","inflateSync","gunzip","gunzipSync","inflateRaw","inflateRawSync","_flush","_transform","kind","ws","_writableState","ended","ending","needDrain","cb","last","availInBefore","availOutBefore","inOff","er","res","req","availInAfter","availOutAfter","have","newReq","./binding","stream","22","dup","23","base64","ieee754","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","arg","encodingOrOffset","string","isEncoding","fromString","fromArrayLike","byteOffset","fromArrayBuffer","checked","numberIsNaN","fromObject","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64Slice","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","foo","typedArraySupport","species","poolSize","fill","allocUnsafeSlow","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","toLocaleString","thisStart","thisEnd","thisCopy","targetCopy","isFinite","_arr","ret","toHex","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUIntLE","mul","readUIntBE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readFloatLE","readDoubleLE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","base64-js","24","bBE","_DeArray","_EnArray","_DeChar","_EnChar","_DeInt","rv","lsb","nsb","stop","bSigned","_EnInt","_DeString","_EnString","_DeNullString","_De754","nBits","mLen","eLen","eBias","eMax","NaN","_En754","isNaN","LN2","rt","_sPattern","_lenLut","A","B","h","H","S","I","L","_elLut","en","de","_UnpackSeries","fxn","_PackSeries","_zip","unpack","fmt","re","rk","packTo","pack","calcLength","format","25","factory","Long","capacity","DEFAULT_CAPACITY","DEFAULT_ENDIAN","DEFAULT_NOASSERT","EMPTY_BUFFER","view","markedOffset","VERSION","LITTLE_ENDIAN","BIG_ENDIAN","ByteBufferPrototype","__isByteBuffer__","stringFromCharCode","stringSource","stringDestination","ps","ieee754_read","isLE","nBytes","ieee754_write","accessor","allocate","isByteBuffer","bi","fromBase64","fromHex","fromBinary","fromUTF8","fromDebug","clone","writeBitSet","relative","bit","writeVarint32","writeByte","readBitSet","readVarint32","writeBytes","append","capacity0","resize","writeUint8","capacity1","writeInt16","capacity2","writeShort","readInt16","writeUint16","capacity3","writeUInt16","readUInt16","writeInt32","capacity4","writeInt","readInt32","writeUint32","capacity5","writeUInt32","readUint32","readUInt32","writeInt64","fromNumber","capacity6","high","writeLong","readInt64","readLong","writeUint64","capacity7","writeUInt64","readUint64","readUInt64","writeFloat32","capacity8","readFloat32","readFloat","writeFloat64","capacity9","readFloat64","readDouble","MAX_VARINT32_BYTES","calculateVarint32","zigZagEncode32","zigZagDecode32","capacity10","writeVarint32ZigZag","readVarint32ZigZag","MAX_VARINT64_BYTES","calculateVarint64","part0","toInt","part1","shiftRightUnsigned","part2","zigZagEncode64","unsigned","toSigned","toUnsigned","zigZagDecode64","ONE","writeVarint64","capacity11","writeVarint64ZigZag","readVarint64","fromBits","readVarint64ZigZag","writeCString","utfx","calculateUTF16asUTF8","capacity12","encodeUTF16toUTF8","readCString","sd","decodeUTF8toUTF16","writeIString","capacity13","readIString","readUTF8String","METRICS_BYTES","METRICS_CHARS","writeUTF8String","capacity14","writeString","calculateUTF8Chars","calculateUTF8Bytes","calculateString","metrics","decodeUTF8","UTF8toUTF16","writeVString","capacity15","readVString","capacity16","appendTo","clear","compact","begin","copyTo","targetOffset","sourceOffset","sourceLimit","targetRelative","ensureCapacity","flip","mark","BE","bigEndian","prepend","printDebug","toDebug","skip","toBuffer","forceCopy","toArrayBuffer","toUTF8","toBase64","toBinary","toColumns","lxiv","aout","ain","encode","decode","t1","t2","atob","charCode","columns","hex","asc","rs","ho","hm","hl","MAX_CODEPOINT","encodeUTF8","UTF16toUTF8","c1","c2","calculateCodePoint","calculateUTF8","long","26","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","./","get-intrinsic","27","setFunctionLength","$TypeError","$apply","$call","$reflectApply","$defineProperty","$max","originalFunction","applyBind","function-bind","set-function-length","28","bufferpack","crc","ignoreChunkTypes","revertCgBIBuffer","streamToBuffer","streamifier","zlib","createReadStream","width","height","uncompressed","newData","ref1","ref2","idatData","chunkCRC","idat_chunk","isIphoneCompressed","chunks","idatCgbiData","headerData","dataCrc","crc32","stream-to-buffer","29","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","30","default","./es6/crc1","31","./es6/crc16","32","./es6/crc16ccitt","33","./es6/crc16kermit","34","./es6/crc16modbus","35","./es6/crc16xmodem","36","./es6/crc24","37","./es6/crc32","38","./es6/crc8","39","./es6/crc81wire","40","./es6/crcjam","41","_create_buffer2","_interopRequireDefault","__esModule","crc1","accum","./create_buffer","./define_crc","42","_define_crc2","TABLE","crc16","byte","43","crc16ccitt","44","crc16kermit","45","crc16modbus","46","crc16xmodem","47","crc24","48","49","crc8","50","crc81wire","51","crcjam","52","53","model","calc","signed","54","./crc1","./crc16","./crc16_ccitt","./crc16_kermit","./crc16_modbus","./crc16_xmodem","./crc24","./crc32","./crc8","./crc8_1wire","./crcjam","55","hasPropertyDescriptors","$SyntaxError","gopd","property","nonEnumerable","nonWritable","nonConfigurable","loose","desc","has-property-descriptors","56","objectCreate","proto","F","context","EventEmitter","_events","_eventsCount","_maxListeners","hasDefineProperty","defaultMaxListeners","$getMaxListeners","that","_addListener","listener","events","existing","newListener","warned","w","emitter","onceWrapper","fired","wrapFn","args","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","setMaxListeners","getMaxListeners","handler","doError","isFn","listeners","emitNone","arg1","emitOne","arg2","emitTwo","arg3","emitThree","emitMany","addListener","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","ownKeys","57","toStr","concatty","bound","arrLike","slicy","boundLength","boundArgs","joiner","joiny","Empty","58","./implementation","59","SyntaxError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","callee","calleeThrows","gOPDthrows","hasSymbols","hasProto","getProto","needsEval","TypedArray","INTRINSICS","%AggregateError%","AggregateError","%Array%","%ArrayBuffer%","%ArrayIteratorPrototype%","%AsyncFromSyncIteratorPrototype%","%AsyncFunction%","%AsyncGenerator%","%AsyncGeneratorFunction%","%AsyncIteratorPrototype%","%Atomics%","Atomics","%BigInt%","%BigInt64Array%","BigInt64Array","%BigUint64Array%","BigUint64Array","%Boolean%","%DataView%","%Date%","%decodeURI%","decodeURI","%decodeURIComponent%","decodeURIComponent","%encodeURI%","encodeURI","%encodeURIComponent%","encodeURIComponent","%Error%","%eval%","eval","%EvalError%","EvalError","%Float32Array%","%Float64Array%","%FinalizationRegistry%","FinalizationRegistry","%Function%","%GeneratorFunction%","%Int8Array%","Int8Array","%Int16Array%","Int16Array","%Int32Array%","%isFinite%","%isNaN%","%IteratorPrototype%","%JSON%","JSON","%Map%","%MapIteratorPrototype%","%Math%","%Number%","%Object%","%parseFloat%","parseFloat","%parseInt%","%Promise%","%Proxy%","%RangeError%","%ReferenceError%","%Reflect%","%RegExp%","%Set%","Set","%SetIteratorPrototype%","%SharedArrayBuffer%","SharedArrayBuffer","%String%","%StringIteratorPrototype%","%Symbol%","%SyntaxError%","%ThrowTypeError%","%TypedArray%","%TypeError%","%Uint8Array%","%Uint8ClampedArray%","Uint8ClampedArray","%Uint16Array%","Uint16Array","%Uint32Array%","Uint32Array","%URIError%","URIError","%WeakMap%","WeakMap","%WeakRef%","WeakRef","%WeakSet%","WeakSet","errorProto","LEGACY_ALIASES","%ArrayBufferPrototype%","%ArrayPrototype%","%ArrayProto_entries%","%ArrayProto_forEach%","%ArrayProto_keys%","%ArrayProto_values%","%AsyncFunctionPrototype%","%AsyncGeneratorPrototype%","%BooleanPrototype%","%DataViewPrototype%","%DatePrototype%","%ErrorPrototype%","%EvalErrorPrototype%","%Float32ArrayPrototype%","%Float64ArrayPrototype%","%FunctionPrototype%","%Generator%","%GeneratorPrototype%","%Int8ArrayPrototype%","%Int16ArrayPrototype%","%Int32ArrayPrototype%","%JSONParse%","%JSONStringify%","%MapPrototype%","%NumberPrototype%","%ObjectPrototype%","%ObjProto_toString%","%ObjProto_valueOf%","%PromisePrototype%","%PromiseProto_then%","%Promise_all%","%Promise_reject%","%Promise_resolve%","%RangeErrorPrototype%","%ReferenceErrorPrototype%","%RegExpPrototype%","%SetPrototype%","%SharedArrayBufferPrototype%","%StringPrototype%","%SymbolPrototype%","%SyntaxErrorPrototype%","%TypedArrayPrototype%","%TypeErrorPrototype%","%Uint8ArrayPrototype%","%Uint8ClampedArrayPrototype%","%Uint16ArrayPrototype%","%Uint32ArrayPrototype%","%URIErrorPrototype%","%WeakMapPrototype%","%WeakSetPrototype%","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","doEval","gen","first","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","has-proto","has-symbols","hasown","60","61","hasArrayLengthDefineBug","62","$Object","63","origSymbol","hasSymbolSham","./shams","64","getOwnPropertySymbols","sym","symObj","getOwnPropertyNames","syms","propertyIsEnumerable","65","$hasOwn","66","67","ctor","superCtor","super_","TempCtor","68","isSlowBuffer","69","70","blob","reader","FileReader","addEventListener","onLoadEnd","removeEventListener","readAsArrayBuffer","71","72","appendABViewSupported","workerRawString","zWorker","URL","createObjectURL","ERR_BAD_FORMAT","ERR_CRC","ERR_ENCRYPTED","ERR_ZIP64","ERR_READ","ERR_WRITE","ERR_WRITE_DATA","ERR_READ_DATA","ERR_DUPLICATED_NAME","CHUNK_SIZE","TEXT_PLAIN","zip","Crc32","NOOP","getDataHelper","dataBuffer","dataArray","Reader","TextReader","blobReader","BlobReader","readUint8Array","Data64URIReader","dataURI","dataStart","dataEnd","onload","webkitSlice","mozSlice","msSlice","blobSlice","Writer","TextWriter","writeUint8Array","getData","readAsText","Data64URIWriter","contentType","pending","dataString","BlobWriter","launchWorkerProcess","worker","initialMessage","writer","onprogress","onend","onreaderror","onwriteerror","outputSize","chunkIndex","sn","onflush","onmessage","event","codecTime","crcTime","step","loaded","postMessage","launchProcess","crcType","crcInput","crcOutput","outputData","inputData","setTimeout","computeCrc32","useWebWorkers","codecClass","decodeASCII","extendedASCII","escape","getString","readCommonHeader","entry","centralDirectory","getUint16","bitFlag","compressionMethod","lastModDateRaw","getUint32","lastModDate","timeRaw","date","time","getDate","compressedSize","uncompressedSize","filenameLength","extraFieldLength","createZipReader","inflateSN","Entry","checkCrc32","getWriterData","dataCrc32","setUint32","testCrc32","dataOffset","_worker","Inflater","zipReader","eocdrCallback","EOCDR_MIN","EOCDR_MAX","doSeek","eocdrNotFoundCallback","seekEOCDR","dataView","datalength","fileslength","filename","entries","commentLength","directory","getUint8","terminate","createWorker","unescape","getBytes","createZipWriter","dontDeflate","files","filenames","deflateSN","zipWriter","writeFooter","compressedLength","footer","writeFile","Deflater","headerArray","setUint8","setUint16","getHours","getMinutes","getSeconds","getFullYear","getMonth","indexFilename","workerScripts","workerScriptsPath","Worker","scripts","ev","onerror_default","table","extendsOpts","createReader","createWriter","./z-worker","73","arrayLikeObj","isTypeOf","isReg","startWith","extend","destObject","isResouces","castLogger","doWhat","fromWhen","now","isDefined","isThisWhatYouNeed","rule","entryName","74","blobToBuffer","utils","destroy","whatYouNeed","isMultiple","multiple","matchedEntries","fileName","serialize","entryInfo","getEntryData","bufferArray","./lib/browser/blob-to-buffer","./lib/browser/zip","./lib/utils","75","isLong","__isLong__","INT_CACHE","UINT_CACHE","fromInt","cachedObj","cache","UZERO","ZERO","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","MIN_VALUE","MAX_VALUE","TWO_PWR_32_DBL","lowBits","highBits","pow_dbl","radixToPower","power","fromValue","TWO_PWR_16_DBL","TWO_PWR_24","UONE","NEG_ONE","LongPrototype","toNumber","radixLong","rem1","rem","remDiv","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","other","lessThan","lessThanOrEqual","lte","greaterThan","greaterThanOrEqual","gte","thisNeg","otherNeg","addend","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","subtrahend","multiplier","b00","shru","shr","shl","log2","approxRes","approxRem","modulo","numBits","toBytes","toBytesLE","toBytesBE","76","keysShim","has","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","./isArguments","77","origKeys","originalKeys","shim","78","79","callBound","toObject","$push","$propIsEnumerable","originalGetSymbols","source1","to","getSymbols","nextKey","propValue","call-bind/callBound","has-symbols/shams","object-keys","80","letters","lacksProperEnumerationOrder","preventExtensions","thrower","assignHasPendingExceptions","81","TYPED_OK","_has","sources","shrinkBuf","fnTyped","arraySet","src_offs","dest_offs","flattenChunks","fnUntyped","setTyped","Buf8","Buf16","Buf32","82","adler","s1","s2","83","Z_TREES","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_BINARY","Z_TEXT","Z_UNKNOWN","84","crcTable","makeTable","85","configuration_table","trees","adler32","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","L_CODES","LITERALS","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","errorCode","rank","flush_pending","pending_buf","pending_out","total_out","flush_block_only","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","head","total_in","insert","ins_h","hash_shift","hash_mask","deflate_fast","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","deflateResetKeep","data_type","status","last_flush","_tr_init","method","pending_buf_size","gzhead","gzindex","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","max_block_size","max_start","deflateInit","deflateSetHeader","old_flush","beg","hcrc","extra","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","tmpDict","dictLength","deflateInfo","../utils/common","./adler32","./messages","./trees","86","_in","_out","dmax","wsize","whave","wnext","s_window","hold","lcode","dcode","lmask","dmask","here","op","dist","from_source","lencode","distcode","lenbits","distbits","dolen","dodist","sane","87","inflate_fast","inflate_table","CODES","LENS","DISTS","HEAD","FLAGS","TIME","OS","EXLEN","EXTRA","NAME","COMMENT","HCRC","DICTID","DICT","TYPE","TYPEDO","STORED","COPY_","LENLENS","CODELENS","LEN_","LEN","LENEXT","DIST","DISTEXT","MATCH","LIT","CHECK","LENGTH","DONE","BAD","MEM","SYNC","ENOUGH_LENS","ENOUGH_DISTS","DEF_WBITS","zswap32","inflateResetKeep","total","havedict","lendyn","distdyn","back","inflateReset2","wbits","ncode","nlen","ndist","work","was","lenfix","distfix","virgin","fixedtables","updatewindow","inflateInit","put","here_bits","here_op","here_val","last_bits","last_op","last_val","hbuf","inf_leave","done","xflags","extra_len","inflateGetHeader","inflateInfo","./inffast","./inftrees","88","lbase","lext","dbase","dext","lens_index","table_index","incr","mask","curr","drop","used","huff","base_index","MAXBITS","offs","extra_index","89","0","-1","-2","-3","-4","-5","-6","90","STORED_BLOCK","STATIC_TREES","DYN_TREES","LENGTH_CODES","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","send_bits","send_code","tree","bi_reverse","gen_codes","next_code","init_block","bi_windup","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","stree","xbits","overflow","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","static_init_done","stored_len","copy_block","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","bi_flush","91","92","normalizeArray","allowAboveRoot","up","xs","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSlash","paths","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","93","parserFunctions","builderFunctions","./lib/build","./lib/parse","94","xmlbuilder","XMLHDR","XMLDTD","dec","standalone","dtd","att","walk_obj","next_child","tag_type","ele","raw","txt","pad","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","ISODateString","pretty","../../is-buffer/index.js","95","invariant","parsePlistXML","new_obj","new_arr","counter","isEmptyNode","shouldIgnoreNode","CDATA_NODE","@xmldom/xmldom","96","97","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","runClearTimeout","Item","noop","title","browser","env","argv","versions","off","chdir","umask","98","./lib/_stream_duplex.js","99","pna","Duplex","Readable","Writable","readable","allowHalfOpen","onEndNT","highWaterMark","_readableState","destroyed","_destroy","./_stream_readable","./_stream_writable","core-util-is","process-nextick-args","100","PassThrough","./_stream_transform","101","ReadableState","EElistenerCount","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","BufferList","destroyImpl","kProxyEvents","isDuplex","objectMode","readableObjectMode","hwm","readableHwm","readableHighWaterMark","defaultHwm","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","defaultEncoding","awaitDrain","readingMore","decoder","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","needMoreData","_undestroy","undestroy","isPaused","setEncoding","MAX_HWM","howMuchToRead","computeNewHighWaterMark","emitReadable_","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","nb","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","nOrig","doRead","pipe","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","ondata","cleanedUp","pipeOnDrain","increasedAwaitDrain","pause","resume","dests","paused","_fromList","./_stream_duplex","./internal/streams/BufferList","./internal/streams/destroy","./internal/streams/stream","isarray","safe-buffer","string_decoder/","102","_transformState","afterTransform","ts","transforming","writecb","writechunk","needTransform","writeencoding","transform","prefinish","err2","103","setImmediate","CorkedRequest","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","deprecate","realHasInstance","nop","writableObjectMode","writableHwm","writableHighWaterMark","finalCalled","finished","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","_","hasInstance","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","timers","util-deprecate","104","custom","105","emitErrorNT","readableDestroyed","writableDestroyed","106","107","copyProps","SafeBuffer","108","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","utf8CheckExtraBytes","utf8CheckIncomplete","109","./readable","110","./lib/_stream_passthrough.js","./lib/_stream_readable.js","./lib/_stream_transform.js","./lib/_stream_writable.js","111","112","113","hasDescriptors","gOPD","$floor","functionLengthIsConfigurable","functionLengthIsWritable","define-data-property","114","EE","_isStdio","didOnEnd","cleanup","readable-stream/duplex.js","readable-stream/passthrough.js","readable-stream/readable.js","readable-stream/transform.js","readable-stream/writable.js","115","stream-to","116","onData","117","MultiStream","_object","118","clearImmediate","immediateIds","nextImmediateId","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","process/browser.js","119","localStorage","trace","120","121","122","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","ctx","seen","stylize","stylizeNoColor","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","style","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","hash","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","cur","numLinesEst","reduceToSingleString","line","ar","NODE_DEBUG","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","boolean","null","regexp","months","origin","./support/isBuffer","123","Disconnected","Preceding","Following","Contains","ContainedBy","ImplementationSpecific","124","Attribute","CData","EntityDeclaration","DocType","NotationDeclaration","Declaration","Raw","AttributeDeclaration","ElementDeclaration","Dummy","125","isEmpty","isPlainObject","hasProp","126","None","OpenTag","InsideTag","CloseTag","127","XMLAttribute","[object Object]","debugInfo","attValue","isId","schemaTypeInfo","attribute","filterOptions","./NodeType","./XMLNode","128","XMLCharacterData","super","./XMLCharacterData","129","XMLNode","isEqualNode","130","131","XMLDOMErrorHandler","XMLDOMStringList","XMLDOMConfiguration","defaultParams","canonical-form","cdata-sections","comments","datatype-normalization","element-content-whitespace","error-handler","infoset","validate-if-schema","namespaces","namespace-declarations","normalize-characters","schema-location","schema-type","split-cdata-sections","validate","well-formed","./XMLDOMErrorHandler","./XMLDOMStringList","132","133","134","135","elementName","attributeName","attributeType","defaultValueType","defaultValue","dtdAttType","dtdAttDefault","dtdAttList","136","dtdElementValue","dtdElement","137","XMLDTDEntity","pe","pubID","sysID","internal","dtdPubID","dtdSysID","nData","dtdNData","dtdEntityValue","dtdEntity","./Utility","138","XMLDTDNotation","dtdNotation","139","xmlVersion","xmlEncoding","xmlStandalone","declaration","140","XMLDTDAttList","XMLDTDElement","XMLNamedNodeMap","XMLDocType","children","documentObject","docType","attList","entity","pEntity","notation","nodes","./XMLDTDAttList","./XMLDTDElement","./XMLDTDEntity","./XMLDTDNotation","./XMLNamedNodeMap","141","XMLDOMImplementation","XMLStringWriter","XMLStringifier","XMLDocument","domConfig","writerOptions","tagname","elementId","eventInterface","whatToShow","rootObject","./XMLDOMConfiguration","./XMLDOMImplementation","./XMLStringWriter","./XMLStringifier","142","WriterState","XMLCData","XMLComment","XMLDeclaration","XMLElement","XMLProcessingInstruction","XMLRaw","XMLText","onDataCallback","onEndCallback","currentNode","currentLevel","openTags","documentStarted","documentCompleted","attName","attribs","dummy","instruction","createChildNode","openCurrent","oldValidationFlag","noValidation","keepNullAttributes","insTarget","insValue","rootNodeName","closeNode","openNode","isOpen","indent","endline","isClosed","./WriterState","./XMLAttribute","./XMLCData","./XMLComment","./XMLDeclaration","./XMLDocType","./XMLDocument","./XMLElement","./XMLProcessingInstruction","./XMLRaw","./XMLText","143","144","isRoot","clonedSelf","clonedChild","idAttr","attributeMap","145","oldNode","146","DocumentPosition","XMLDummy","XMLNodeList","parent1","baseURI","results","setParent","childNode","len1","ignoreDecorators","convertAttKey","separateArrayItems","keepNullNodes","convertTextKey","convertCDataKey","convertCommentKey","convertRawKey","convertPIKey","removed","xmldec","clonedRoot","importDocument","isAncestor","isDescendant","isPreceding","nodePos","thisPos","treePosition","foreachTreeNode","childNodeList","textContent","./DocumentPosition","./XMLDummy","./XMLNodeList","147","148","149","150","XMLWriterBase","isLastRootNode","writeChildNode","spaceBeforeSlash","childNodeCount","firstChildNode","ratt","rline","allowEmpty","suppressPrettyCount","./XMLWriterBase","151","newline","152","assertLegalChar","assertLegalName","textEscape","attEscape","invalidCharReplacement","ampregex","noDoubleEncoding","153","154","filteredOptions","ref3","ref4","ref5","ref6","ref7","dontPrettyTextNodes","dontprettytextnodes","spacebeforeslash","user","indentLevel","openAttribute","closeAttribute","prettySuppressed","155","XMLDocumentCB","XMLStreamWriter","headless","stringWriter","streamWriter","writerState","./XMLDocumentCB","./XMLStreamWriter"],"mappings":"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Q,MAAQ,MAAQ,KAAQ,IAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,IAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,IAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAA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EAAM,EAAM,GAAM,EAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,EAAM,EAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,EAAM,EAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,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"} \ No newline at end of file