{ "version": 3, "sources": ["../../../node_modules/contentstream/node_modules/isarray/index.js", "../../../node_modules/core-util-is/lib/util.js", "../../../node_modules/inherits/inherits_browser.js", "../../../node_modules/inherits/inherits.js", "../../../node_modules/string_decoder/index.js", "../../../node_modules/contentstream/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/contentstream/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/contentstream/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/contentstream/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/contentstream/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/contentstream/node_modules/readable-stream/readable.js", "../../../node_modules/contentstream/index.js", "../../../node_modules/gif-encoder/node_modules/isarray/index.js", "../../../node_modules/gif-encoder/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/gif-encoder/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/gif-encoder/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/gif-encoder/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/gif-encoder/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/gif-encoder/node_modules/readable-stream/readable.js", "../../../node_modules/gif-encoder/lib/TypedNeuQuant.js", "../../../node_modules/gif-encoder/lib/LZWEncoder.js", "../../../node_modules/gif-encoder/lib/GIFEncoder.js", "../../../node_modules/jpeg-js/lib/encoder.js", "../../../node_modules/jpeg-js/lib/decoder.js", "../../../node_modules/jpeg-js/index.js", "../../../node_modules/pngjs-nozlib/lib/chunkstream.js", "../../../node_modules/pngjs-nozlib/lib/interlace.js", "../../../node_modules/pngjs-nozlib/lib/paeth-predictor.js", "../../../node_modules/pngjs-nozlib/lib/filter-parse.js", "../../../node_modules/pngjs-nozlib/lib/filter-parse-async.js", "../../../node_modules/pngjs-nozlib/lib/constants.js", "../../../node_modules/pngjs-nozlib/lib/crc.js", "../../../node_modules/pngjs-nozlib/lib/parser.js", "../../../node_modules/pngjs-nozlib/lib/bitmapper.js", "../../../node_modules/pngjs-nozlib/lib/format-normaliser.js", "../../../node_modules/pngjs-nozlib/lib/parser-async.js", "../../../node_modules/pngjs-nozlib/lib/bitpacker.js", "../../../node_modules/pngjs-nozlib/lib/filter-pack.js", "../../../node_modules/pngjs-nozlib/lib/packer.js", "../../../node_modules/pngjs-nozlib/lib/packer-async.js", "../../../node_modules/pngjs-nozlib/lib/sync-reader.js", "../../../node_modules/pngjs-nozlib/lib/filter-parse-sync.js", "../../../node_modules/pngjs-nozlib/lib/parser-sync.js", "../../../node_modules/pngjs-nozlib/lib/packer-sync.js", "../../../node_modules/pngjs-nozlib/lib/png-sync.js", "../../../node_modules/pngjs-nozlib/lib/png.js", "../../../node_modules/iota-array/iota.js", "../../../node_modules/is-buffer/index.js", "../../../node_modules/ndarray/ndarray.js", "../../../node_modules/uniq/uniq.js", "../../../node_modules/cwise-compiler/lib/compile.js", "../../../node_modules/cwise-compiler/lib/thunk.js", "../../../node_modules/cwise-compiler/compiler.js", "../../../node_modules/ndarray-ops/ndarray-ops.js", "../../../node_modules/through/index.js", "../../../node_modules/save-pixels/save-pixels.js", "../../../node_modules/pngjs/lib/chunkstream.js", "../../../node_modules/pngjs/lib/interlace.js", "../../../node_modules/pngjs/lib/paeth-predictor.js", "../../../node_modules/pngjs/lib/filter-parse.js", "../../../node_modules/pngjs/lib/filter-parse-async.js", "../../../node_modules/pngjs/lib/constants.js", "../../../node_modules/pngjs/lib/crc.js", "../../../node_modules/pngjs/lib/parser.js", "../../../node_modules/pngjs/lib/bitmapper.js", "../../../node_modules/pngjs/lib/format-normaliser.js", "../../../node_modules/pngjs/lib/parser-async.js", "../../../node_modules/pngjs/lib/bitpacker.js", "../../../node_modules/pngjs/lib/filter-pack.js", "../../../node_modules/pngjs/lib/packer.js", "../../../node_modules/pngjs/lib/packer-async.js", "../../../node_modules/pngjs/lib/sync-inflate.js", "../../../node_modules/pngjs/lib/sync-reader.js", "../../../node_modules/pngjs/lib/filter-parse-sync.js", "../../../node_modules/pngjs/lib/parser-sync.js", "../../../node_modules/pngjs/lib/packer-sync.js", "../../../node_modules/pngjs/lib/png-sync.js", "../../../node_modules/pngjs/lib/png.js", "../../../node_modules/ndarray-pack/doConvert.js", "../../../node_modules/ndarray-pack/convert.js", "../../../node_modules/omggif/omggif.js", "../../../node_modules/node-bitmap/lib/bitmap.js", "../../../node_modules/node-bitmap/index.js", "../../../node_modules/extend/index.js", "../../../node_modules/psl/data/rules.json", "../../../node_modules/psl/index.js", "../../../node_modules/tough-cookie/lib/pubsuffix-psl.js", "../../../node_modules/tough-cookie/lib/store.js", "../../../node_modules/tough-cookie/lib/permuteDomain.js", "../../../node_modules/tough-cookie/lib/pathMatch.js", "../../../node_modules/tough-cookie/lib/memstore.js", "../../../node_modules/tough-cookie/lib/version.js", "../../../node_modules/tough-cookie/lib/cookie.js", "../../../node_modules/request/lib/cookies.js", "../../../node_modules/json-stringify-safe/stringify.js", "../../../node_modules/safe-buffer/index.js", "../../../node_modules/request/lib/helpers.js", "../../../node_modules/aws-sign2/index.js", "../../../node_modules/aws4/lru.js", "../../../node_modules/aws4/aws4.js", "../../../node_modules/assert-plus/assert.js", "../../../node_modules/safer-buffer/safer.js", "../../../node_modules/sshpk/lib/algs.js", "../../../node_modules/sshpk/lib/errors.js", "../../../node_modules/asn1/lib/ber/errors.js", "../../../node_modules/asn1/lib/ber/types.js", "../../../node_modules/asn1/lib/ber/reader.js", "../../../node_modules/asn1/lib/ber/writer.js", "../../../node_modules/asn1/lib/ber/index.js", "../../../node_modules/asn1/lib/index.js", "../../../node_modules/jsbn/index.js", "../../../node_modules/ecc-jsbn/lib/ec.js", "../../../node_modules/tweetnacl/nacl-fast.js", "../../../node_modules/sshpk/lib/utils.js", "../../../node_modules/sshpk/lib/ssh-buffer.js", "../../../node_modules/sshpk/lib/signature.js", "../../../node_modules/ecc-jsbn/lib/sec.js", "../../../node_modules/ecc-jsbn/index.js", "../../../node_modules/sshpk/lib/dhe.js", "../../../node_modules/sshpk/lib/ed-compat.js", "../../../node_modules/sshpk/lib/formats/pkcs8.js", "../../../node_modules/sshpk/lib/formats/pkcs1.js", "../../../node_modules/sshpk/lib/formats/rfc4253.js", "../../../node_modules/bcrypt-pbkdf/index.js", "../../../node_modules/sshpk/lib/formats/ssh-private.js", "../../../node_modules/sshpk/lib/formats/pem.js", "../../../node_modules/sshpk/lib/formats/ssh.js", "../../../node_modules/sshpk/lib/formats/dnssec.js", "../../../node_modules/sshpk/lib/formats/putty.js", "../../../node_modules/sshpk/lib/formats/auto.js", "../../../node_modules/sshpk/lib/private-key.js", "../../../node_modules/sshpk/lib/identity.js", "../../../node_modules/sshpk/lib/formats/openssh-cert.js", "../../../node_modules/sshpk/lib/formats/x509.js", "../../../node_modules/sshpk/lib/formats/x509-pem.js", "../../../node_modules/sshpk/lib/certificate.js", "../../../node_modules/sshpk/lib/fingerprint.js", "../../../node_modules/sshpk/lib/key.js", "../../../node_modules/sshpk/lib/index.js", "../../../node_modules/http-signature/lib/utils.js", "../../../node_modules/http-signature/lib/parser.js", "../../../node_modules/extsprintf/lib/extsprintf.js", "../../../node_modules/verror/node_modules/extsprintf/lib/extsprintf.js", "../../../node_modules/verror/node_modules/core-util-is/lib/util.js", "../../../node_modules/verror/lib/verror.js", "../../../node_modules/json-schema/lib/validate.js", "../../../node_modules/jsprim/lib/jsprim.js", "../../../node_modules/http-signature/lib/signer.js", "../../../node_modules/http-signature/lib/verify.js", "../../../node_modules/http-signature/lib/index.js", "../../../node_modules/mime-db/db.json", "../../../node_modules/mime-db/index.js", "../../../node_modules/mime-types/index.js", "../../../node_modules/caseless/index.js", "../../../node_modules/forever-agent/index.js", "../../../node_modules/delayed-stream/lib/delayed_stream.js", "../../../node_modules/combined-stream/lib/combined_stream.js", "../../../node_modules/asynckit/lib/defer.js", "../../../node_modules/asynckit/lib/async.js", "../../../node_modules/asynckit/lib/abort.js", "../../../node_modules/asynckit/lib/iterate.js", "../../../node_modules/asynckit/lib/state.js", "../../../node_modules/asynckit/lib/terminator.js", "../../../node_modules/asynckit/parallel.js", "../../../node_modules/asynckit/serialOrdered.js", "../../../node_modules/asynckit/serial.js", "../../../node_modules/asynckit/index.js", "../../../node_modules/form-data/lib/populate.js", "../../../node_modules/form-data/lib/form_data.js", "../../../node_modules/isstream/isstream.js", "../../../node_modules/is-typedarray/index.js", "../../../node_modules/request/lib/getProxyFromURI.js", "../../../node_modules/request/node_modules/qs/lib/utils.js", "../../../node_modules/request/node_modules/qs/lib/formats.js", "../../../node_modules/request/node_modules/qs/lib/stringify.js", "../../../node_modules/request/node_modules/qs/lib/parse.js", "../../../node_modules/request/node_modules/qs/lib/index.js", "../../../node_modules/request/lib/querystring.js", "../../../node_modules/uri-js/src/index.ts", "../../../node_modules/uri-js/src/schemes/urn-uuid.ts", "../../../node_modules/uri-js/src/schemes/urn.ts", "../../../node_modules/uri-js/src/schemes/mailto.ts", "../../../node_modules/uri-js/src/schemes/wss.ts", "../../../node_modules/uri-js/src/schemes/ws.ts", "../../../node_modules/uri-js/src/schemes/https.ts", "../../../node_modules/uri-js/src/schemes/http.ts", "../../../node_modules/uri-js/src/uri.ts", "../../../node_modules/uri-js/node_modules/punycode/punycode.es6.js", "../../../node_modules/uri-js/src/regexps-iri.ts", "../../../node_modules/uri-js/src/regexps-uri.ts", "../../../node_modules/uri-js/src/util.ts", "../../../node_modules/fast-deep-equal/index.js", "../../../node_modules/har-validator/node_modules/ajv/lib/compile/ucs2length.js", "../../../node_modules/har-validator/node_modules/ajv/lib/compile/util.js", "../../../node_modules/har-validator/node_modules/ajv/lib/compile/schema_obj.js", "../../../node_modules/json-schema-traverse/index.js", "../../../node_modules/har-validator/node_modules/ajv/lib/compile/resolve.js", "../../../node_modules/har-validator/node_modules/ajv/lib/compile/error_classes.js", "../../../node_modules/fast-json-stable-stringify/index.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/validate.js", "../../../node_modules/har-validator/node_modules/ajv/lib/compile/index.js", "../../../node_modules/har-validator/node_modules/ajv/lib/cache.js", "../../../node_modules/har-validator/node_modules/ajv/lib/compile/formats.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/ref.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/allOf.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/anyOf.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/comment.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/const.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/contains.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/dependencies.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/enum.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/format.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/if.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/items.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/_limit.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitItems.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitLength.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/_limitProperties.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/multipleOf.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/not.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/oneOf.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/pattern.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/properties.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/propertyNames.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/required.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/uniqueItems.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/index.js", "../../../node_modules/har-validator/node_modules/ajv/lib/compile/rules.js", "../../../node_modules/har-validator/node_modules/ajv/lib/data.js", "../../../node_modules/har-validator/node_modules/ajv/lib/compile/async.js", "../../../node_modules/har-validator/node_modules/ajv/lib/dotjs/custom.js", "../../../node_modules/har-validator/node_modules/ajv/lib/refs/json-schema-draft-07.json", "../../../node_modules/har-validator/node_modules/ajv/lib/definition_schema.js", "../../../node_modules/har-validator/node_modules/ajv/lib/keyword.js", "../../../node_modules/har-validator/node_modules/ajv/lib/refs/data.json", "../../../node_modules/har-validator/node_modules/ajv/lib/ajv.js", "../../../node_modules/har-validator/lib/error.js", "../../../node_modules/har-schema/lib/afterRequest.json", "../../../node_modules/har-schema/lib/beforeRequest.json", "../../../node_modules/har-schema/lib/browser.json", "../../../node_modules/har-schema/lib/cache.json", "../../../node_modules/har-schema/lib/content.json", "../../../node_modules/har-schema/lib/cookie.json", "../../../node_modules/har-schema/lib/creator.json", "../../../node_modules/har-schema/lib/entry.json", "../../../node_modules/har-schema/lib/har.json", "../../../node_modules/har-schema/lib/header.json", "../../../node_modules/har-schema/lib/log.json", "../../../node_modules/har-schema/lib/page.json", "../../../node_modules/har-schema/lib/pageTimings.json", "../../../node_modules/har-schema/lib/postData.json", "../../../node_modules/har-schema/lib/query.json", "../../../node_modules/har-schema/lib/request.json", "../../../node_modules/har-schema/lib/response.json", "../../../node_modules/har-schema/lib/timings.json", "../../../node_modules/har-schema/lib/index.js", "../../../node_modules/har-validator/node_modules/ajv/lib/refs/json-schema-draft-06.json", "../../../node_modules/har-validator/lib/promise.js", "../../../node_modules/request/lib/har.js", "../../../node_modules/request/node_modules/uuid/lib/rng.js", "../../../node_modules/request/node_modules/uuid/lib/bytesToUuid.js", "../../../node_modules/request/node_modules/uuid/v4.js", "../../../node_modules/request/lib/auth.js", "../../../node_modules/oauth-sign/index.js", "../../../node_modules/request/lib/oauth.js", "../../../node_modules/request/lib/hawk.js", "../../../node_modules/request/lib/multipart.js", "../../../node_modules/request/lib/redirect.js", "../../../node_modules/tunnel-agent/index.js", "../../../node_modules/request/lib/tunnel.js", "../../../node_modules/performance-now/lib/src/performance-now.coffee", "../../../node_modules/request/request.js", "../../../node_modules/request/index.js", "../../../node_modules/data-uri-to-buffer/index.js", "../../../node_modules/parse-data-uri/index.js", "../../../node_modules/get-pixels/node-pixels.js", "../../polyfills/src/utils/is-browser.ts", "../../polyfills/src/text-encoder/encoding-indexes.ts", "../../polyfills/src/text-encoder/text-encoder.ts", "../../polyfills/src/buffer/btoa.node.ts", "../../polyfills/src/images/encode-image-node.ts", "../../polyfills/src/buffer/to-array-buffer.node.ts", "../../polyfills/src/images/parse-image-node.ts", "../../worker-utils/src/lib/env-utils/version.ts", "../../worker-utils/src/lib/env-utils/assert.ts", "../../worker-utils/src/lib/env-utils/globals.ts", "../../worker-utils/src/lib/node/worker_threads.ts", "../../worker-utils/src/lib/worker-utils/get-transfer-list.ts", "../../worker-utils/src/lib/worker-farm/worker-body.ts", "../../worker-utils/src/lib/library-utils/library-utils.ts", "../../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts", "../../loader-utils/src/lib/binary-utils/array-buffer-utils.ts", "../../loader-utils/src/lib/iterators/async-iteration.ts", "../../loader-utils/src/lib/path-utils/file-aliases.ts", "../../polyfills/src/filesystems/node-file.ts", "../../polyfills/src/filesystems/node-filesystem.ts", "../../polyfills/src/filesystems/fetch-node.ts", "../../polyfills/src/filesystems/stream-utils.node.ts", "../../crypto/src/lib/hash.ts", "../../polyfills/src/crypto/node-hash.ts", "../../polyfills/src/index.ts", "../../polyfills/src/streams/make-node-stream.ts", "../../../node_modules/web-streams-polyfill/dist/ponyfill.mjs", "../../polyfills/src/file/readable-stream.ts", "../../polyfills/src/file/blob-stream-controller.ts", "../../polyfills/src/file/blob-stream.ts", "../../polyfills/src/file/blob.ts", "../../polyfills/src/file/install-blob-polyfills.ts", "../../polyfills/src/file/file-reader.ts", "../../polyfills/src/file/file.ts", "../../polyfills/src/file/install-file-polyfills.ts", "../../polyfills/src/load-library/require-utils.node.ts", "../../polyfills/src/fetch/headers-polyfill.ts", "../../polyfills/src/utils/assert.ts", "../../polyfills/src/fetch/response-polyfill.ts", "../../polyfills/src/fetch/fetch-polyfill.ts", "../../polyfills/src/fetch/decode-data-uri.ts", "../src/lib/utils/version.ts", "../src/draco-loader.ts", "../../schema/src/lib/table/simple-table/data-type.ts", "../../schema/src/lib/mesh/mesh-utils.ts", "../../schema/src/lib/mesh/deduce-mesh-schema.ts", "../src/lib/utils/get-draco-schema.ts", "../src/lib/draco-parser.ts", "../src/lib/draco-module-loader.ts", "../src/index.ts", "../src/workers/draco-worker-node.ts"], "sourcesContent": ["module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\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// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\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 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 objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (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('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (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 };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (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}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\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\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(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': return true;\n default: return false;\n }\n }\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\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. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\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 = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nReadable.ReadableState = ReadableState;\n\nvar EE = require('events').EventEmitter;\n\n/**/\nif (!EE.listenerCount) EE.listenerCount = function(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\nvar Stream = require('stream');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nfunction ReadableState(options, stream) {\n options = options || {};\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 this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.buffer = [];\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = false;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // In streams that never have any data, and do push(null) right away,\n // the consumer can miss the 'end' event if they do some I/O before\n // consuming the stream. So, we don't emit('end') until some reading\n // happens.\n this.calledRead = false;\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, becuase 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 // 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\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 // 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 // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\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)\n StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n if (!(this instanceof Readable))\n return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n Stream.call(this);\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\n if (typeof chunk === 'string' && !state.objectMode) {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = new Buffer(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function(chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (chunk === null || chunk === undefined) {\n state.reading = false;\n if (!state.ended)\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var e = new Error('stream.unshift() after end event');\n stream.emit('error', e);\n } else {\n if (state.decoder && !addToFront && !encoding)\n chunk = state.decoder.write(chunk);\n\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) {\n state.buffer.unshift(chunk);\n } else {\n state.reading = false;\n state.buffer.push(chunk);\n }\n\n if (state.needReadable)\n emitReadable(stream);\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\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 &&\n (state.needReadable ||\n state.length < state.highWaterMark ||\n state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function(enc) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n};\n\n// Don't raise the hwm > 128MB\nvar MAX_HWM = 0x800000;\nfunction roundUpToNextPowerOf2(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2\n n--;\n for (var p = 1; p < 32; p <<= 1) n |= n >> p;\n n++;\n }\n return n;\n}\n\nfunction howMuchToRead(n, state) {\n if (state.length === 0 && state.ended)\n return 0;\n\n if (state.objectMode)\n return n === 0 ? 0 : 1;\n\n if (n === null || isNaN(n)) {\n // only flow one buffer at a time\n if (state.flowing && state.buffer.length)\n return state.buffer[0].length;\n else\n return state.length;\n }\n\n if (n <= 0)\n return 0;\n\n // If we're asking for more than the target buffer level,\n // then raise the water mark. Bump up to the next highest\n // power of 2, to prevent increasing it excessively in tiny\n // amounts.\n if (n > state.highWaterMark)\n state.highWaterMark = roundUpToNextPowerOf2(n);\n\n // don't have that much. return null, unless we've ended.\n if (n > state.length) {\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n } else\n return state.length;\n }\n\n return n;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function(n) {\n var state = this._readableState;\n state.calledRead = true;\n var nOrig = n;\n var ret;\n\n if (typeof n !== 'number' || n > 0)\n 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 &&\n state.needReadable &&\n (state.length >= state.highWaterMark || state.ended)) {\n 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 ret = null;\n\n // In cases where the decoder did not receive enough data\n // to produce a full chunk, then immediately received an\n // EOF, state.buffer will contain [, ].\n // howMuchToRead will see this and coerce the amount to\n // read to zero (because it's looking at the length of the\n // first in state.buffer), and we'll end up here.\n //\n // This can only happen via state.decoder -- no other venue\n // exists for pushing a zero-length chunk into state.buffer\n // and triggering this behavior. In this case, we return our\n // remaining data and end the stream, if appropriate.\n if (state.length > 0 && state.decoder) {\n ret = fromList(n, state);\n state.length -= ret.length;\n }\n\n if (state.length === 0)\n endReadable(this);\n\n return ret;\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\n // if we currently have less than the highWaterMark, then also read some\n if (state.length - n <= state.highWaterMark)\n doRead = true;\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\n if (doRead) {\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)\n state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n }\n\n // If _read called its callback synchronously, then `reading`\n // will be false, and we need to re-evaluate how much data we\n // can return to the user.\n if (doRead && !state.reading)\n n = howMuchToRead(nOrig, state);\n\n if (n > 0)\n ret = fromList(n, state);\n else\n ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n }\n\n state.length -= n;\n\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.length === 0 && !state.ended)\n state.needReadable = true;\n\n // If we happened to read() exactly the remaining amount in the\n // buffer, and the EOF has been seen at this point, then make sure\n // that we emit 'end' on the very next tick.\n if (state.ended && !state.endEmitted && state.length === 0)\n endReadable(this);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!Buffer.isBuffer(chunk) &&\n 'string' !== typeof chunk &&\n chunk !== null &&\n chunk !== undefined &&\n !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n\nfunction onEofChunk(stream, state) {\n if (state.decoder && !state.ended) {\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 // if we've ended and we have some data left, then emit\n // 'readable' now to make sure it gets picked up.\n if (state.length > 0)\n emitReadable(stream);\n else\n endReadable(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 return;\n\n state.emittedReadable = true;\n if (state.sync)\n process.nextTick(function() {\n emitReadable_(stream);\n });\n else\n emitReadable_(stream);\n}\n\nfunction emitReadable_(stream) {\n stream.emit('readable');\n}\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 process.nextTick(function() {\n maybeReadMore_(stream, state);\n });\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended &&\n state.length < state.highWaterMark) {\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n else\n 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('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\n var doEnd = (!pipeOpts || pipeOpts.end !== false) &&\n dest !== process.stdout &&\n dest !== process.stderr;\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted)\n process.nextTick(endFn);\n else\n src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n if (readable !== src) return;\n cleanup();\n }\n\n function 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 function 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', cleanup);\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 (!dest._writableState || dest._writableState.needDrain)\n ondrain();\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 unpipe();\n dest.removeListener('error', onerror);\n if (EE.listenerCount(dest, 'error') === 0)\n dest.emit('error', er);\n }\n // This is a brutally ugly hack to make sure that our error handler\n // is attached before any userland ones. NEVER DO THIS.\n if (!dest._events || !dest._events.error)\n dest.on('error', onerror);\n else if (isArray(dest._events.error))\n dest._events.error.unshift(onerror);\n else\n dest._events.error = [onerror, dest._events.error];\n\n\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 dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function 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 // the handler that waits for readable events after all\n // the data gets sucked out in flow.\n // This would be easier to follow with a .once() handler\n // in flow(), but that is too slow.\n this.on('readable', pipeOnReadable);\n\n state.flowing = true;\n process.nextTick(function() {\n flow(src);\n });\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function() {\n var dest = this;\n var state = src._readableState;\n state.awaitDrain--;\n if (state.awaitDrain === 0)\n flow(src);\n };\n}\n\nfunction flow(src) {\n var state = src._readableState;\n var chunk;\n state.awaitDrain = 0;\n\n function write(dest, i, list) {\n var written = dest.write(chunk);\n if (false === written) {\n state.awaitDrain++;\n }\n }\n\n while (state.pipesCount && null !== (chunk = src.read())) {\n\n if (state.pipesCount === 1)\n write(state.pipes, 0, null);\n else\n forEach(state.pipes, write);\n\n src.emit('data', chunk);\n\n // if anyone needs a drain, then we have to wait for that.\n if (state.awaitDrain > 0)\n return;\n }\n\n // if every destination was unpiped, either before entering this\n // function, or in the while loop, then stop flowing.\n //\n // NB: This is a pretty rare edge case.\n if (state.pipesCount === 0) {\n state.flowing = false;\n\n // if there were data event listeners added, then switch to old mode.\n if (EE.listenerCount(src, 'data') > 0)\n emitDataEvents(src);\n return;\n }\n\n // at this point, no one needed a drain, so we just ran out of data\n // on the next readable event, start it over again.\n state.ranOut = true;\n}\n\nfunction pipeOnReadable() {\n if (this._readableState.ranOut) {\n this._readableState.ranOut = false;\n flow(this);\n }\n}\n\n\nReadable.prototype.unpipe = function(dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0)\n 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)\n return this;\n\n if (!dest)\n dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n this.removeListener('readable', pipeOnReadable);\n state.flowing = false;\n if (dest)\n dest.emit('unpipe', this);\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 this.removeListener('readable', pipeOnReadable);\n state.flowing = false;\n\n for (var i = 0; i < len; i++)\n dests[i].emit('unpipe', this);\n return this;\n }\n\n // try to find the right one.\n var i = indexOf(state.pipes, dest);\n if (i === -1)\n return this;\n\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1)\n state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\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' && !this._readableState.flowing)\n emitDataEvents(this);\n\n if (ev === 'readable' && this.readable) {\n var state = this._readableState;\n if (!state.readableListening) {\n state.readableListening = true;\n state.emittedReadable = false;\n state.needReadable = true;\n if (!state.reading) {\n this.read(0);\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\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 emitDataEvents(this);\n this.read(0);\n this.emit('resume');\n};\n\nReadable.prototype.pause = function() {\n emitDataEvents(this, true);\n this.emit('pause');\n};\n\nfunction emitDataEvents(stream, startPaused) {\n var state = stream._readableState;\n\n if (state.flowing) {\n // https://github.com/isaacs/readable-stream/issues/16\n throw new Error('Cannot switch to old mode now.');\n }\n\n var paused = startPaused || false;\n var readable = false;\n\n // convert to an old-style stream.\n stream.readable = true;\n stream.pipe = Stream.prototype.pipe;\n stream.on = stream.addListener = Stream.prototype.on;\n\n stream.on('readable', function() {\n readable = true;\n\n var c;\n while (!paused && (null !== (c = stream.read())))\n stream.emit('data', c);\n\n if (c === null) {\n readable = false;\n stream._readableState.needReadable = true;\n }\n });\n\n stream.pause = function() {\n paused = true;\n this.emit('pause');\n };\n\n stream.resume = function() {\n paused = false;\n if (readable)\n process.nextTick(function() {\n stream.emit('readable');\n });\n else\n this.read(0);\n this.emit('resume');\n };\n\n // now make it start, just in case it hadn't already.\n stream.emit('readable');\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 state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function() {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length)\n self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function(chunk) {\n if (state.decoder)\n chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n //if (state.objectMode && util.isNullOrUndefined(chunk))\n if (state.objectMode && (chunk === null || chunk === undefined))\n return;\n else if (!state.objectMode && (!chunk || !chunk.length))\n return;\n\n var ret = self.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 (typeof stream[i] === 'function' &&\n typeof this[i] === 'undefined') {\n this[i] = function(method) { return function() {\n return stream[method].apply(stream, arguments);\n }}(i);\n }\n }\n\n // proxy certain important events.\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function(ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function(n) {\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\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.\nfunction fromList(n, state) {\n var list = state.buffer;\n var length = state.length;\n var stringMode = !!state.decoder;\n var objectMode = !!state.objectMode;\n var ret;\n\n // nothing in the list, definitely empty.\n if (list.length === 0)\n return null;\n\n if (length === 0)\n ret = null;\n else if (objectMode)\n ret = list.shift();\n else if (!n || n >= length) {\n // read it all, truncate the array.\n if (stringMode)\n ret = list.join('');\n else\n ret = Buffer.concat(list, length);\n list.length = 0;\n } else {\n // read just some of it.\n if (n < list[0].length) {\n // just take a part of the first list item.\n // slice is the same for buffers and strings.\n var buf = list[0];\n ret = buf.slice(0, n);\n list[0] = buf.slice(n);\n } else if (n === list[0].length) {\n // first list is a perfect match\n ret = list.shift();\n } else {\n // complex case.\n // we have enough to cover it, but it spans past the first buffer.\n if (stringMode)\n ret = '';\n else\n ret = new Buffer(n);\n\n var c = 0;\n for (var i = 0, l = list.length; i < l && c < n; i++) {\n var buf = list[0];\n var cpy = Math.min(n - c, buf.length);\n\n if (stringMode)\n ret += buf.slice(0, cpy);\n else\n buf.copy(ret, c, 0, cpy);\n\n if (cpy < buf.length)\n list[0] = buf.slice(cpy);\n else\n list.shift();\n\n c += cpy;\n }\n }\n }\n\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)\n throw new Error('endReadable called on non-empty stream');\n\n if (!state.endEmitted && state.calledRead) {\n state.ended = true;\n process.nextTick(function() {\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 }\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\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}\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\nmodule.exports = Duplex;\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n/**/\n\n\n/**/\nvar util = 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\nforEach(objectKeys(Writable.prototype), function(method) {\n if (!Duplex.prototype[method])\n Duplex.prototype[method] = Writable.prototype[method];\n});\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex))\n return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false)\n this.readable = false;\n\n if (options && options.writable === false)\n this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false)\n this.allowHalfOpen = false;\n\n this.once('end', onend);\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)\n return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(this.end.bind(this));\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\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// A bit simpler than readable streams.\n// Implement an async ._write(chunk, cb), and it'll handle all\n// the drain event emission and buffering.\n\nmodule.exports = Writable;\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nWritable.WritableState = WritableState;\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Stream = require('stream');\n\nutil.inherits(Writable, Stream);\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n}\n\nfunction WritableState(options, stream) {\n options = options || {};\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 this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\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 // 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 // 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, becuase 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.buffer = [];\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n}\n\nfunction Writable(options) {\n var Duplex = require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, though they're not\n // instanceof Writable, they're instanceof Readable.\n if (!(this instanceof Writable) && !(this instanceof Duplex))\n return new Writable(options);\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\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\n\nfunction writeAfterEnd(stream, state, 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 process.nextTick(function() {\n cb(er);\n });\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n if (!Buffer.isBuffer(chunk) &&\n 'string' !== typeof chunk &&\n chunk !== null &&\n chunk !== undefined &&\n !state.objectMode) {\n var er = new TypeError('Invalid non-string/buffer chunk');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\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\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\n else if (!encoding)\n encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function')\n cb = function() {};\n\n if (state.ended)\n writeAfterEnd(this, state, cb);\n else if (validChunk(this, state, chunk, cb))\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n\n return ret;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode &&\n state.decodeStrings !== false &&\n typeof chunk === 'string') {\n chunk = new Buffer(chunk, encoding);\n }\n return chunk;\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, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\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)\n state.needDrain = true;\n\n if (state.writing)\n state.buffer.push(new WriteReq(chunk, encoding, cb));\n else\n doWrite(stream, state, len, chunk, encoding, cb);\n\n return ret;\n}\n\nfunction doWrite(stream, state, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n if (sync)\n process.nextTick(function() {\n cb(er);\n });\n else\n cb(er);\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\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)\n onwriteError(stream, state, sync, er, cb);\n else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(stream, state);\n\n if (!finished && !state.bufferProcessing && state.buffer.length)\n clearBuffer(stream, state);\n\n if (sync) {\n process.nextTick(function() {\n 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)\n onwriteDrain(stream, state);\n cb();\n if (finished)\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\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n\n for (var c = 0; c < state.buffer.length; c++) {\n var entry = state.buffer[c];\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, len, chunk, encoding, cb);\n\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 c++;\n break;\n }\n }\n\n state.bufferProcessing = false;\n if (c < state.buffer.length)\n state.buffer = state.buffer.slice(c);\n else\n state.buffer.length = 0;\n}\n\nWritable.prototype._write = function(chunk, encoding, cb) {\n cb(new Error('not implemented'));\n};\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 (typeof chunk !== 'undefined' && chunk !== null)\n this.write(chunk, encoding);\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished)\n endWritable(this, state, cb);\n};\n\n\nfunction needFinish(stream, state) {\n return (state.ending &&\n state.length === 0 &&\n !state.finished &&\n !state.writing);\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(stream, state);\n if (need) {\n state.finished = true;\n stream.emit('finish');\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)\n process.nextTick(cb);\n else\n stream.once('finish', cb);\n }\n state.ended = true;\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\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\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\n\nfunction TransformState(options, stream) {\n this.afterTransform = function(er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb)\n return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined)\n stream.push(data);\n\n if (cb)\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\n\nfunction Transform(options) {\n if (!(this instanceof Transform))\n return new Transform(options);\n\n Duplex.call(this, options);\n\n var ts = this._transformState = new TransformState(options, this);\n\n // when the writable side finishes, then flush out anything remaining.\n var stream = this;\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 this.once('finish', function() {\n if ('function' === typeof this._flush)\n this._flush(function(er) {\n done(stream, er);\n });\n else\n done(stream);\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('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 ||\n rs.needReadable ||\n rs.length < rs.highWaterMark)\n 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\n\nfunction done(stream, er) {\n if (er)\n return stream.emit('error', er);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var rs = stream._readableState;\n var ts = stream._transformState;\n\n if (ws.length)\n throw new Error('calling transform done when ws.length != 0');\n\n if (ts.transforming)\n throw new Error('calling transform done when still transforming');\n\n return stream.push(null);\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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough))\n return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function(chunk, encoding, cb) {\n cb(null, chunk);\n};\n", "var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify\nexports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = Stream;\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');\nif (!process.browser && process.env.READABLE_STREAM === 'disable') {\n module.exports = require('stream');\n}\n", "/**!\n * contentstream - index.js\n *\n * Copyright(c) fengmk2 and other contributors.\n * MIT Licensed\n *\n * Authors:\n * fengmk2 (http://fengmk2.github.com)\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar Readable = require('readable-stream').Readable;\nvar util = require('util');\n\nmodule.exports = ContentStream;\n\nfunction ContentStream(obj, options) {\n if (!(this instanceof ContentStream)) {\n return new ContentStream(obj, options);\n }\n Readable.call(this, options);\n if (obj === null || obj === undefined) {\n obj = String(obj);\n }\n this._obj = obj;\n}\n\nutil.inherits(ContentStream, Readable);\n\nContentStream.prototype._read = function (n) {\n var obj = this._obj;\n if (typeof obj === 'string') {\n this.push(new Buffer(obj));\n } else if (Buffer.isBuffer(obj)) {\n this.push(obj);\n } else {\n this.push(new Buffer(JSON.stringify(obj)));\n }\n this.push(null);\n};\n", "module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\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// A bit simpler than readable streams.\n// Implement an async ._write(chunk, cb), and it'll handle all\n// the drain event emission and buffering.\n\nmodule.exports = Writable;\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nWritable.WritableState = WritableState;\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Stream = require('stream');\n\nutil.inherits(Writable, Stream);\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n}\n\nfunction WritableState(options, stream) {\n var Duplex = require('./_stream_duplex');\n\n options = options || {};\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 defaultHwm = options.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;\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 (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\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 // 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.buffer = [];\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\nfunction Writable(options) {\n var Duplex = require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, though they're not\n // instanceof Writable, they're instanceof Readable.\n if (!(this instanceof Writable) && !(this instanceof Duplex))\n return new Writable(options);\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\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\n\nfunction writeAfterEnd(stream, state, 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 process.nextTick(function() {\n cb(er);\n });\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n if (!util.isBuffer(chunk) &&\n !util.isString(chunk) &&\n !util.isNullOrUndefined(chunk) &&\n !state.objectMode) {\n var er = new TypeError('Invalid non-string/buffer chunk');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\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\n if (util.isFunction(encoding)) {\n cb = encoding;\n encoding = null;\n }\n\n if (util.isBuffer(chunk))\n encoding = 'buffer';\n else if (!encoding)\n encoding = state.defaultEncoding;\n\n if (!util.isFunction(cb))\n cb = function() {};\n\n if (state.ended)\n writeAfterEnd(this, state, cb);\n else if (validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, 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 &&\n !state.corked &&\n !state.finished &&\n !state.bufferProcessing &&\n state.buffer.length)\n clearBuffer(this, state);\n }\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode &&\n state.decodeStrings !== false &&\n util.isString(chunk)) {\n chunk = new Buffer(chunk, encoding);\n }\n return chunk;\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, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n if (util.isBuffer(chunk))\n encoding = 'buffer';\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)\n state.needDrain = true;\n\n if (state.writing || state.corked)\n state.buffer.push(new WriteReq(chunk, encoding, cb));\n else\n doWrite(stream, state, false, len, chunk, encoding, cb);\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)\n stream._writev(chunk, state.onwrite);\n else\n stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n if (sync)\n process.nextTick(function() {\n state.pendingcb--;\n cb(er);\n });\n else {\n state.pendingcb--;\n cb(er);\n }\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\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)\n onwriteError(stream, state, sync, er, cb);\n else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(stream, state);\n\n if (!finished &&\n !state.corked &&\n !state.bufferProcessing &&\n state.buffer.length) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(function() {\n 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)\n 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\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n\n if (stream._writev && state.buffer.length > 1) {\n // Fast case, write everything using _writev()\n var cbs = [];\n for (var c = 0; c < state.buffer.length; c++)\n cbs.push(state.buffer[c].callback);\n\n // count the one we are adding, as well.\n // TODO(isaacs) clean this up\n state.pendingcb++;\n doWrite(stream, state, true, state.length, state.buffer, '', function(err) {\n for (var i = 0; i < cbs.length; i++) {\n state.pendingcb--;\n cbs[i](err);\n }\n });\n\n // Clear buffer\n state.buffer = [];\n } else {\n // Slow case, write chunks one-by-one\n for (var c = 0; c < state.buffer.length; c++) {\n var entry = state.buffer[c];\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\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 c++;\n break;\n }\n }\n\n if (c < state.buffer.length)\n state.buffer = state.buffer.slice(c);\n else\n state.buffer.length = 0;\n }\n\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function(chunk, encoding, cb) {\n cb(new Error('not implemented'));\n\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function(chunk, encoding, cb) {\n var state = this._writableState;\n\n if (util.isFunction(chunk)) {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (util.isFunction(encoding)) {\n cb = encoding;\n encoding = null;\n }\n\n if (!util.isNullOrUndefined(chunk))\n 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)\n endWritable(this, state, cb);\n};\n\n\nfunction needFinish(stream, state) {\n return (state.ending &&\n state.length === 0 &&\n !state.finished &&\n !state.writing);\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished) {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(stream, state);\n if (need) {\n if (state.pendingcb === 0) {\n prefinish(stream, state);\n state.finished = true;\n stream.emit('finish');\n } else\n prefinish(stream, state);\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)\n process.nextTick(cb);\n else\n stream.once('finish', cb);\n }\n state.ended = true;\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// 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\nmodule.exports = Duplex;\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n/**/\n\n\n/**/\nvar util = 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\nforEach(objectKeys(Writable.prototype), function(method) {\n if (!Duplex.prototype[method])\n Duplex.prototype[method] = Writable.prototype[method];\n});\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex))\n return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false)\n this.readable = false;\n\n if (options && options.writable === false)\n this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false)\n this.allowHalfOpen = false;\n\n this.once('end', onend);\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)\n return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(this.end.bind(this));\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\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 = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nReadable.ReadableState = ReadableState;\n\nvar EE = require('events').EventEmitter;\n\n/**/\nif (!EE.listenerCount) EE.listenerCount = function(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\nvar Stream = require('stream');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar StringDecoder;\n\n\n/**/\nvar debug = require('util');\nif (debug && debug.debuglog) {\n debug = debug.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\n\nutil.inherits(Readable, Stream);\n\nfunction ReadableState(options, stream) {\n var Duplex = require('./_stream_duplex');\n\n options = options || {};\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 defaultHwm = options.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.buffer = [];\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 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 // 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\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 (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.readableObjectMode;\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 // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\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)\n StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n var Duplex = require('./_stream_duplex');\n\n if (!(this instanceof Readable))\n return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n Stream.call(this);\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\n if (util.isString(chunk) && !state.objectMode) {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = new Buffer(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function(chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (util.isNullOrUndefined(chunk)) {\n state.reading = false;\n if (!state.ended)\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var e = new Error('stream.unshift() after end event');\n stream.emit('error', e);\n } else {\n if (state.decoder && !addToFront && !encoding)\n chunk = state.decoder.write(chunk);\n\n if (!addToFront)\n state.reading = false;\n\n // if we want the data now, just emit it.\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)\n state.buffer.unshift(chunk);\n else\n state.buffer.push(chunk);\n\n if (state.needReadable)\n emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\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 &&\n (state.needReadable ||\n state.length < state.highWaterMark ||\n state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function(enc) {\n if (!StringDecoder)\n 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 > 128MB\nvar MAX_HWM = 0x800000;\nfunction roundUpToNextPowerOf2(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2\n n--;\n for (var p = 1; p < 32; p <<= 1) n |= n >> p;\n n++;\n }\n return n;\n}\n\nfunction howMuchToRead(n, state) {\n if (state.length === 0 && state.ended)\n return 0;\n\n if (state.objectMode)\n return n === 0 ? 0 : 1;\n\n if (isNaN(n) || util.isNull(n)) {\n // only flow one buffer at a time\n if (state.flowing && state.buffer.length)\n return state.buffer[0].length;\n else\n return state.length;\n }\n\n if (n <= 0)\n return 0;\n\n // If we're asking for more than the target buffer level,\n // then raise the water mark. Bump up to the next highest\n // power of 2, to prevent increasing it excessively in tiny\n // amounts.\n if (n > state.highWaterMark)\n state.highWaterMark = roundUpToNextPowerOf2(n);\n\n // don't have that much. return null, unless we've ended.\n if (n > state.length) {\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n } else\n return state.length;\n }\n\n return n;\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 var state = this._readableState;\n var nOrig = n;\n\n if (!util.isNumber(n) || n > 0)\n 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 &&\n state.needReadable &&\n (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended)\n endReadable(this);\n else\n 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)\n 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 }\n\n 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)\n state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n }\n\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 (doRead && !state.reading)\n n = howMuchToRead(nOrig, state);\n\n var ret;\n if (n > 0)\n ret = fromList(n, state);\n else\n ret = null;\n\n if (util.isNull(ret)) {\n state.needReadable = true;\n n = 0;\n }\n\n state.length -= n;\n\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.length === 0 && !state.ended)\n 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 && state.length === 0)\n endReadable(this);\n\n if (!util.isNull(ret))\n this.emit('data', ret);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!util.isBuffer(chunk) &&\n !util.isString(chunk) &&\n !util.isNullOrUndefined(chunk) &&\n !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n\nfunction onEofChunk(stream, state) {\n if (state.decoder && !state.ended) {\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)\n process.nextTick(function() {\n emitReadable_(stream);\n });\n else\n emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\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 process.nextTick(function() {\n maybeReadMore_(stream, state);\n });\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended &&\n 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;\n else\n 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('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) &&\n dest !== process.stdout &&\n dest !== process.stderr;\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted)\n process.nextTick(endFn);\n else\n src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n debug('onunpipe');\n if (readable === src) {\n cleanup();\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 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', cleanup);\n src.removeListener('data', ondata);\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 &&\n (!dest._writableState || dest._writableState.needDrain))\n ondrain();\n }\n\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n if (false === ret) {\n debug('false write response, pause',\n src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\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 (EE.listenerCount(dest, 'error') === 0)\n dest.emit('error', er);\n }\n // This is a brutally ugly hack to make sure that our error handler\n // is attached before any userland ones. NEVER DO THIS.\n if (!dest._events || !dest._events.error)\n dest.on('error', onerror);\n else if (isArray(dest._events.error))\n dest._events.error.unshift(onerror);\n else\n dest._events.error = [onerror, dest._events.error];\n\n\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)\n state.awaitDrain--;\n if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\n\nReadable.prototype.unpipe = function(dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0)\n 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)\n return this;\n\n if (!dest)\n dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest)\n dest.emit('unpipe', this);\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);\n return this;\n }\n\n // try to find the right one.\n var i = indexOf(state.pipes, dest);\n if (i === -1)\n return this;\n\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1)\n state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\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 listening to data, and it has not explicitly been paused,\n // then call resume to start the flow of data on the next tick.\n if (ev === 'data' && false !== this._readableState.flowing) {\n this.resume();\n }\n\n if (ev === 'readable' && this.readable) {\n var state = this._readableState;\n if (!state.readableListening) {\n state.readableListening = true;\n state.emittedReadable = false;\n state.needReadable = true;\n if (!state.reading) {\n var self = this;\n process.nextTick(function() {\n debug('readable nexttick read 0');\n self.read(0);\n });\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\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 if (!state.reading) {\n debug('resume read 0');\n this.read(0);\n }\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(function() {\n resume_(stream, state);\n });\n }\n}\n\nfunction resume_(stream, state) {\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading)\n 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 if (state.flowing) {\n do {\n var chunk = stream.read();\n } while (null !== chunk && state.flowing);\n }\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 state = this._readableState;\n var paused = false;\n\n var self = this;\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)\n self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function(chunk) {\n debug('wrapped data');\n if (state.decoder)\n chunk = state.decoder.write(chunk);\n if (!chunk || !state.objectMode && !chunk.length)\n return;\n\n var ret = self.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 (util.isFunction(stream[i]) && util.isUndefined(this[i])) {\n this[i] = function(method) { return function() {\n return stream[method].apply(stream, arguments);\n }}(i);\n }\n }\n\n // proxy certain important events.\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function(ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function(n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\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.\nfunction fromList(n, state) {\n var list = state.buffer;\n var length = state.length;\n var stringMode = !!state.decoder;\n var objectMode = !!state.objectMode;\n var ret;\n\n // nothing in the list, definitely empty.\n if (list.length === 0)\n return null;\n\n if (length === 0)\n ret = null;\n else if (objectMode)\n ret = list.shift();\n else if (!n || n >= length) {\n // read it all, truncate the array.\n if (stringMode)\n ret = list.join('');\n else\n ret = Buffer.concat(list, length);\n list.length = 0;\n } else {\n // read just some of it.\n if (n < list[0].length) {\n // just take a part of the first list item.\n // slice is the same for buffers and strings.\n var buf = list[0];\n ret = buf.slice(0, n);\n list[0] = buf.slice(n);\n } else if (n === list[0].length) {\n // first list is a perfect match\n ret = list.shift();\n } else {\n // complex case.\n // we have enough to cover it, but it spans past the first buffer.\n if (stringMode)\n ret = '';\n else\n ret = new Buffer(n);\n\n var c = 0;\n for (var i = 0, l = list.length; i < l && c < n; i++) {\n var buf = list[0];\n var cpy = Math.min(n - c, buf.length);\n\n if (stringMode)\n ret += buf.slice(0, cpy);\n else\n buf.copy(ret, c, 0, cpy);\n\n if (cpy < buf.length)\n list[0] = buf.slice(cpy);\n else\n list.shift();\n\n c += cpy;\n }\n }\n }\n\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)\n throw new Error('endReadable called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(function() {\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 }\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\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}\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\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\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\n\nfunction TransformState(options, stream) {\n this.afterTransform = function(er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb)\n return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (!util.isNullOrUndefined(data))\n stream.push(data);\n\n if (cb)\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\n\nfunction Transform(options) {\n if (!(this instanceof Transform))\n return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(options, this);\n\n // when the writable side finishes, then flush out anything remaining.\n var stream = this;\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 this.once('prefinish', function() {\n if (util.isFunction(this._flush))\n this._flush(function(er) {\n done(stream, er);\n });\n else\n done(stream);\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('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 ||\n rs.needReadable ||\n rs.length < rs.highWaterMark)\n 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 (!util.isNull(ts.writechunk) && 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\n\nfunction done(stream, er) {\n if (er)\n return stream.emit('error', er);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length)\n throw new Error('calling transform done when ws.length != 0');\n\n if (ts.transforming)\n throw new Error('calling transform done when still transforming');\n\n return stream.push(null);\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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough))\n return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function(chunk, encoding, cb) {\n cb(null, chunk);\n};\n", "exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = require('stream');\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');\nif (!process.browser && process.env.READABLE_STREAM === 'disable') {\n module.exports = require('stream');\n}\n", "/* NeuQuant Neural-Net Quantization Algorithm\n * ------------------------------------------\n *\n * Copyright (c) 1994 Anthony Dekker\n *\n * NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994.\n * See \"Kohonen neural networks for optimal colour quantization\"\n * in \"Network: Computation in Neural Systems\" Vol. 5 (1994) pp 351-367.\n * for a discussion of the algorithm.\n * See also http://members.ozemail.com.au/~dekker/NEUQUANT.HTML\n *\n * Any party obtaining a copy of these files from the author, directly or\n * indirectly, is granted, free of charge, a full and unrestricted irrevocable,\n * world-wide, paid up, royalty-free, nonexclusive right and license to deal\n * in this software and documentation files (the \"Software\"), including without\n * limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons who receive\n * copies from any such party to do so, with the only requirement being\n * that this copyright notice remain intact.\n *\n * (JavaScript port 2012 by Johan Nordberg)\n */\n\nvar ncycles = 100; // number of learning cycles\nvar netsize = 256; // number of colors used\nvar maxnetpos = netsize - 1;\n\n// defs for freq and bias\nvar netbiasshift = 4; // bias for colour values\nvar intbiasshift = 16; // bias for fractions\nvar intbias = (1 << intbiasshift);\nvar gammashift = 10;\nvar gamma = (1 << gammashift);\nvar betashift = 10;\nvar beta = (intbias >> betashift); /* beta = 1/1024 */\nvar betagamma = (intbias << (gammashift - betashift));\n\n// defs for decreasing radius factor\nvar initrad = (netsize >> 3); // for 256 cols, radius starts\nvar radiusbiasshift = 6; // at 32.0 biased by 6 bits\nvar radiusbias = (1 << radiusbiasshift);\nvar initradius = (initrad * radiusbias); //and decreases by a\nvar radiusdec = 30; // factor of 1/30 each cycle\n\n// defs for decreasing alpha factor\nvar alphabiasshift = 10; // alpha starts at 1.0\nvar initalpha = (1 << alphabiasshift);\nvar alphadec; // biased by 10 bits\n\n/* radbias and alpharadbias used for radpower calculation */\nvar radbiasshift = 8;\nvar radbias = (1 << radbiasshift);\nvar alpharadbshift = (alphabiasshift + radbiasshift);\nvar alpharadbias = (1 << alpharadbshift);\n\n// four primes near 500 - assume no image has a length so large that it is\n// divisible by all four primes\nvar prime1 = 499;\nvar prime2 = 491;\nvar prime3 = 487;\nvar prime4 = 503;\nvar minpicturebytes = (3 * prime4);\n\n/*\n Constructor: NeuQuant\n\n Arguments:\n\n pixels - array of pixels in RGB format\n samplefac - sampling factor 1 to 30 where lower is better quality\n\n >\n > pixels = [r, g, b, r, g, b, r, g, b, ..]\n >\n*/\nfunction NeuQuant(pixels, samplefac) {\n var network; // int[netsize][4]\n var netindex; // for network lookup - really 256\n\n // bias and freq arrays for learning\n var bias;\n var freq;\n var radpower;\n\n /*\n Private Method: init\n\n sets up arrays\n */\n function init() {\n network = [];\n netindex = new Int32Array(256);\n bias = new Int32Array(netsize);\n freq = new Int32Array(netsize);\n radpower = new Int32Array(netsize >> 3);\n\n var i, v;\n for (i = 0; i < netsize; i++) {\n v = (i << (netbiasshift + 8)) / netsize;\n network[i] = new Float64Array([v, v, v, 0]);\n //network[i] = [v, v, v, 0]\n freq[i] = intbias / netsize;\n bias[i] = 0;\n }\n }\n\n /*\n Private Method: unbiasnet\n\n unbiases network to give byte values 0..255 and record position i to prepare for sort\n */\n function unbiasnet() {\n for (var i = 0; i < netsize; i++) {\n network[i][0] >>= netbiasshift;\n network[i][1] >>= netbiasshift;\n network[i][2] >>= netbiasshift;\n network[i][3] = i; // record color number\n }\n }\n\n /*\n Private Method: altersingle\n\n moves neuron *i* towards biased (b,g,r) by factor *alpha*\n */\n function altersingle(alpha, i, b, g, r) {\n network[i][0] -= (alpha * (network[i][0] - b)) / initalpha;\n network[i][1] -= (alpha * (network[i][1] - g)) / initalpha;\n network[i][2] -= (alpha * (network[i][2] - r)) / initalpha;\n }\n\n /*\n Private Method: alterneigh\n\n moves neurons in *radius* around index *i* towards biased (b,g,r) by factor *alpha*\n */\n function alterneigh(radius, i, b, g, r) {\n var lo = Math.abs(i - radius);\n var hi = Math.min(i + radius, netsize);\n\n var j = i + 1;\n var k = i - 1;\n var m = 1;\n\n var p, a;\n while ((j < hi) || (k > lo)) {\n a = radpower[m++];\n\n if (j < hi) {\n p = network[j++];\n p[0] -= (a * (p[0] - b)) / alpharadbias;\n p[1] -= (a * (p[1] - g)) / alpharadbias;\n p[2] -= (a * (p[2] - r)) / alpharadbias;\n }\n\n if (k > lo) {\n p = network[k--];\n p[0] -= (a * (p[0] - b)) / alpharadbias;\n p[1] -= (a * (p[1] - g)) / alpharadbias;\n p[2] -= (a * (p[2] - r)) / alpharadbias;\n }\n }\n }\n\n /*\n Private Method: contest\n\n searches for biased BGR values\n */\n function contest(b, g, r) {\n /*\n finds closest neuron (min dist) and updates freq\n finds best neuron (min dist-bias) and returns position\n for frequently chosen neurons, freq[i] is high and bias[i] is negative\n bias[i] = gamma * ((1 / netsize) - freq[i])\n */\n\n var bestd = ~(1 << 31);\n var bestbiasd = bestd;\n var bestpos = -1;\n var bestbiaspos = bestpos;\n\n var i, n, dist, biasdist, betafreq;\n for (i = 0; i < netsize; i++) {\n n = network[i];\n\n dist = Math.abs(n[0] - b) + Math.abs(n[1] - g) + Math.abs(n[2] - r);\n if (dist < bestd) {\n bestd = dist;\n bestpos = i;\n }\n\n biasdist = dist - ((bias[i]) >> (intbiasshift - netbiasshift));\n if (biasdist < bestbiasd) {\n bestbiasd = biasdist;\n bestbiaspos = i;\n }\n\n betafreq = (freq[i] >> betashift);\n freq[i] -= betafreq;\n bias[i] += (betafreq << gammashift);\n }\n\n freq[bestpos] += beta;\n bias[bestpos] -= betagamma;\n\n return bestbiaspos;\n }\n\n /*\n Private Method: inxbuild\n\n sorts network and builds netindex[0..255]\n */\n function inxbuild() {\n var i, j, p, q, smallpos, smallval, previouscol = 0, startpos = 0;\n for (i = 0; i < netsize; i++) {\n p = network[i];\n smallpos = i;\n smallval = p[1]; // index on g\n // find smallest in i..netsize-1\n for (j = i + 1; j < netsize; j++) {\n q = network[j];\n if (q[1] < smallval) { // index on g\n smallpos = j;\n smallval = q[1]; // index on g\n }\n }\n q = network[smallpos];\n // swap p (i) and q (smallpos) entries\n if (i != smallpos) {\n j = q[0]; q[0] = p[0]; p[0] = j;\n j = q[1]; q[1] = p[1]; p[1] = j;\n j = q[2]; q[2] = p[2]; p[2] = j;\n j = q[3]; q[3] = p[3]; p[3] = j;\n }\n // smallval entry is now in position i\n\n if (smallval != previouscol) {\n netindex[previouscol] = (startpos + i) >> 1;\n for (j = previouscol + 1; j < smallval; j++)\n netindex[j] = i;\n previouscol = smallval;\n startpos = i;\n }\n }\n netindex[previouscol] = (startpos + maxnetpos) >> 1;\n for (j = previouscol + 1; j < 256; j++)\n netindex[j] = maxnetpos; // really 256\n }\n\n /*\n Private Method: inxsearch\n\n searches for BGR values 0..255 and returns a color index\n */\n function inxsearch(b, g, r) {\n var a, p, dist;\n\n var bestd = 1000; // biggest possible dist is 256*3\n var best = -1;\n\n var i = netindex[g]; // index on g\n var j = i - 1; // start at netindex[g] and work outwards\n\n while ((i < netsize) || (j >= 0)) {\n if (i < netsize) {\n p = network[i];\n dist = p[1] - g; // inx key\n if (dist >= bestd) i = netsize; // stop iter\n else {\n i++;\n if (dist < 0) dist = -dist;\n a = p[0] - b; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n a = p[2] - r; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n bestd = dist;\n best = p[3];\n }\n }\n }\n }\n if (j >= 0) {\n p = network[j];\n dist = g - p[1]; // inx key - reverse dif\n if (dist >= bestd) j = -1; // stop iter\n else {\n j--;\n if (dist < 0) dist = -dist;\n a = p[0] - b; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n a = p[2] - r; if (a < 0) a = -a;\n dist += a;\n if (dist < bestd) {\n bestd = dist;\n best = p[3];\n }\n }\n }\n }\n }\n\n return best;\n }\n\n /*\n Private Method: learn\n\n \"Main Learning Loop\"\n */\n function learn() {\n var i;\n\n var lengthcount = pixels.length;\n var alphadec = 30 + ((samplefac - 1) / 3);\n var samplepixels = lengthcount / (3 * samplefac);\n var delta = ~~(samplepixels / ncycles);\n var alpha = initalpha;\n var radius = initradius;\n\n var rad = radius >> radiusbiasshift;\n\n if (rad <= 1) rad = 0;\n for (i = 0; i < rad; i++)\n radpower[i] = alpha * (((rad * rad - i * i) * radbias) / (rad * rad));\n\n var step;\n if (lengthcount < minpicturebytes) {\n samplefac = 1;\n step = 3;\n } else if ((lengthcount % prime1) !== 0) {\n step = 3 * prime1;\n } else if ((lengthcount % prime2) !== 0) {\n step = 3 * prime2;\n } else if ((lengthcount % prime3) !== 0) {\n step = 3 * prime3;\n } else {\n step = 3 * prime4;\n }\n\n var b, g, r, j;\n var pix = 0; // current pixel\n\n i = 0;\n while (i < samplepixels) {\n b = (pixels[pix] & 0xff) << netbiasshift;\n g = (pixels[pix + 1] & 0xff) << netbiasshift;\n r = (pixels[pix + 2] & 0xff) << netbiasshift;\n\n j = contest(b, g, r);\n\n altersingle(alpha, j, b, g, r);\n if (rad !== 0) alterneigh(rad, j, b, g, r); // alter neighbours\n\n pix += step;\n if (pix >= lengthcount) pix -= lengthcount;\n\n i++;\n\n if (delta === 0) delta = 1;\n if (i % delta === 0) {\n alpha -= alpha / alphadec;\n radius -= radius / radiusdec;\n rad = radius >> radiusbiasshift;\n\n if (rad <= 1) rad = 0;\n for (j = 0; j < rad; j++)\n radpower[j] = alpha * (((rad * rad - j * j) * radbias) / (rad * rad));\n }\n }\n }\n\n /*\n Method: buildColormap\n\n 1. initializes network\n 2. trains it\n 3. removes misconceptions\n 4. builds colorindex\n */\n function buildColormap() {\n init();\n learn();\n unbiasnet();\n inxbuild();\n }\n this.buildColormap = buildColormap;\n\n /*\n Method: getColormap\n\n builds colormap from the index\n\n returns array in the format:\n\n >\n > [r, g, b, r, g, b, r, g, b, ..]\n >\n */\n function getColormap() {\n var map = [];\n var index = [];\n\n for (var i = 0; i < netsize; i++)\n index[network[i][3]] = i;\n\n var k = 0;\n for (var l = 0; l < netsize; l++) {\n var j = index[l];\n map[k++] = (network[j][0]);\n map[k++] = (network[j][1]);\n map[k++] = (network[j][2]);\n }\n return map;\n }\n this.getColormap = getColormap;\n\n /*\n Method: lookupRGB\n\n looks for the closest *r*, *g*, *b* color in the map and\n returns its index\n */\n this.lookupRGB = inxsearch;\n}\n\nmodule.exports = NeuQuant;\n", "/*\n LZWEncoder.js\n\n Authors\n Kevin Weiner (original Java version - kweiner@fmsware.com)\n Thibault Imbert (AS3 version - bytearray.org)\n Johan Nordberg (JS version - code@johan-nordberg.com)\n\n Acknowledgements\n GIFCOMPR.C - GIF Image compression routines\n Lempel-Ziv compression based on 'compress'. GIF modifications by\n David Rowley (mgardi@watdcsu.waterloo.edu)\n GIF Image compression - modified 'compress'\n Based on: compress.c - File compression ala IEEE Computer, June 1984.\n By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas)\n Jim McKie (decvax!mcvax!jim)\n Steve Davies (decvax!vax135!petsd!peora!srd)\n Ken Turkowski (decvax!decwrl!turtlevax!ken)\n James A. Woods (decvax!ihnp4!ames!jaw)\n Joe Orost (decvax!vax135!petsd!joe)\n*/\n\nvar EOF = -1;\nvar BITS = 12;\nvar HSIZE = 5003; // 80% occupancy\nvar masks = [0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F,\n 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF,\n 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF];\n\nfunction LZWEncoder(width, height, pixels, colorDepth) {\n var initCodeSize = Math.max(2, colorDepth);\n\n var accum = new Uint8Array(256);\n var htab = new Int32Array(HSIZE);\n var codetab = new Int32Array(HSIZE);\n\n var cur_accum, cur_bits = 0;\n var a_count;\n var free_ent = 0; // first unused entry\n var maxcode;\n var remaining;\n var curPixel;\n var n_bits;\n\n // block compression parameters -- after all codes are used up,\n // and compression rate changes, start over.\n var clear_flg = false;\n\n // Algorithm: use open addressing double hashing (no chaining) on the\n // prefix code / next character combination. We do a variant of Knuth's\n // algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime\n // secondary probe. Here, the modular division first probe is gives way\n // to a faster exclusive-or manipulation. Also do block compression with\n // an adaptive reset, whereby the code table is cleared when the compression\n // ratio decreases, but after the table fills. The variable-length output\n // codes are re-sized at this point, and a special CLEAR code is generated\n // for the decompressor. Late addition: construct the table according to\n // file size for noticeable speed improvement on small files. Please direct\n // questions about this implementation to ames!jaw.\n var g_init_bits, ClearCode, EOFCode;\n\n // Add a character to the end of the current packet, and if it is 254\n // characters, flush the packet to disk.\n function char_out(c, outs) {\n accum[a_count++] = c;\n if (a_count >= 254) flush_char(outs);\n }\n\n // Clear out the hash table\n // table clear for block compress\n function cl_block(outs) {\n cl_hash(HSIZE);\n free_ent = ClearCode + 2;\n clear_flg = true;\n output(ClearCode, outs);\n }\n\n // Reset code table\n function cl_hash(hsize) {\n for (var i = 0; i < hsize; ++i) htab[i] = -1;\n }\n\n function compress(init_bits, outs) {\n var fcode, c, i, ent, disp, hsize_reg, hshift;\n\n // Set up the globals: g_init_bits - initial number of bits\n g_init_bits = init_bits;\n\n // Set up the necessary values\n clear_flg = false;\n n_bits = g_init_bits;\n maxcode = MAXCODE(n_bits);\n\n ClearCode = 1 << (init_bits - 1);\n EOFCode = ClearCode + 1;\n free_ent = ClearCode + 2;\n\n a_count = 0; // clear packet\n\n ent = nextPixel();\n\n hshift = 0;\n for (fcode = HSIZE; fcode < 65536; fcode *= 2) ++hshift;\n hshift = 8 - hshift; // set hash code range bound\n hsize_reg = HSIZE;\n cl_hash(hsize_reg); // clear hash table\n\n output(ClearCode, outs);\n\n outer_loop: while ((c = nextPixel()) != EOF) {\n fcode = (c << BITS) + ent;\n i = (c << hshift) ^ ent; // xor hashing\n if (htab[i] === fcode) {\n ent = codetab[i];\n continue;\n } else if (htab[i] >= 0) { // non-empty slot\n disp = hsize_reg - i; // secondary hash (after G. Knott)\n if (i === 0) disp = 1;\n do {\n if ((i -= disp) < 0) i += hsize_reg;\n if (htab[i] === fcode) {\n ent = codetab[i];\n continue outer_loop;\n }\n } while (htab[i] >= 0);\n }\n output(ent, outs);\n ent = c;\n if (free_ent < 1 << BITS) {\n codetab[i] = free_ent++; // code -> hashtable\n htab[i] = fcode;\n } else {\n cl_block(outs);\n }\n }\n\n // Put out the final code.\n output(ent, outs);\n output(EOFCode, outs);\n }\n\n function encode(outs) {\n outs.writeByte(initCodeSize); // write \"initial code size\" byte\n remaining = width * height; // reset navigation variables\n curPixel = 0;\n compress(initCodeSize + 1, outs); // compress and write the pixel data\n outs.writeByte(0); // write block terminator\n }\n\n // Flush the packet to disk, and reset the accumulator\n function flush_char(outs) {\n if (a_count > 0) {\n outs.writeByte(a_count);\n outs.writeBytes(accum, 0, a_count);\n a_count = 0;\n }\n }\n\n function MAXCODE(n_bits) {\n return (1 << n_bits) - 1;\n }\n\n // Return the next pixel from the image\n function nextPixel() {\n if (remaining === 0) return EOF;\n --remaining;\n var pix = pixels[curPixel++];\n return pix & 0xff;\n }\n\n function output(code, outs) {\n cur_accum &= masks[cur_bits];\n\n if (cur_bits > 0) cur_accum |= (code << cur_bits);\n else cur_accum = code;\n\n cur_bits += n_bits;\n\n while (cur_bits >= 8) {\n char_out((cur_accum & 0xff), outs);\n cur_accum >>= 8;\n cur_bits -= 8;\n }\n\n // If the next entry is going to be too big for the code size,\n // then increase it, if possible.\n if (free_ent > maxcode || clear_flg) {\n if (clear_flg) {\n maxcode = MAXCODE(n_bits = g_init_bits);\n clear_flg = false;\n } else {\n ++n_bits;\n if (n_bits == BITS) maxcode = 1 << BITS;\n else maxcode = MAXCODE(n_bits);\n }\n }\n\n if (code == EOFCode) {\n // At EOF, write the rest of the buffer.\n while (cur_bits > 0) {\n char_out((cur_accum & 0xff), outs);\n cur_accum >>= 8;\n cur_bits -= 8;\n }\n flush_char(outs);\n }\n }\n\n this.encode = encode;\n}\n\nmodule.exports = LZWEncoder;\n", "/*\n GIFEncoder.js\n\n Authors\n Kevin Weiner (original Java version - kweiner@fmsware.com)\n Thibault Imbert (AS3 version - bytearray.org)\n Johan Nordberg (JS version - code@johan-nordberg.com)\n Todd Wolfson (Implemented streams - todd@twolfson.com)\n*/\n\nvar assert = require('assert');\nvar EventEmitter = require('events').EventEmitter;\nvar ReadableStream = require('readable-stream');\nvar util = require('util');\n\nvar NeuQuant = require('./TypedNeuQuant.js');\nvar LZWEncoder = require('./LZWEncoder.js');\n\n// DEV: By using a capacitor, we prevent creating a data event for every byte written\nfunction ByteCapacitor(options) {\n // Inherit from ReadableStream\n ReadableStream.call(this, options);\n\n // Start with an empty buffer and allow writes\n this.okayToPush = true;\n this.resetData();\n}\nutil.inherits(ByteCapacitor, ReadableStream);\n\nByteCapacitor.prototype._read = function () {\n // The output is controlled by the input provided by methods.\n // If we exceed the highwater mark, we will raise an error.\n this.okayToPush = true;\n};\n\nByteCapacitor.prototype.resetData = function () {\n this.data = [];\n};\n\nByteCapacitor.prototype.flushData = function () {\n // If we are not okay to push, emit an error\n if (!this.okayToPush) {\n var err = new Error('GIF memory limit exceeded. Please `read` from GIF before writing additional frames/information.');\n return this.emit('error', err);\n }\n\n // Otherwise, push out the new buffer\n var buff = new Buffer(this.data);\n this.resetData();\n this.okayToPush = this.push(buff);\n};\n\nByteCapacitor.prototype.writeByte = function (val) {\n this.data.push(val);\n};\n\nByteCapacitor.prototype.writeUTFBytes = function (string) {\n for (var l = string.length, i = 0; i < l; i++) {\n this.writeByte(string.charCodeAt(i));\n }\n};\n\nByteCapacitor.prototype.writeBytes = function (array, offset, length) {\n for (var l = length || array.length, i = offset || 0; i < l; i++) {\n this.writeByte(array[i]);\n }\n};\n\nfunction GIFEncoder(width, height, options) {\n // Fallback options\n options = options || {};\n\n // Inherit from ByteCapacitor immediately\n // https://github.com/isaacs/readable-stream/blob/v1.1.9/lib/_stream_readable.js#L60-L63\n var hwm = options.highWaterMark;\n ByteCapacitor.call(this, {\n // Allow for up to 64kB of GIFfy-goodness\n highWaterMark: (hwm || hwm === 0) ? hwm : 64 * 1024\n });\n\n // image size\n this.width = ~~width;\n this.height = ~~height;\n\n // transparent color if given\n this.transparent = null;\n\n // transparent index in color table\n this.transIndex = 0;\n\n // -1 = no repeat, 0 = forever. anything else is repeat count\n this.repeat = -1;\n\n // frame delay (hundredths)\n this.delay = 0;\n\n this.pixels = null; // BGR byte array from frame\n this.indexedPixels = null; // converted frame indexed to palette\n this.colorDepth = null; // number of bit planes\n this.colorTab = null; // RGB palette\n this.usedEntry = []; // active palette entries\n this.palSize = 7; // color table size (bits-1)\n this.dispose = -1; // disposal code (-1 = use default)\n this.firstFrame = true;\n this.sample = 10; // default sample interval for quantizer\n\n // When we encounter a header, new frame, or stop, emit data\n var that = this;\n function flushData() {\n that.flushData();\n }\n this.on('writeHeader#stop', flushData);\n this.on('frame#stop', flushData);\n this.on('finish#stop', function finishGif () {\n // Flush the data\n flushData();\n\n // Close the gif\n that.push(null);\n });\n}\nutil.inherits(GIFEncoder, ByteCapacitor);\n\n/*\n Sets the delay time between each frame, or changes it for subsequent frames\n (applies to last frame added)\n*/\nGIFEncoder.prototype.setDelay = function(milliseconds) {\n this.delay = Math.round(milliseconds / 10);\n};\n\n/*\n Sets frame rate in frames per second.\n*/\nGIFEncoder.prototype.setFrameRate = function(fps) {\n this.delay = Math.round(100 / fps);\n};\n\n/*\n Sets the GIF frame disposal code for the last added frame and any\n subsequent frames.\n\n Default is 0 if no transparent color has been set, otherwise 2.\n*/\nGIFEncoder.prototype.setDispose = function(disposalCode) {\n if (disposalCode >= 0) this.dispose = disposalCode;\n};\n\n/*\n Sets the number of times the set of GIF frames should be played.\n\n -1 = play once\n 0 = repeat indefinitely\n\n Default is -1\n\n Must be invoked before the first image is added\n*/\n\nGIFEncoder.prototype.setRepeat = function(repeat) {\n this.repeat = repeat;\n};\n\n/*\n Sets the transparent color for the last added frame and any subsequent\n frames. Since all colors are subject to modification in the quantization\n process, the color in the final palette for each frame closest to the given\n color becomes the transparent color for that frame. May be set to null to\n indicate no transparent color.\n*/\nGIFEncoder.prototype.setTransparent = function(color) {\n this.transparent = color;\n};\n\n// Custom methods for performance hacks around streaming GIF data pieces without re-analyzing/loading\nGIFEncoder.prototype.analyzeImage = function (imageData) {\n // convert to correct format if necessary\n this.setImagePixels(this.removeAlphaChannel(imageData));\n this.analyzePixels(); // build color table & map pixels\n};\n\nGIFEncoder.prototype.writeImageInfo = function () {\n if (this.firstFrame) {\n this.writeLSD(); // logical screen descriptior\n this.writePalette(); // global color table\n if (this.repeat >= 0) {\n // use NS app extension to indicate reps\n this.writeNetscapeExt();\n }\n }\n\n this.writeGraphicCtrlExt(); // write graphic control extension\n this.writeImageDesc(); // image descriptor\n if (!this.firstFrame) this.writePalette(); // local color table\n\n // DEV: This was originally after outputImage but it does not affect order it seems\n this.firstFrame = false;\n};\n\nGIFEncoder.prototype.outputImage = function () {\n this.writePixels(); // encode and write pixel data\n};\n\n/*\n Adds next GIF frame. The frame is not written immediately, but is\n actually deferred until the next frame is received so that timing\n data can be inserted. Invoking finish() flushes all frames.\n*/\nGIFEncoder.prototype.addFrame = function(imageData) {\n this.emit('frame#start');\n\n this.analyzeImage(imageData);\n this.writeImageInfo();\n this.outputImage();\n\n this.emit('frame#stop');\n};\n\n/*\n Adds final trailer to the GIF stream, if you don't call the finish method\n the GIF stream will not be valid.\n*/\nGIFEncoder.prototype.finish = function() {\n this.emit('finish#start');\n this.writeByte(0x3b); // gif trailer\n this.emit('finish#stop');\n};\n\n/*\n Sets quality of color quantization (conversion of images to the maximum 256\n colors allowed by the GIF specification). Lower values (minimum = 1)\n produce better colors, but slow processing significantly. 10 is the\n default, and produces good color mapping at reasonable speeds. Values\n greater than 20 do not yield significant improvements in speed.\n*/\nGIFEncoder.prototype.setQuality = function(quality) {\n if (quality < 1) quality = 1;\n this.sample = quality;\n};\n\n/*\n Writes GIF file header\n*/\nGIFEncoder.prototype.writeHeader = function() {\n this.emit('writeHeader#start');\n this.writeUTFBytes(\"GIF89a\");\n this.emit('writeHeader#stop');\n};\n\n/*\n Analyzes current frame colors and creates color map.\n*/\nGIFEncoder.prototype.analyzePixels = function() {\n var len = this.pixels.length;\n var nPix = len / 3;\n\n // TODO: Re-use indexedPixels\n this.indexedPixels = new Uint8Array(nPix);\n\n var imgq = new NeuQuant(this.pixels, this.sample);\n imgq.buildColormap(); // create reduced palette\n this.colorTab = imgq.getColormap();\n\n // map image pixels to new palette\n var k = 0;\n for (var j = 0; j < nPix; j++) {\n var index = imgq.lookupRGB(\n this.pixels[k++] & 0xff,\n this.pixels[k++] & 0xff,\n this.pixels[k++] & 0xff\n );\n this.usedEntry[index] = true;\n this.indexedPixels[j] = index;\n }\n\n this.pixels = null;\n this.colorDepth = 8;\n this.palSize = 7;\n\n // get closest match to transparent color if specified\n if (this.transparent !== null) {\n this.transIndex = this.findClosest(this.transparent);\n }\n};\n\n/*\n Returns index of palette color closest to c\n*/\nGIFEncoder.prototype.findClosest = function(c) {\n if (this.colorTab === null) return -1;\n\n var r = (c & 0xFF0000) >> 16;\n var g = (c & 0x00FF00) >> 8;\n var b = (c & 0x0000FF);\n var minpos = 0;\n var dmin = 256 * 256 * 256;\n var len = this.colorTab.length;\n\n for (var i = 0; i < len;) {\n var dr = r - (this.colorTab[i++] & 0xff);\n var dg = g - (this.colorTab[i++] & 0xff);\n var db = b - (this.colorTab[i] & 0xff);\n var d = dr * dr + dg * dg + db * db;\n var index = i / 3;\n if (this.usedEntry[index] && (d < dmin)) {\n dmin = d;\n minpos = index;\n }\n i++;\n }\n\n return minpos;\n};\n\n/*\n Extracts image pixels into byte array pixels\n (removes alphachannel from canvas imagedata)\n*/\nGIFEncoder.prototype.removeAlphaChannel = function (data) {\n var w = this.width;\n var h = this.height;\n var pixels = new Uint8Array(w * h * 3);\n\n var count = 0;\n\n for (var i = 0; i < h; i++) {\n for (var j = 0; j < w; j++) {\n var b = (i * w * 4) + j * 4;\n pixels[count++] = data[b];\n pixels[count++] = data[b+1];\n pixels[count++] = data[b+2];\n }\n }\n\n return pixels;\n};\n\nGIFEncoder.prototype.setImagePixels = function(pixels) {\n this.pixels = pixels;\n};\n\n/*\n Writes Graphic Control Extension\n*/\nGIFEncoder.prototype.writeGraphicCtrlExt = function() {\n this.writeByte(0x21); // extension introducer\n this.writeByte(0xf9); // GCE label\n this.writeByte(4); // data block size\n\n var transp, disp;\n if (this.transparent === null) {\n transp = 0;\n disp = 0; // dispose = no action\n } else {\n transp = 1;\n disp = 2; // force clear if using transparent color\n }\n\n if (this.dispose >= 0) {\n disp = dispose & 7; // user override\n }\n disp <<= 2;\n\n // packed fields\n this.writeByte(\n 0 | // 1:3 reserved\n disp | // 4:6 disposal\n 0 | // 7 user input - 0 = none\n transp // 8 transparency flag\n );\n\n this.writeShort(this.delay); // delay x 1/100 sec\n this.writeByte(this.transIndex); // transparent color index\n this.writeByte(0); // block terminator\n};\n\n/*\n Writes Image Descriptor\n*/\nGIFEncoder.prototype.writeImageDesc = function() {\n this.writeByte(0x2c); // image separator\n this.writeShort(0); // image position x,y = 0,0\n this.writeShort(0);\n this.writeShort(this.width); // image size\n this.writeShort(this.height);\n\n // packed fields\n if (this.firstFrame) {\n // no LCT - GCT is used for first (or only) frame\n this.writeByte(0);\n } else {\n // specify normal LCT\n this.writeByte(\n 0x80 | // 1 local color table 1=yes\n 0 | // 2 interlace - 0=no\n 0 | // 3 sorted - 0=no\n 0 | // 4-5 reserved\n this.palSize // 6-8 size of color table\n );\n }\n};\n\n/*\n Writes Logical Screen Descriptor\n*/\nGIFEncoder.prototype.writeLSD = function() {\n // logical screen size\n this.writeShort(this.width);\n this.writeShort(this.height);\n\n // packed fields\n this.writeByte(\n 0x80 | // 1 : global color table flag = 1 (gct used)\n 0x70 | // 2-4 : color resolution = 7\n 0x00 | // 5 : gct sort flag = 0\n this.palSize // 6-8 : gct size\n );\n\n this.writeByte(0); // background color index\n this.writeByte(0); // pixel aspect ratio - assume 1:1\n};\n\n/*\n Writes Netscape application extension to define repeat count.\n*/\nGIFEncoder.prototype.writeNetscapeExt = function() {\n this.writeByte(0x21); // extension introducer\n this.writeByte(0xff); // app extension label\n this.writeByte(11); // block size\n this.writeUTFBytes('NETSCAPE2.0'); // app id + auth code\n this.writeByte(3); // sub-block size\n this.writeByte(1); // loop sub-block id\n this.writeShort(this.repeat); // loop count (extra iterations, 0=repeat forever)\n this.writeByte(0); // block terminator\n};\n\n/*\n Writes color table\n*/\nGIFEncoder.prototype.writePalette = function() {\n this.writeBytes(this.colorTab);\n var n = (3 * 256) - this.colorTab.length;\n for (var i = 0; i < n; i++)\n this.writeByte(0);\n};\n\nGIFEncoder.prototype.writeShort = function(pValue) {\n this.writeByte(pValue & 0xFF);\n this.writeByte((pValue >> 8) & 0xFF);\n};\n\n/*\n Encodes and writes pixel data\n*/\nGIFEncoder.prototype.writePixels = function() {\n var enc = new LZWEncoder(this.width, this.height, this.indexedPixels, this.colorDepth);\n enc.encode(this);\n};\n\n/*\n Retrieves the GIF stream\n*/\nGIFEncoder.prototype.stream = function() {\n return this;\n};\n\nGIFEncoder.ByteCapacitor = ByteCapacitor;\n\nmodule.exports = GIFEncoder;\n", "/*\n Copyright (c) 2008, Adobe Systems Incorporated\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without \n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright notice, \n this list of conditions and the following disclaimer.\n \n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the \n documentation and/or other materials provided with the distribution.\n \n * Neither the name of Adobe Systems Incorporated nor the names of its \n contributors may be used to endorse or promote products derived from \n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR \n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*\nJPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n\nBasic GUI blocking jpeg encoder\n*/\n\nvar btoa = btoa || function(buf) {\n return Buffer.from(buf).toString('base64');\n};\n\nfunction JPEGEncoder(quality) {\n var self = this;\n\tvar fround = Math.round;\n\tvar ffloor = Math.floor;\n\tvar YTable = new Array(64);\n\tvar UVTable = new Array(64);\n\tvar fdtbl_Y = new Array(64);\n\tvar fdtbl_UV = new Array(64);\n\tvar YDC_HT;\n\tvar UVDC_HT;\n\tvar YAC_HT;\n\tvar UVAC_HT;\n\t\n\tvar bitcode = new Array(65535);\n\tvar category = new Array(65535);\n\tvar outputfDCTQuant = new Array(64);\n\tvar DU = new Array(64);\n\tvar byteout = [];\n\tvar bytenew = 0;\n\tvar bytepos = 7;\n\t\n\tvar YDU = new Array(64);\n\tvar UDU = new Array(64);\n\tvar VDU = new Array(64);\n\tvar clt = new Array(256);\n\tvar RGB_YUV_TABLE = new Array(2048);\n\tvar currentQuality;\n\t\n\tvar ZigZag = [\n\t\t\t 0, 1, 5, 6,14,15,27,28,\n\t\t\t 2, 4, 7,13,16,26,29,42,\n\t\t\t 3, 8,12,17,25,30,41,43,\n\t\t\t 9,11,18,24,31,40,44,53,\n\t\t\t10,19,23,32,39,45,52,54,\n\t\t\t20,22,33,38,46,51,55,60,\n\t\t\t21,34,37,47,50,56,59,61,\n\t\t\t35,36,48,49,57,58,62,63\n\t\t];\n\t\n\tvar std_dc_luminance_nrcodes = [0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0];\n\tvar std_dc_luminance_values = [0,1,2,3,4,5,6,7,8,9,10,11];\n\tvar std_ac_luminance_nrcodes = [0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d];\n\tvar std_ac_luminance_values = [\n\t\t\t0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,\n\t\t\t0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,\n\t\t\t0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,\n\t\t\t0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,\n\t\t\t0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,\n\t\t\t0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,\n\t\t\t0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,\n\t\t\t0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,\n\t\t\t0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,\n\t\t\t0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,\n\t\t\t0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,\n\t\t\t0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,\n\t\t\t0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,\n\t\t\t0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,\n\t\t\t0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,\n\t\t\t0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,\n\t\t\t0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,\n\t\t\t0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,\n\t\t\t0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,\n\t\t\t0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,\n\t\t\t0xf9,0xfa\n\t\t];\n\t\n\tvar std_dc_chrominance_nrcodes = [0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0];\n\tvar std_dc_chrominance_values = [0,1,2,3,4,5,6,7,8,9,10,11];\n\tvar std_ac_chrominance_nrcodes = [0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77];\n\tvar std_ac_chrominance_values = [\n\t\t\t0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,\n\t\t\t0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,\n\t\t\t0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,\n\t\t\t0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,\n\t\t\t0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,\n\t\t\t0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,\n\t\t\t0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,\n\t\t\t0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,\n\t\t\t0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,\n\t\t\t0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,\n\t\t\t0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,\n\t\t\t0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,\n\t\t\t0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,\n\t\t\t0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,\n\t\t\t0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,\n\t\t\t0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,\n\t\t\t0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,\n\t\t\t0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,\n\t\t\t0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,\n\t\t\t0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,\n\t\t\t0xf9,0xfa\n\t\t];\n\t\n\tfunction initQuantTables(sf){\n\t\t\tvar YQT = [\n\t\t\t\t16, 11, 10, 16, 24, 40, 51, 61,\n\t\t\t\t12, 12, 14, 19, 26, 58, 60, 55,\n\t\t\t\t14, 13, 16, 24, 40, 57, 69, 56,\n\t\t\t\t14, 17, 22, 29, 51, 87, 80, 62,\n\t\t\t\t18, 22, 37, 56, 68,109,103, 77,\n\t\t\t\t24, 35, 55, 64, 81,104,113, 92,\n\t\t\t\t49, 64, 78, 87,103,121,120,101,\n\t\t\t\t72, 92, 95, 98,112,100,103, 99\n\t\t\t];\n\t\t\t\n\t\t\tfor (var i = 0; i < 64; i++) {\n\t\t\t\tvar t = ffloor((YQT[i]*sf+50)/100);\n\t\t\t\tif (t < 1) {\n\t\t\t\t\tt = 1;\n\t\t\t\t} else if (t > 255) {\n\t\t\t\t\tt = 255;\n\t\t\t\t}\n\t\t\t\tYTable[ZigZag[i]] = t;\n\t\t\t}\n\t\t\tvar UVQT = [\n\t\t\t\t17, 18, 24, 47, 99, 99, 99, 99,\n\t\t\t\t18, 21, 26, 66, 99, 99, 99, 99,\n\t\t\t\t24, 26, 56, 99, 99, 99, 99, 99,\n\t\t\t\t47, 66, 99, 99, 99, 99, 99, 99,\n\t\t\t\t99, 99, 99, 99, 99, 99, 99, 99,\n\t\t\t\t99, 99, 99, 99, 99, 99, 99, 99,\n\t\t\t\t99, 99, 99, 99, 99, 99, 99, 99,\n\t\t\t\t99, 99, 99, 99, 99, 99, 99, 99\n\t\t\t];\n\t\t\tfor (var j = 0; j < 64; j++) {\n\t\t\t\tvar u = ffloor((UVQT[j]*sf+50)/100);\n\t\t\t\tif (u < 1) {\n\t\t\t\t\tu = 1;\n\t\t\t\t} else if (u > 255) {\n\t\t\t\t\tu = 255;\n\t\t\t\t}\n\t\t\t\tUVTable[ZigZag[j]] = u;\n\t\t\t}\n\t\t\tvar aasf = [\n\t\t\t\t1.0, 1.387039845, 1.306562965, 1.175875602,\n\t\t\t\t1.0, 0.785694958, 0.541196100, 0.275899379\n\t\t\t];\n\t\t\tvar k = 0;\n\t\t\tfor (var row = 0; row < 8; row++)\n\t\t\t{\n\t\t\t\tfor (var col = 0; col < 8; col++)\n\t\t\t\t{\n\t\t\t\t\tfdtbl_Y[k] = (1.0 / (YTable [ZigZag[k]] * aasf[row] * aasf[col] * 8.0));\n\t\t\t\t\tfdtbl_UV[k] = (1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0));\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction computeHuffmanTbl(nrcodes, std_table){\n\t\t\tvar codevalue = 0;\n\t\t\tvar pos_in_table = 0;\n\t\t\tvar HT = new Array();\n\t\t\tfor (var k = 1; k <= 16; k++) {\n\t\t\t\tfor (var j = 1; j <= nrcodes[k]; j++) {\n\t\t\t\t\tHT[std_table[pos_in_table]] = [];\n\t\t\t\t\tHT[std_table[pos_in_table]][0] = codevalue;\n\t\t\t\t\tHT[std_table[pos_in_table]][1] = k;\n\t\t\t\t\tpos_in_table++;\n\t\t\t\t\tcodevalue++;\n\t\t\t\t}\n\t\t\t\tcodevalue*=2;\n\t\t\t}\n\t\t\treturn HT;\n\t\t}\n\t\t\n\t\tfunction initHuffmanTbl()\n\t\t{\n\t\t\tYDC_HT = computeHuffmanTbl(std_dc_luminance_nrcodes,std_dc_luminance_values);\n\t\t\tUVDC_HT = computeHuffmanTbl(std_dc_chrominance_nrcodes,std_dc_chrominance_values);\n\t\t\tYAC_HT = computeHuffmanTbl(std_ac_luminance_nrcodes,std_ac_luminance_values);\n\t\t\tUVAC_HT = computeHuffmanTbl(std_ac_chrominance_nrcodes,std_ac_chrominance_values);\n\t\t}\n\t\n\t\tfunction initCategoryNumber()\n\t\t{\n\t\t\tvar nrlower = 1;\n\t\t\tvar nrupper = 2;\n\t\t\tfor (var cat = 1; cat <= 15; cat++) {\n\t\t\t\t//Positive numbers\n\t\t\t\tfor (var nr = nrlower; nr>0] \t= 38470 * i;\n\t\t\t\tRGB_YUV_TABLE[(i+ 512)>>0] \t= 7471 * i + 0x8000;\n\t\t\t\tRGB_YUV_TABLE[(i+ 768)>>0] \t= -11059 * i;\n\t\t\t\tRGB_YUV_TABLE[(i+1024)>>0] \t= -21709 * i;\n\t\t\t\tRGB_YUV_TABLE[(i+1280)>>0] \t= 32768 * i + 0x807FFF;\n\t\t\t\tRGB_YUV_TABLE[(i+1536)>>0] \t= -27439 * i;\n\t\t\t\tRGB_YUV_TABLE[(i+1792)>>0] \t= - 5329 * i;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// IO functions\n\t\tfunction writeBits(bs)\n\t\t{\n\t\t\tvar value = bs[0];\n\t\t\tvar posval = bs[1]-1;\n\t\t\twhile ( posval >= 0 ) {\n\t\t\t\tif (value & (1 << posval) ) {\n\t\t\t\t\tbytenew |= (1 << bytepos);\n\t\t\t\t}\n\t\t\t\tposval--;\n\t\t\t\tbytepos--;\n\t\t\t\tif (bytepos < 0) {\n\t\t\t\t\tif (bytenew == 0xFF) {\n\t\t\t\t\t\twriteByte(0xFF);\n\t\t\t\t\t\twriteByte(0);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\twriteByte(bytenew);\n\t\t\t\t\t}\n\t\t\t\t\tbytepos=7;\n\t\t\t\t\tbytenew=0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\tfunction writeByte(value)\n\t\t{\n\t\t\t//byteout.push(clt[value]); // write char directly instead of converting later\n byteout.push(value);\n\t\t}\n\t\n\t\tfunction writeWord(value)\n\t\t{\n\t\t\twriteByte((value>>8)&0xFF);\n\t\t\twriteByte((value )&0xFF);\n\t\t}\n\t\t\n\t\t// DCT & quantization core\n\t\tfunction fDCTQuant(data, fdtbl)\n\t\t{\n\t\t\tvar d0, d1, d2, d3, d4, d5, d6, d7;\n\t\t\t/* Pass 1: process rows. */\n\t\t\tvar dataOff=0;\n\t\t\tvar i;\n\t\t\tvar I8 = 8;\n\t\t\tvar I64 = 64;\n\t\t\tfor (i=0; i 0.0) ? ((fDCTQuant + 0.5)|0) : ((fDCTQuant - 0.5)|0);\n\t\t\t\t//outputfDCTQuant[i] = fround(fDCTQuant);\n\n\t\t\t}\n\t\t\treturn outputfDCTQuant;\n\t\t}\n\t\t\n\t\tfunction writeAPP0()\n\t\t{\n\t\t\twriteWord(0xFFE0); // marker\n\t\t\twriteWord(16); // length\n\t\t\twriteByte(0x4A); // J\n\t\t\twriteByte(0x46); // F\n\t\t\twriteByte(0x49); // I\n\t\t\twriteByte(0x46); // F\n\t\t\twriteByte(0); // = \"JFIF\",'\\0'\n\t\t\twriteByte(1); // versionhi\n\t\t\twriteByte(1); // versionlo\n\t\t\twriteByte(0); // xyunits\n\t\t\twriteWord(1); // xdensity\n\t\t\twriteWord(1); // ydensity\n\t\t\twriteByte(0); // thumbnwidth\n\t\t\twriteByte(0); // thumbnheight\n\t\t}\n\n\t\tfunction writeAPP1(exifBuffer) {\n\t\t\tif (!exifBuffer) return;\n\n\t\t\twriteWord(0xFFE1); // APP1 marker\n\n\t\t\tif (exifBuffer[0] === 0x45 &&\n\t\t\t\t\texifBuffer[1] === 0x78 &&\n\t\t\t\t\texifBuffer[2] === 0x69 &&\n\t\t\t\t\texifBuffer[3] === 0x66) {\n\t\t\t\t// Buffer already starts with EXIF, just use it directly\n\t\t\t\twriteWord(exifBuffer.length + 2); // length is buffer + length itself!\n\t\t\t} else {\n\t\t\t\t// Buffer doesn't start with EXIF, write it for them\n\t\t\t\twriteWord(exifBuffer.length + 5 + 2); // length is buffer + EXIF\\0 + length itself!\n\t\t\t\twriteByte(0x45); // E\n\t\t\t\twriteByte(0x78); // X\n\t\t\t\twriteByte(0x69); // I\n\t\t\t\twriteByte(0x66); // F\n\t\t\t\twriteByte(0); // = \"EXIF\",'\\0'\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < exifBuffer.length; i++) {\n\t\t\t\twriteByte(exifBuffer[i]);\n\t\t\t}\n\t\t}\n\n\t\tfunction writeSOF0(width, height)\n\t\t{\n\t\t\twriteWord(0xFFC0); // marker\n\t\t\twriteWord(17); // length, truecolor YUV JPG\n\t\t\twriteByte(8); // precision\n\t\t\twriteWord(height);\n\t\t\twriteWord(width);\n\t\t\twriteByte(3); // nrofcomponents\n\t\t\twriteByte(1); // IdY\n\t\t\twriteByte(0x11); // HVY\n\t\t\twriteByte(0); // QTY\n\t\t\twriteByte(2); // IdU\n\t\t\twriteByte(0x11); // HVU\n\t\t\twriteByte(1); // QTU\n\t\t\twriteByte(3); // IdV\n\t\t\twriteByte(0x11); // HVV\n\t\t\twriteByte(1); // QTV\n\t\t}\n\t\n\t\tfunction writeDQT()\n\t\t{\n\t\t\twriteWord(0xFFDB); // marker\n\t\t\twriteWord(132);\t // length\n\t\t\twriteByte(0);\n\t\t\tfor (var i=0; i<64; i++) {\n\t\t\t\twriteByte(YTable[i]);\n\t\t\t}\n\t\t\twriteByte(1);\n\t\t\tfor (var j=0; j<64; j++) {\n\t\t\t\twriteByte(UVTable[j]);\n\t\t\t}\n\t\t}\n\t\n\t\tfunction writeDHT()\n\t\t{\n\t\t\twriteWord(0xFFC4); // marker\n\t\t\twriteWord(0x01A2); // length\n\t\n\t\t\twriteByte(0); // HTYDCinfo\n\t\t\tfor (var i=0; i<16; i++) {\n\t\t\t\twriteByte(std_dc_luminance_nrcodes[i+1]);\n\t\t\t}\n\t\t\tfor (var j=0; j<=11; j++) {\n\t\t\t\twriteByte(std_dc_luminance_values[j]);\n\t\t\t}\n\t\n\t\t\twriteByte(0x10); // HTYACinfo\n\t\t\tfor (var k=0; k<16; k++) {\n\t\t\t\twriteByte(std_ac_luminance_nrcodes[k+1]);\n\t\t\t}\n\t\t\tfor (var l=0; l<=161; l++) {\n\t\t\t\twriteByte(std_ac_luminance_values[l]);\n\t\t\t}\n\t\n\t\t\twriteByte(1); // HTUDCinfo\n\t\t\tfor (var m=0; m<16; m++) {\n\t\t\t\twriteByte(std_dc_chrominance_nrcodes[m+1]);\n\t\t\t}\n\t\t\tfor (var n=0; n<=11; n++) {\n\t\t\t\twriteByte(std_dc_chrominance_values[n]);\n\t\t\t}\n\t\n\t\t\twriteByte(0x11); // HTUACinfo\n\t\t\tfor (var o=0; o<16; o++) {\n\t\t\t\twriteByte(std_ac_chrominance_nrcodes[o+1]);\n\t\t\t}\n\t\t\tfor (var p=0; p<=161; p++) {\n\t\t\t\twriteByte(std_ac_chrominance_values[p]);\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction writeCOM(comments)\n\t\t{\n\t\t\tif (typeof comments === \"undefined\" || comments.constructor !== Array) return;\n\t\t\tcomments.forEach(e => {\n\t\t\t\tif (typeof e !== \"string\") return;\n\t\t\t\twriteWord(0xFFFE); // marker\n\t\t\t\tvar l = e.length;\n\t\t\t\twriteWord(l + 2); // length itself as well\n\t\t\t\tvar i;\n\t\t\t\tfor (i = 0; i < l; i++)\n\t\t\t\t\twriteByte(e.charCodeAt(i));\n\t\t\t});\n\t\t}\n\t\n\t\tfunction writeSOS()\n\t\t{\n\t\t\twriteWord(0xFFDA); // marker\n\t\t\twriteWord(12); // length\n\t\t\twriteByte(3); // nrofcomponents\n\t\t\twriteByte(1); // IdY\n\t\t\twriteByte(0); // HTY\n\t\t\twriteByte(2); // IdU\n\t\t\twriteByte(0x11); // HTU\n\t\t\twriteByte(3); // IdV\n\t\t\twriteByte(0x11); // HTV\n\t\t\twriteByte(0); // Ss\n\t\t\twriteByte(0x3f); // Se\n\t\t\twriteByte(0); // Bf\n\t\t}\n\t\t\n\t\tfunction processDU(CDU, fdtbl, DC, HTDC, HTAC){\n\t\t\tvar EOB = HTAC[0x00];\n\t\t\tvar M16zeroes = HTAC[0xF0];\n\t\t\tvar pos;\n\t\t\tvar I16 = 16;\n\t\t\tvar I63 = 63;\n\t\t\tvar I64 = 64;\n\t\t\tvar DU_DCT = fDCTQuant(CDU, fdtbl);\n\t\t\t//ZigZag reorder\n\t\t\tfor (var j=0;j0)&&(DU[end0pos]==0); end0pos--) {};\n\t\t\t//end0pos = first element in reverse order !=0\n\t\t\tif ( end0pos == 0) {\n\t\t\t\twriteBits(EOB);\n\t\t\t\treturn DC;\n\t\t\t}\n\t\t\tvar i = 1;\n\t\t\tvar lng;\n\t\t\twhile ( i <= end0pos ) {\n\t\t\t\tvar startpos = i;\n\t\t\t\tfor (; (DU[i]==0) && (i<=end0pos); ++i) {}\n\t\t\t\tvar nrzeroes = i-startpos;\n\t\t\t\tif ( nrzeroes >= I16 ) {\n\t\t\t\t\tlng = nrzeroes>>4;\n\t\t\t\t\tfor (var nrmarker=1; nrmarker <= lng; ++nrmarker)\n\t\t\t\t\t\twriteBits(M16zeroes);\n\t\t\t\t\tnrzeroes = nrzeroes&0xF;\n\t\t\t\t}\n\t\t\t\tpos = 32767+DU[i];\n\t\t\t\twriteBits(HTAC[(nrzeroes<<4)+category[pos]]);\n\t\t\t\twriteBits(bitcode[pos]);\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif ( end0pos != I63 ) {\n\t\t\t\twriteBits(EOB);\n\t\t\t}\n\t\t\treturn DC;\n\t\t}\n\n\t\tfunction initCharLookupTable(){\n\t\t\tvar sfcc = String.fromCharCode;\n\t\t\tfor(var i=0; i < 256; i++){ ///// ACHTUNG // 255\n\t\t\t\tclt[i] = sfcc(i);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.encode = function(image,quality) // image data object\n\t\t{\n\t\t\tvar time_start = new Date().getTime();\n\t\t\t\n\t\t\tif(quality) setQuality(quality);\n\t\t\t\n\t\t\t// Initialize bit writer\n\t\t\tbyteout = new Array();\n\t\t\tbytenew=0;\n\t\t\tbytepos=7;\n\t\n\t\t\t// Add JPEG headers\n\t\t\twriteWord(0xFFD8); // SOI\n\t\t\twriteAPP0();\n\t\t\twriteCOM(image.comments);\n\t\t\twriteAPP1(image.exifBuffer);\n\t\t\twriteDQT();\n\t\t\twriteSOF0(image.width,image.height);\n\t\t\twriteDHT();\n\t\t\twriteSOS();\n\n\t\n\t\t\t// Encode 8x8 macroblocks\n\t\t\tvar DCY=0;\n\t\t\tvar DCU=0;\n\t\t\tvar DCV=0;\n\t\t\t\n\t\t\tbytenew=0;\n\t\t\tbytepos=7;\n\t\t\t\n\t\t\t\n\t\t\tthis.encode.displayName = \"_encode_\";\n\n\t\t\tvar imageData = image.data;\n\t\t\tvar width = image.width;\n\t\t\tvar height = image.height;\n\n\t\t\tvar quadWidth = width*4;\n\t\t\tvar tripleWidth = width*3;\n\t\t\t\n\t\t\tvar x, y = 0;\n\t\t\tvar r, g, b;\n\t\t\tvar start,p, col,row,pos;\n\t\t\twhile(y < height){\n\t\t\t\tx = 0;\n\t\t\t\twhile(x < quadWidth){\n\t\t\t\tstart = quadWidth * y + x;\n\t\t\t\tp = start;\n\t\t\t\tcol = -1;\n\t\t\t\trow = 0;\n\t\t\t\t\n\t\t\t\tfor(pos=0; pos < 64; pos++){\n\t\t\t\t\trow = pos >> 3;// /8\n\t\t\t\t\tcol = ( pos & 7 ) * 4; // %8\n\t\t\t\t\tp = start + ( row * quadWidth ) + col;\t\t\n\t\t\t\t\t\n\t\t\t\t\tif(y+row >= height){ // padding bottom\n\t\t\t\t\t\tp-= (quadWidth*(y+1+row-height));\n\t\t\t\t\t}\n\n\t\t\t\t\tif(x+col >= quadWidth){ // padding right\t\n\t\t\t\t\t\tp-= ((x+col) - quadWidth +4)\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tr = imageData[ p++ ];\n\t\t\t\t\tg = imageData[ p++ ];\n\t\t\t\t\tb = imageData[ p++ ];\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t/* // calculate YUV values dynamically\n\t\t\t\t\tYDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n\t\t\t\t\tUDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n\t\t\t\t\tVDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n\t\t\t\t\t*/\n\t\t\t\t\t\n\t\t\t\t\t// use lookup table (slightly faster)\n\t\t\t\t\tYDU[pos] = ((RGB_YUV_TABLE[r] + RGB_YUV_TABLE[(g + 256)>>0] + RGB_YUV_TABLE[(b + 512)>>0]) >> 16)-128;\n\t\t\t\t\tUDU[pos] = ((RGB_YUV_TABLE[(r + 768)>>0] + RGB_YUV_TABLE[(g + 1024)>>0] + RGB_YUV_TABLE[(b + 1280)>>0]) >> 16)-128;\n\t\t\t\t\tVDU[pos] = ((RGB_YUV_TABLE[(r + 1280)>>0] + RGB_YUV_TABLE[(g + 1536)>>0] + RGB_YUV_TABLE[(b + 1792)>>0]) >> 16)-128;\n\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tDCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n\t\t\t\tDCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n\t\t\t\tDCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n\t\t\t\tx+=32;\n\t\t\t\t}\n\t\t\t\ty+=8;\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t////////////////////////////////////////////////////////////////\n\t\n\t\t\t// Do the bit alignment of the EOI marker\n\t\t\tif ( bytepos >= 0 ) {\n\t\t\t\tvar fillbits = [];\n\t\t\t\tfillbits[1] = bytepos+1;\n\t\t\t\tfillbits[0] = (1<<(bytepos+1))-1;\n\t\t\t\twriteBits(fillbits);\n\t\t\t}\n\t\n\t\t\twriteWord(0xFFD9); //EOI\n\n\t\t\tif (typeof module === 'undefined') return new Uint8Array(byteout);\n return Buffer.from(byteout);\n\n\t\t\tvar jpegDataUri = 'data:image/jpeg;base64,' + btoa(byteout.join(''));\n\t\t\t\n\t\t\tbyteout = [];\n\t\t\t\n\t\t\t// benchmarking\n\t\t\tvar duration = new Date().getTime() - time_start;\n \t\t//console.log('Encoding time: '+ duration + 'ms');\n \t\t//\n\t\t\t\n\t\t\treturn jpegDataUri\t\t\t\n\t}\n\t\n\tfunction setQuality(quality){\n\t\tif (quality <= 0) {\n\t\t\tquality = 1;\n\t\t}\n\t\tif (quality > 100) {\n\t\t\tquality = 100;\n\t\t}\n\t\t\n\t\tif(currentQuality == quality) return // don't recalc if unchanged\n\t\t\n\t\tvar sf = 0;\n\t\tif (quality < 50) {\n\t\t\tsf = Math.floor(5000 / quality);\n\t\t} else {\n\t\t\tsf = Math.floor(200 - quality*2);\n\t\t}\n\t\t\n\t\tinitQuantTables(sf);\n\t\tcurrentQuality = quality;\n\t\t//console.log('Quality set to: '+quality +'%');\n\t}\n\t\n\tfunction init(){\n\t\tvar time_start = new Date().getTime();\n\t\tif(!quality) quality = 50;\n\t\t// Create tables\n\t\tinitCharLookupTable()\n\t\tinitHuffmanTbl();\n\t\tinitCategoryNumber();\n\t\tinitRGBYUVTable();\n\t\t\n\t\tsetQuality(quality);\n\t\tvar duration = new Date().getTime() - time_start;\n \t//console.log('Initialization '+ duration + 'ms');\n\t}\n\t\n\tinit();\n\t\n};\n\nif (typeof module !== 'undefined') {\n\tmodule.exports = encode;\n} else if (typeof window !== 'undefined') {\n\twindow['jpeg-js'] = window['jpeg-js'] || {};\n\twindow['jpeg-js'].encode = encode;\n}\n\nfunction encode(imgData, qu) {\n if (typeof qu === 'undefined') qu = 50;\n var encoder = new JPEGEncoder(qu);\n\tvar data = encoder.encode(imgData, qu);\n return {\n data: data,\n width: imgData.width,\n height: imgData.height,\n };\n}\n\n// helper function to get the imageData of an existing image on the current page.\nfunction getImageDataFromImage(idOrElement){\n\tvar theImg = (typeof(idOrElement)=='string')? document.getElementById(idOrElement):idOrElement;\n\tvar cvs = document.createElement('canvas');\n\tcvs.width = theImg.width;\n\tcvs.height = theImg.height;\n\tvar ctx = cvs.getContext(\"2d\");\n\tctx.drawImage(theImg,0,0);\n\t\n\treturn (ctx.getImageData(0, 0, cvs.width, cvs.height));\n}\n", "/* -*- tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- /\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\n/*\n Copyright 2011 notmasteryet\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\n// - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n// (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n// - The JFIF specification can be found in the JPEG File Interchange Format\n// (www.w3.org/Graphics/JPEG/jfif3.pdf)\n// - The Adobe Application-Specific JPEG markers in the Supporting the DCT Filters\n// in PostScript Level 2, Technical Note #5116\n// (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n\nvar JpegImage = (function jpegImage() {\n \"use strict\";\n var dctZigZag = new Int32Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63\n ]);\n\n var dctCos1 = 4017 // cos(pi/16)\n var dctSin1 = 799 // sin(pi/16)\n var dctCos3 = 3406 // cos(3*pi/16)\n var dctSin3 = 2276 // sin(3*pi/16)\n var dctCos6 = 1567 // cos(6*pi/16)\n var dctSin6 = 3784 // sin(6*pi/16)\n var dctSqrt2 = 5793 // sqrt(2)\n var dctSqrt1d2 = 2896 // sqrt(2) / 2\n\n function constructor() {\n }\n\n function buildHuffmanTable(codeLengths, values) {\n var k = 0, code = [], i, j, length = 16;\n while (length > 0 && !codeLengths[length - 1])\n length--;\n code.push({children: [], index: 0});\n var p = code[0], q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n if (code.length === 0)\n throw new Error('Could not recreate Huffman Table');\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push(q = {children: [], index: 0});\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push(q = {children: [], index: 0});\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n }\n\n function decodeScan(data, offset,\n frame, components, resetInterval,\n spectralStart, spectralEnd,\n successivePrev, successive, opts) {\n var precision = frame.precision;\n var samplesPerLine = frame.samplesPerLine;\n var scanLines = frame.scanLines;\n var mcusPerLine = frame.mcusPerLine;\n var progressive = frame.progressive;\n var maxH = frame.maxH, maxV = frame.maxV;\n\n var startOffset = offset, bitsData = 0, bitsCount = 0;\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData == 0xFF) {\n var nextByte = data[offset++];\n if (nextByte) {\n throw new Error(\"unexpected marker: \" + ((bitsData << 8) | nextByte).toString(16));\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n function decodeHuffman(tree) {\n var node = tree, bit;\n while ((bit = readBit()) !== null) {\n node = node[bit];\n if (typeof node === 'number')\n return node;\n if (typeof node !== 'object')\n throw new Error(\"invalid huffman sequence\");\n }\n return null;\n }\n function receive(length) {\n var n = 0;\n while (length > 0) {\n var bit = readBit();\n if (bit === null) return;\n n = (n << 1) | bit;\n length--;\n }\n return n;\n }\n function receiveAndExtend(length) {\n var n = receive(length);\n if (n >= 1 << (length - 1))\n return n;\n return n + (-1 << length) + 1;\n }\n function decodeBaseline(component, zz) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t);\n zz[0]= (component.pred += diff);\n var k = 1;\n while (k < 64) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15, r = rs >> 4;\n if (s === 0) {\n if (r < 15)\n break;\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n zz[z] = receiveAndExtend(s);\n k++;\n }\n }\n function decodeDCFirst(component, zz) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : (receiveAndExtend(t) << successive);\n zz[0] = (component.pred += diff);\n }\n function decodeDCSuccessive(component, zz) {\n zz[0] |= readBit() << successive;\n }\n var eobrun = 0;\n function decodeACFirst(component, zz) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n var k = spectralStart, e = spectralEnd;\n while (k <= e) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15, r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n zz[z] = receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n var successiveACState = 0, successiveACNextValue;\n function decodeACSuccessive(component, zz) {\n var k = spectralStart, e = spectralEnd, r = 0;\n while (k <= e) {\n var z = dctZigZag[k];\n var direction = zz[z] < 0 ? -1 : 1;\n switch (successiveACState) {\n case 0: // initial state\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15, r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1)\n throw new Error(\"invalid ACn encoding\");\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (zz[z])\n zz[z] += (readBit() << successive) * direction;\n else {\n r--;\n if (r === 0)\n successiveACState = successiveACState == 2 ? 3 : 0;\n }\n break;\n case 3: // set value for a zero item\n if (zz[z])\n zz[z] += (readBit() << successive) * direction;\n else {\n zz[z] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (zz[z])\n zz[z] += (readBit() << successive) * direction;\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0)\n successiveACState = 0;\n }\n }\n function decodeMcu(component, decode, mcu, row, col) {\n var mcuRow = (mcu / mcusPerLine) | 0;\n var mcuCol = mcu % mcusPerLine;\n var blockRow = mcuRow * component.v + row;\n var blockCol = mcuCol * component.h + col;\n // If the block is missing and we're in tolerant mode, just skip it.\n if (component.blocks[blockRow] === undefined && opts.tolerantDecoding)\n return;\n decode(component, component.blocks[blockRow][blockCol]);\n }\n function decodeBlock(component, decode, mcu) {\n var blockRow = (mcu / component.blocksPerLine) | 0;\n var blockCol = mcu % component.blocksPerLine;\n // If the block is missing and we're in tolerant mode, just skip it.\n if (component.blocks[blockRow] === undefined && opts.tolerantDecoding)\n return;\n decode(component, component.blocks[blockRow][blockCol]);\n }\n\n var componentsLength = components.length;\n var component, i, j, k, n;\n var decodeFn;\n if (progressive) {\n if (spectralStart === 0)\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n else\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n } else {\n decodeFn = decodeBaseline;\n }\n\n var mcu = 0, marker;\n var mcuExpected;\n if (componentsLength == 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n if (!resetInterval) resetInterval = mcuExpected;\n\n var h, v;\n while (mcu < mcuExpected) {\n // reset interval stuff\n for (i = 0; i < componentsLength; i++)\n components[i].pred = 0;\n eobrun = 0;\n\n if (componentsLength == 1) {\n component = components[0];\n for (n = 0; n < resetInterval; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < resetInterval; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n\n // If we've reached our expected MCU's, stop decoding\n if (mcu === mcuExpected) break;\n }\n }\n\n if (mcu === mcuExpected) {\n // Skip trailing bytes at the end of the scan - until we reach the next marker\n do {\n if (data[offset] === 0xFF) {\n if (data[offset + 1] !== 0x00) {\n break;\n }\n }\n offset += 1;\n } while (offset < data.length - 2);\n }\n\n // find marker\n bitsCount = 0;\n marker = (data[offset] << 8) | data[offset + 1];\n if (marker < 0xFF00) {\n throw new Error(\"marker was not found\");\n }\n\n if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx\n offset += 2;\n }\n else\n break;\n }\n\n return offset - startOffset;\n }\n\n function buildComponentData(frame, component) {\n var lines = [];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n // Only 1 used per invocation of this function and garbage collected after invocation, so no need to account for its memory footprint.\n var R = new Int32Array(64), r = new Uint8Array(64);\n\n // A port of poppler's IDCT method which in turn is taken from:\n // Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n // \"Practical Fast 1-D DCT Algorithms with 11 Multiplications\",\n // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n // 988-991.\n function quantizeAndInverse(zz, dataOut, dataIn) {\n var qt = component.quantizationTable;\n var v0, v1, v2, v3, v4, v5, v6, v7, t;\n var p = dataIn;\n var i;\n\n // dequant\n for (i = 0; i < 64; i++)\n p[i] = zz[i] * qt[i];\n\n // inverse DCT on rows\n for (i = 0; i < 8; ++i) {\n var row = 8 * i;\n\n // check for all-zero AC coefficients\n if (p[1 + row] == 0 && p[2 + row] == 0 && p[3 + row] == 0 &&\n p[4 + row] == 0 && p[5 + row] == 0 && p[6 + row] == 0 &&\n p[7 + row] == 0) {\n t = (dctSqrt2 * p[0 + row] + 512) >> 10;\n p[0 + row] = t;\n p[1 + row] = t;\n p[2 + row] = t;\n p[3 + row] = t;\n p[4 + row] = t;\n p[5 + row] = t;\n p[6 + row] = t;\n p[7 + row] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p[0 + row] + 128) >> 8;\n v1 = (dctSqrt2 * p[4 + row] + 128) >> 8;\n v2 = p[2 + row];\n v3 = p[6 + row];\n v4 = (dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128) >> 8;\n v5 = p[3 + row] << 4;\n v6 = p[5 + row] << 4;\n\n // stage 3\n t = (v0 - v1+ 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[0 + row] = v0 + v7;\n p[7 + row] = v0 - v7;\n p[1 + row] = v1 + v6;\n p[6 + row] = v1 - v6;\n p[2 + row] = v2 + v5;\n p[5 + row] = v2 - v5;\n p[3 + row] = v3 + v4;\n p[4 + row] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (i = 0; i < 8; ++i) {\n var col = i;\n\n // check for all-zero AC coefficients\n if (p[1*8 + col] == 0 && p[2*8 + col] == 0 && p[3*8 + col] == 0 &&\n p[4*8 + col] == 0 && p[5*8 + col] == 0 && p[6*8 + col] == 0 &&\n p[7*8 + col] == 0) {\n t = (dctSqrt2 * dataIn[i+0] + 8192) >> 14;\n p[0*8 + col] = t;\n p[1*8 + col] = t;\n p[2*8 + col] = t;\n p[3*8 + col] = t;\n p[4*8 + col] = t;\n p[5*8 + col] = t;\n p[6*8 + col] = t;\n p[7*8 + col] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p[0*8 + col] + 2048) >> 12;\n v1 = (dctSqrt2 * p[4*8 + col] + 2048) >> 12;\n v2 = p[2*8 + col];\n v3 = p[6*8 + col];\n v4 = (dctSqrt1d2 * (p[1*8 + col] - p[7*8 + col]) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p[1*8 + col] + p[7*8 + col]) + 2048) >> 12;\n v5 = p[3*8 + col];\n v6 = p[5*8 + col];\n\n // stage 3\n t = (v0 - v1 + 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[0*8 + col] = v0 + v7;\n p[7*8 + col] = v0 - v7;\n p[1*8 + col] = v1 + v6;\n p[6*8 + col] = v1 - v6;\n p[2*8 + col] = v2 + v5;\n p[5*8 + col] = v2 - v5;\n p[3*8 + col] = v3 + v4;\n p[4*8 + col] = v3 - v4;\n }\n\n // convert to 8-bit integers\n for (i = 0; i < 64; ++i) {\n var sample = 128 + ((p[i] + 8) >> 4);\n dataOut[i] = sample < 0 ? 0 : sample > 0xFF ? 0xFF : sample;\n }\n }\n\n requestMemoryAllocation(samplesPerLine * blocksPerColumn * 8);\n\n var i, j;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n var scanLine = blockRow << 3;\n for (i = 0; i < 8; i++)\n lines.push(new Uint8Array(samplesPerLine));\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n quantizeAndInverse(component.blocks[blockRow][blockCol], r, R);\n\n var offset = 0, sample = blockCol << 3;\n for (j = 0; j < 8; j++) {\n var line = lines[scanLine + j];\n for (i = 0; i < 8; i++)\n line[sample + i] = r[offset++];\n }\n }\n }\n return lines;\n }\n\n function clampTo8bit(a) {\n return a < 0 ? 0 : a > 255 ? 255 : a;\n }\n\n constructor.prototype = {\n load: function load(path) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", path, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = (function() {\n // TODO catch parse error\n var data = new Uint8Array(xhr.response || xhr.mozResponseArrayBuffer);\n this.parse(data);\n if (this.onload)\n this.onload();\n }).bind(this);\n xhr.send(null);\n },\n parse: function parse(data) {\n var maxResolutionInPixels = this.opts.maxResolutionInMP * 1000 * 1000;\n var offset = 0, length = data.length;\n function readUint16() {\n var value = (data[offset] << 8) | data[offset + 1];\n offset += 2;\n return value;\n }\n function readDataBlock() {\n var length = readUint16();\n var array = data.subarray(offset, offset + length - 2);\n offset += array.length;\n return array;\n }\n function prepareComponents(frame) {\n // According to the JPEG standard, the sampling factor must be between 1 and 4\n // See https://github.com/libjpeg-turbo/libjpeg-turbo/blob/9abeff46d87bd201a952e276f3e4339556a403a3/libjpeg.txt#L1138-L1146\n var maxH = 1, maxV = 1;\n var component, componentId;\n for (componentId in frame.components) {\n if (frame.components.hasOwnProperty(componentId)) {\n component = frame.components[componentId];\n if (maxH < component.h) maxH = component.h;\n if (maxV < component.v) maxV = component.v;\n }\n }\n var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / maxH);\n var mcusPerColumn = Math.ceil(frame.scanLines / 8 / maxV);\n for (componentId in frame.components) {\n if (frame.components.hasOwnProperty(componentId)) {\n component = frame.components[componentId];\n var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / maxH);\n var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / maxV);\n var blocksPerLineForMcu = mcusPerLine * component.h;\n var blocksPerColumnForMcu = mcusPerColumn * component.v;\n var blocksToAllocate = blocksPerColumnForMcu * blocksPerLineForMcu;\n var blocks = [];\n\n // Each block is a Int32Array of length 64 (4 x 64 = 256 bytes)\n requestMemoryAllocation(blocksToAllocate * 256);\n\n for (var i = 0; i < blocksPerColumnForMcu; i++) {\n var row = [];\n for (var j = 0; j < blocksPerLineForMcu; j++)\n row.push(new Int32Array(64));\n blocks.push(row);\n }\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n component.blocks = blocks;\n }\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n var jfif = null;\n var adobe = null;\n var pixels = null;\n var frame, resetInterval;\n var quantizationTables = [], frames = [];\n var huffmanTablesAC = [], huffmanTablesDC = [];\n var fileMarker = readUint16();\n var malformedDataOffset = -1;\n this.comments = [];\n if (fileMarker != 0xFFD8) { // SOI (Start of Image)\n throw new Error(\"SOI not found\");\n }\n\n fileMarker = readUint16();\n while (fileMarker != 0xFFD9) { // EOI (End of image)\n var i, j, l;\n switch(fileMarker) {\n case 0xFF00: break;\n case 0xFFE0: // APP0 (Application Specific)\n case 0xFFE1: // APP1\n case 0xFFE2: // APP2\n case 0xFFE3: // APP3\n case 0xFFE4: // APP4\n case 0xFFE5: // APP5\n case 0xFFE6: // APP6\n case 0xFFE7: // APP7\n case 0xFFE8: // APP8\n case 0xFFE9: // APP9\n case 0xFFEA: // APP10\n case 0xFFEB: // APP11\n case 0xFFEC: // APP12\n case 0xFFED: // APP13\n case 0xFFEE: // APP14\n case 0xFFEF: // APP15\n case 0xFFFE: // COM (Comment)\n var appData = readDataBlock();\n\n if (fileMarker === 0xFFFE) {\n var comment = String.fromCharCode.apply(null, appData);\n this.comments.push(comment);\n }\n\n if (fileMarker === 0xFFE0) {\n if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 &&\n appData[3] === 0x46 && appData[4] === 0) { // 'JFIF\\x00'\n jfif = {\n version: { major: appData[5], minor: appData[6] },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xFFE1) {\n if (appData[0] === 0x45 &&\n appData[1] === 0x78 &&\n appData[2] === 0x69 &&\n appData[3] === 0x66 &&\n appData[4] === 0) { // 'EXIF\\x00'\n this.exifBuffer = appData.subarray(5, appData.length);\n }\n }\n\n if (fileMarker === 0xFFEE) {\n if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F &&\n appData[3] === 0x62 && appData[4] === 0x65 && appData[5] === 0) { // 'Adobe\\x00'\n adobe = {\n version: appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11]\n };\n }\n }\n break;\n\n case 0xFFDB: // DQT (Define Quantization Tables)\n var quantizationTablesLength = readUint16();\n var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n while (offset < quantizationTablesEnd) {\n var quantizationTableSpec = data[offset++];\n requestMemoryAllocation(64 * 4);\n var tableData = new Int32Array(64);\n if ((quantizationTableSpec >> 4) === 0) { // 8 bit values\n for (j = 0; j < 64; j++) {\n var z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if ((quantizationTableSpec >> 4) === 1) { //16 bit\n for (j = 0; j < 64; j++) {\n var z = dctZigZag[j];\n tableData[z] = readUint16();\n }\n } else\n throw new Error(\"DQT: invalid table spec\");\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xFFC0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xFFC1: // SOF1 (Start of Frame, Extended DCT)\n case 0xFFC2: // SOF2 (Start of Frame, Progressive DCT)\n readUint16(); // skip data length\n frame = {};\n frame.extended = (fileMarker === 0xFFC1);\n frame.progressive = (fileMarker === 0xFFC2);\n frame.precision = data[offset++];\n frame.scanLines = readUint16();\n frame.samplesPerLine = readUint16();\n frame.components = {};\n frame.componentsOrder = [];\n\n var pixelsInFrame = frame.scanLines * frame.samplesPerLine;\n if (pixelsInFrame > maxResolutionInPixels) {\n var exceededAmount = Math.ceil((pixelsInFrame - maxResolutionInPixels) / 1e6);\n throw new Error(`maxResolutionInMP limit exceeded by ${exceededAmount}MP`);\n }\n\n var componentsCount = data[offset++], componentId;\n var maxH = 0, maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n componentId = data[offset];\n var h = data[offset + 1] >> 4;\n var v = data[offset + 1] & 15;\n var qId = data[offset + 2];\n\n if ( h <= 0 || v <= 0 ) {\n throw new Error('Invalid sampling factor, expected values above 0');\n }\n\n frame.componentsOrder.push(componentId);\n frame.components[componentId] = {\n h: h,\n v: v,\n quantizationIdx: qId\n };\n offset += 3;\n }\n prepareComponents(frame);\n frames.push(frame);\n break;\n\n case 0xFFC4: // DHT (Define Huffman Tables)\n var huffmanLength = readUint16();\n for (i = 2; i < huffmanLength;) {\n var huffmanTableSpec = data[offset++];\n var codeLengths = new Uint8Array(16);\n var codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += (codeLengths[j] = data[offset]);\n }\n requestMemoryAllocation(16 + codeLengthSum);\n var huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++)\n huffmanValues[j] = data[offset];\n i += 17 + codeLengthSum;\n\n ((huffmanTableSpec >> 4) === 0 ?\n huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] =\n buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xFFDD: // DRI (Define Restart Interval)\n readUint16(); // skip data length\n resetInterval = readUint16();\n break;\n\n case 0xFFDC: // Number of Lines marker\n readUint16() // skip data length\n readUint16() // Ignore this data since it represents the image height\n break;\n \n case 0xFFDA: // SOS (Start of Scan)\n var scanLength = readUint16();\n var selectorsCount = data[offset++];\n var components = [], component;\n for (i = 0; i < selectorsCount; i++) {\n component = frame.components[data[offset++]];\n var tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n var spectralStart = data[offset++];\n var spectralEnd = data[offset++];\n var successiveApproximation = data[offset++];\n var processed = decodeScan(data, offset,\n frame, components, resetInterval,\n spectralStart, spectralEnd,\n successiveApproximation >> 4, successiveApproximation & 15, this.opts);\n offset += processed;\n break;\n\n case 0xFFFF: // Fill bytes\n if (data[offset] !== 0xFF) { // Avoid skipping a valid marker.\n offset--;\n }\n break;\n default:\n if (data[offset - 3] == 0xFF &&\n data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {\n // could be incorrect encoding -- last 0xFF byte of the previous\n // block was eaten by the encoder\n offset -= 3;\n break;\n }\n else if (fileMarker === 0xE0 || fileMarker == 0xE1) {\n // Recover from malformed APP1 markers popular in some phone models.\n // See https://github.com/eugeneware/jpeg-js/issues/82\n if (malformedDataOffset !== -1) {\n throw new Error(`first unknown JPEG marker at offset ${malformedDataOffset.toString(16)}, second unknown JPEG marker ${fileMarker.toString(16)} at offset ${(offset - 1).toString(16)}`);\n }\n malformedDataOffset = offset - 1;\n const nextOffset = readUint16();\n if (data[offset + nextOffset - 2] === 0xFF) {\n offset += nextOffset - 2;\n break;\n }\n }\n throw new Error(\"unknown JPEG marker \" + fileMarker.toString(16));\n }\n fileMarker = readUint16();\n }\n if (frames.length != 1)\n throw new Error(\"only single frame JPEGs supported\");\n\n // set each frame's components quantization table\n for (var i = 0; i < frames.length; i++) {\n var cp = frames[i].components;\n for (var j in cp) {\n cp[j].quantizationTable = quantizationTables[cp[j].quantizationIdx];\n delete cp[j].quantizationIdx;\n }\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (var i = 0; i < frame.componentsOrder.length; i++) {\n var component = frame.components[frame.componentsOrder[i]];\n this.components.push({\n lines: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV\n });\n }\n },\n getData: function getData(width, height) {\n var scaleX = this.width / width, scaleY = this.height / height;\n\n var component1, component2, component3, component4;\n var component1Line, component2Line, component3Line, component4Line;\n var x, y;\n var offset = 0;\n var Y, Cb, Cr, K, C, M, Ye, R, G, B;\n var colorTransform;\n var dataLength = width * height * this.components.length;\n requestMemoryAllocation(dataLength);\n var data = new Uint8Array(dataLength);\n switch (this.components.length) {\n case 1:\n component1 = this.components[0];\n for (y = 0; y < height; y++) {\n component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)];\n for (x = 0; x < width; x++) {\n Y = component1Line[0 | (x * component1.scaleX * scaleX)];\n\n data[offset++] = Y;\n }\n }\n break;\n case 2:\n // PDF might compress two component data in custom colorspace\n component1 = this.components[0];\n component2 = this.components[1];\n for (y = 0; y < height; y++) {\n component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)];\n component2Line = component2.lines[0 | (y * component2.scaleY * scaleY)];\n for (x = 0; x < width; x++) {\n Y = component1Line[0 | (x * component1.scaleX * scaleX)];\n data[offset++] = Y;\n Y = component2Line[0 | (x * component2.scaleX * scaleX)];\n data[offset++] = Y;\n }\n }\n break;\n case 3:\n // The default transform for three components is true\n colorTransform = true;\n // The adobe transform marker overrides any previous setting\n if (this.adobe && this.adobe.transformCode)\n colorTransform = true;\n else if (typeof this.opts.colorTransform !== 'undefined')\n colorTransform = !!this.opts.colorTransform;\n\n component1 = this.components[0];\n component2 = this.components[1];\n component3 = this.components[2];\n for (y = 0; y < height; y++) {\n component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)];\n component2Line = component2.lines[0 | (y * component2.scaleY * scaleY)];\n component3Line = component3.lines[0 | (y * component3.scaleY * scaleY)];\n for (x = 0; x < width; x++) {\n if (!colorTransform) {\n R = component1Line[0 | (x * component1.scaleX * scaleX)];\n G = component2Line[0 | (x * component2.scaleX * scaleX)];\n B = component3Line[0 | (x * component3.scaleX * scaleX)];\n } else {\n Y = component1Line[0 | (x * component1.scaleX * scaleX)];\n Cb = component2Line[0 | (x * component2.scaleX * scaleX)];\n Cr = component3Line[0 | (x * component3.scaleX * scaleX)];\n\n R = clampTo8bit(Y + 1.402 * (Cr - 128));\n G = clampTo8bit(Y - 0.3441363 * (Cb - 128) - 0.71413636 * (Cr - 128));\n B = clampTo8bit(Y + 1.772 * (Cb - 128));\n }\n\n data[offset++] = R;\n data[offset++] = G;\n data[offset++] = B;\n }\n }\n break;\n case 4:\n if (!this.adobe)\n throw new Error('Unsupported color mode (4 components)');\n // The default transform for four components is false\n colorTransform = false;\n // The adobe transform marker overrides any previous setting\n if (this.adobe && this.adobe.transformCode)\n colorTransform = true;\n else if (typeof this.opts.colorTransform !== 'undefined')\n colorTransform = !!this.opts.colorTransform;\n\n component1 = this.components[0];\n component2 = this.components[1];\n component3 = this.components[2];\n component4 = this.components[3];\n for (y = 0; y < height; y++) {\n component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)];\n component2Line = component2.lines[0 | (y * component2.scaleY * scaleY)];\n component3Line = component3.lines[0 | (y * component3.scaleY * scaleY)];\n component4Line = component4.lines[0 | (y * component4.scaleY * scaleY)];\n for (x = 0; x < width; x++) {\n if (!colorTransform) {\n C = component1Line[0 | (x * component1.scaleX * scaleX)];\n M = component2Line[0 | (x * component2.scaleX * scaleX)];\n Ye = component3Line[0 | (x * component3.scaleX * scaleX)];\n K = component4Line[0 | (x * component4.scaleX * scaleX)];\n } else {\n Y = component1Line[0 | (x * component1.scaleX * scaleX)];\n Cb = component2Line[0 | (x * component2.scaleX * scaleX)];\n Cr = component3Line[0 | (x * component3.scaleX * scaleX)];\n K = component4Line[0 | (x * component4.scaleX * scaleX)];\n\n C = 255 - clampTo8bit(Y + 1.402 * (Cr - 128));\n M = 255 - clampTo8bit(Y - 0.3441363 * (Cb - 128) - 0.71413636 * (Cr - 128));\n Ye = 255 - clampTo8bit(Y + 1.772 * (Cb - 128));\n }\n data[offset++] = 255-C;\n data[offset++] = 255-M;\n data[offset++] = 255-Ye;\n data[offset++] = 255-K;\n }\n }\n break;\n default:\n throw new Error('Unsupported color mode');\n }\n return data;\n },\n copyToImageData: function copyToImageData(imageData, formatAsRGBA) {\n var width = imageData.width, height = imageData.height;\n var imageDataArray = imageData.data;\n var data = this.getData(width, height);\n var i = 0, j = 0, x, y;\n var Y, K, C, M, R, G, B;\n switch (this.components.length) {\n case 1:\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n Y = data[i++];\n\n imageDataArray[j++] = Y;\n imageDataArray[j++] = Y;\n imageDataArray[j++] = Y;\n if (formatAsRGBA) {\n imageDataArray[j++] = 255;\n }\n }\n }\n break;\n case 3:\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n R = data[i++];\n G = data[i++];\n B = data[i++];\n\n imageDataArray[j++] = R;\n imageDataArray[j++] = G;\n imageDataArray[j++] = B;\n if (formatAsRGBA) {\n imageDataArray[j++] = 255;\n }\n }\n }\n break;\n case 4:\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n C = data[i++];\n M = data[i++];\n Y = data[i++];\n K = data[i++];\n\n R = 255 - clampTo8bit(C * (1 - K / 255) + K);\n G = 255 - clampTo8bit(M * (1 - K / 255) + K);\n B = 255 - clampTo8bit(Y * (1 - K / 255) + K);\n\n imageDataArray[j++] = R;\n imageDataArray[j++] = G;\n imageDataArray[j++] = B;\n if (formatAsRGBA) {\n imageDataArray[j++] = 255;\n }\n }\n }\n break;\n default:\n throw new Error('Unsupported color mode');\n }\n }\n };\n\n\n // We cap the amount of memory used by jpeg-js to avoid unexpected OOMs from untrusted content.\n var totalBytesAllocated = 0;\n var maxMemoryUsageBytes = 0;\n function requestMemoryAllocation(increaseAmount = 0) {\n var totalMemoryImpactBytes = totalBytesAllocated + increaseAmount;\n if (totalMemoryImpactBytes > maxMemoryUsageBytes) {\n var exceededAmount = Math.ceil((totalMemoryImpactBytes - maxMemoryUsageBytes) / 1024 / 1024);\n throw new Error(`maxMemoryUsageInMB limit exceeded by at least ${exceededAmount}MB`);\n }\n\n totalBytesAllocated = totalMemoryImpactBytes;\n }\n\n constructor.resetMaxMemoryUsage = function (maxMemoryUsageBytes_) {\n totalBytesAllocated = 0;\n maxMemoryUsageBytes = maxMemoryUsageBytes_;\n };\n\n constructor.getBytesAllocated = function () {\n return totalBytesAllocated;\n };\n\n constructor.requestMemoryAllocation = requestMemoryAllocation;\n\n return constructor;\n})();\n\nif (typeof module !== 'undefined') {\n\tmodule.exports = decode;\n} else if (typeof window !== 'undefined') {\n\twindow['jpeg-js'] = window['jpeg-js'] || {};\n\twindow['jpeg-js'].decode = decode;\n}\n\nfunction decode(jpegData, userOpts = {}) {\n var defaultOpts = {\n // \"undefined\" means \"Choose whether to transform colors based on the image\u2019s color model.\"\n colorTransform: undefined,\n useTArray: false,\n formatAsRGBA: true,\n tolerantDecoding: true,\n maxResolutionInMP: 100, // Don't decode more than 100 megapixels\n maxMemoryUsageInMB: 512, // Don't decode if memory footprint is more than 512MB\n };\n\n var opts = {...defaultOpts, ...userOpts};\n var arr = new Uint8Array(jpegData);\n var decoder = new JpegImage();\n decoder.opts = opts;\n // If this constructor ever supports async decoding this will need to be done differently.\n // Until then, treating as singleton limit is fine.\n JpegImage.resetMaxMemoryUsage(opts.maxMemoryUsageInMB * 1024 * 1024);\n decoder.parse(arr);\n\n var channels = (opts.formatAsRGBA) ? 4 : 3;\n var bytesNeeded = decoder.width * decoder.height * channels;\n try {\n JpegImage.requestMemoryAllocation(bytesNeeded);\n var image = {\n width: decoder.width,\n height: decoder.height,\n exifBuffer: decoder.exifBuffer,\n data: opts.useTArray ?\n new Uint8Array(bytesNeeded) :\n Buffer.alloc(bytesNeeded)\n };\n if(decoder.comments.length > 0) {\n image[\"comments\"] = decoder.comments;\n }\n } catch (err) {\n if (err instanceof RangeError) {\n throw new Error(\"Could not allocate enough memory for the image. \" +\n \"Required: \" + bytesNeeded);\n } \n \n if (err instanceof ReferenceError) {\n if (err.message === \"Buffer is not defined\") {\n throw new Error(\"Buffer is not globally defined in this environment. \" +\n \"Consider setting useTArray to true\");\n }\n }\n throw err;\n }\n\n decoder.copyToImageData(image, opts.formatAsRGBA);\n\n return image;\n}\n", "var encode = require('./lib/encoder'),\n decode = require('./lib/decoder');\n\nmodule.exports = {\n encode: encode,\n decode: decode\n};\n", "'use strict';\n\n\nvar util = require('util');\nvar Stream = require('stream');\n\n\nvar ChunkStream = module.exports = function() {\n Stream.call(this);\n\n this._buffers = [];\n this._buffered = 0;\n\n this._reads = [];\n this._paused = false;\n\n this._encoding = 'utf8';\n this.writable = true;\n};\nutil.inherits(ChunkStream, Stream);\n\n\nChunkStream.prototype.read = function(length, callback) {\n\n this._reads.push({\n length: Math.abs(length), // if length < 0 then at most this length\n allowLess: length < 0,\n func: callback\n });\n\n process.nextTick(function() {\n this._process();\n\n // its paused and there is not enought data then ask for more\n if (this._paused && this._reads.length > 0) {\n this._paused = false;\n\n this.emit('drain');\n }\n }.bind(this));\n};\n\nChunkStream.prototype.write = function(data, encoding) {\n\n if (!this.writable) {\n this.emit('error', new Error('Stream not writable'));\n return false;\n }\n\n var dataBuffer;\n if (Buffer.isBuffer(data)) {\n dataBuffer = data;\n }\n else {\n dataBuffer = new Buffer(data, encoding || this._encoding);\n }\n\n this._buffers.push(dataBuffer);\n this._buffered += dataBuffer.length;\n\n this._process();\n\n // ok if there are no more read requests\n if (this._reads && this._reads.length === 0) {\n this._paused = true;\n }\n\n return this.writable && !this._paused;\n};\n\nChunkStream.prototype.end = function(data, encoding) {\n\n if (data) {\n this.write(data, encoding);\n }\n\n this.writable = false;\n\n // already destroyed\n if (!this._buffers) {\n return;\n }\n\n // enqueue or handle end\n if (this._buffers.length === 0) {\n this._end();\n }\n else {\n this._buffers.push(null);\n this._process();\n }\n};\n\nChunkStream.prototype.destroySoon = ChunkStream.prototype.end;\n\nChunkStream.prototype._end = function() {\n\n if (this._reads.length > 0) {\n this.emit('error',\n new Error('There are some read requests waitng on finished stream')\n );\n }\n\n this.destroy();\n};\n\nChunkStream.prototype.destroy = function() {\n\n if (!this._buffers) {\n return;\n }\n\n this.writable = false;\n this._reads = null;\n this._buffers = null;\n\n this.emit('close');\n};\n\nChunkStream.prototype._processReadAllowingLess = function(read) {\n // ok there is any data so that we can satisfy this request\n this._reads.shift(); // == read\n\n // first we need to peek into first buffer\n var smallerBuf = this._buffers[0];\n\n // ok there is more data than we need\n if (smallerBuf.length > read.length) {\n\n this._buffered -= read.length;\n this._buffers[0] = smallerBuf.slice(read.length);\n\n read.func.call(this, smallerBuf.slice(0, read.length));\n\n }\n else {\n // ok this is less than maximum length so use it all\n this._buffered -= smallerBuf.length;\n this._buffers.shift(); // == smallerBuf\n\n read.func.call(this, smallerBuf);\n }\n};\n\nChunkStream.prototype._processRead = function(read) {\n this._reads.shift(); // == read\n\n var pos = 0;\n var count = 0;\n var data = new Buffer(read.length);\n\n // create buffer for all data\n while (pos < read.length) {\n\n var buf = this._buffers[count++];\n var len = Math.min(buf.length, read.length - pos);\n\n buf.copy(data, pos, 0, len);\n pos += len;\n\n // last buffer wasn't used all so just slice it and leave\n if (len !== buf.length) {\n this._buffers[--count] = buf.slice(len);\n }\n }\n\n // remove all used buffers\n if (count > 0) {\n this._buffers.splice(0, count);\n }\n\n this._buffered -= read.length;\n\n read.func.call(this, data);\n};\n\nChunkStream.prototype._process = function() {\n\n try {\n // as long as there is any data and read requests\n while (this._buffered > 0 && this._reads && this._reads.length > 0) {\n\n var read = this._reads[0];\n\n // read any data (but no more than length)\n if (read.allowLess) {\n this._processReadAllowingLess(read);\n\n }\n else if (this._buffered >= read.length) {\n // ok we can meet some expectations\n\n this._processRead(read);\n }\n else {\n // not enought data to satisfy first request in queue\n // so we need to wait for more\n break;\n }\n }\n\n if (this._buffers && this._buffers.length > 0 && this._buffers[0] === null) {\n this._end();\n }\n }\n catch (ex) {\n this.emit('error', ex);\n }\n};\n", "'use strict';\n\n// Adam 7\n// 0 1 2 3 4 5 6 7\n// 0 x 6 4 6 x 6 4 6\n// 1 7 7 7 7 7 7 7 7\n// 2 5 6 5 6 5 6 5 6\n// 3 7 7 7 7 7 7 7 7\n// 4 3 6 4 6 3 6 4 6\n// 5 7 7 7 7 7 7 7 7\n// 6 5 6 5 6 5 6 5 6\n// 7 7 7 7 7 7 7 7 7\n\n\nvar imagePasses = [\n { // pass 1 - 1px\n x: [0],\n y: [0]\n },\n { // pass 2 - 1px\n x: [4],\n y: [0]\n },\n { // pass 3 - 2px\n x: [0, 4],\n y: [4]\n },\n { // pass 4 - 4px\n x: [2, 6],\n y: [0, 4]\n },\n { // pass 5 - 8px\n x: [0, 2, 4, 6],\n y: [2, 6]\n },\n { // pass 6 - 16px\n x: [1, 3, 5, 7],\n y: [0, 2, 4, 6]\n },\n { // pass 7 - 32px\n x: [0, 1, 2, 3, 4, 5, 6, 7],\n y: [1, 3, 5, 7]\n }\n];\n\nexports.getImagePasses = function(width, height) {\n var images = [];\n var xLeftOver = width % 8;\n var yLeftOver = height % 8;\n var xRepeats = (width - xLeftOver) / 8;\n var yRepeats = (height - yLeftOver) / 8;\n for (var i = 0; i < imagePasses.length; i++) {\n var pass = imagePasses[i];\n var passWidth = xRepeats * pass.x.length;\n var passHeight = yRepeats * pass.y.length;\n for (var j = 0; j < pass.x.length; j++) {\n if (pass.x[j] < xLeftOver) {\n passWidth++;\n }\n else {\n break;\n }\n }\n for (j = 0; j < pass.y.length; j++) {\n if (pass.y[j] < yLeftOver) {\n passHeight++;\n }\n else {\n break;\n }\n }\n if (passWidth > 0 && passHeight > 0) {\n images.push({ width: passWidth, height: passHeight, index: i });\n }\n }\n return images;\n};\n\nexports.getInterlaceIterator = function(width) {\n return function(x, y, pass) {\n var outerXLeftOver = x % imagePasses[pass].x.length;\n var outerX = (((x - outerXLeftOver) / imagePasses[pass].x.length) * 8) + imagePasses[pass].x[outerXLeftOver];\n var outerYLeftOver = y % imagePasses[pass].y.length;\n var outerY = (((y - outerYLeftOver) / imagePasses[pass].y.length) * 8) + imagePasses[pass].y[outerYLeftOver];\n return (outerX * 4) + (outerY * width * 4);\n };\n};", "'use strict';\r\n\r\nmodule.exports = function paethPredictor(left, above, upLeft) {\r\n\r\n var paeth = left + above - upLeft;\r\n var pLeft = Math.abs(paeth - left);\r\n var pAbove = Math.abs(paeth - above);\r\n var pUpLeft = Math.abs(paeth - upLeft);\r\n\r\n if (pLeft <= pAbove && pLeft <= pUpLeft) {\r\n return left;\r\n }\r\n if (pAbove <= pUpLeft) {\r\n return above;\r\n }\r\n return upLeft;\r\n};", "'use strict';\n\nvar interlaceUtils = require('./interlace');\nvar paethPredictor = require('./paeth-predictor');\n\nfunction getByteWidth(width, bpp, depth) {\n var byteWidth = width * bpp;\n if (depth !== 8) {\n byteWidth = Math.ceil(byteWidth / (8 / depth));\n }\n return byteWidth;\n}\n\nvar Filter = module.exports = function(bitmapInfo, dependencies) {\n\n var width = bitmapInfo.width;\n var height = bitmapInfo.height;\n var interlace = bitmapInfo.interlace;\n var bpp = bitmapInfo.bpp;\n var depth = bitmapInfo.depth;\n\n this.read = dependencies.read;\n this.write = dependencies.write;\n this.complete = dependencies.complete;\n\n this._imageIndex = 0;\n this._images = [];\n if (interlace) {\n var passes = interlaceUtils.getImagePasses(width, height);\n for (var i = 0; i < passes.length; i++) {\n this._images.push({\n byteWidth: getByteWidth(passes[i].width, bpp, depth),\n height: passes[i].height,\n lineIndex: 0\n });\n }\n }\n else {\n this._images.push({\n byteWidth: getByteWidth(width, bpp, depth),\n height: height,\n lineIndex: 0\n });\n }\n\n // when filtering the line we look at the pixel to the left\n // the spec also says it is done on a byte level regardless of the number of pixels\n // so if the depth is byte compatible (8 or 16) we subtract the bpp in order to compare back\n // a pixel rather than just a different byte part. However if we are sub byte, we ignore.\n if (depth === 8) {\n this._xComparison = bpp;\n }\n else if (depth === 16) {\n this._xComparison = bpp * 2;\n }\n else {\n this._xComparison = 1;\n }\n};\n\nFilter.prototype.start = function() {\n this.read(this._images[this._imageIndex].byteWidth + 1, this._reverseFilterLine.bind(this));\n};\n\nFilter.prototype._unFilterType1 = function(rawData, unfilteredLine, byteWidth) {\n\n var xComparison = this._xComparison;\n var xBiggerThan = xComparison - 1;\n\n for (var x = 0; x < byteWidth; x++) {\n var rawByte = rawData[1 + x];\n var f1Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n unfilteredLine[x] = rawByte + f1Left;\n }\n};\n\nFilter.prototype._unFilterType2 = function(rawData, unfilteredLine, byteWidth) {\n\n var lastLine = this._lastLine;\n\n for (var x = 0; x < byteWidth; x++) {\n var rawByte = rawData[1 + x];\n var f2Up = lastLine ? lastLine[x] : 0;\n unfilteredLine[x] = rawByte + f2Up;\n }\n};\n\nFilter.prototype._unFilterType3 = function(rawData, unfilteredLine, byteWidth) {\n\n var xComparison = this._xComparison;\n var xBiggerThan = xComparison - 1;\n var lastLine = this._lastLine;\n\n for (var x = 0; x < byteWidth; x++) {\n var rawByte = rawData[1 + x];\n var f3Up = lastLine ? lastLine[x] : 0;\n var f3Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n var f3Add = Math.floor((f3Left + f3Up) / 2);\n unfilteredLine[x] = rawByte + f3Add;\n }\n};\n\nFilter.prototype._unFilterType4 = function(rawData, unfilteredLine, byteWidth) {\n\n var xComparison = this._xComparison;\n var xBiggerThan = xComparison - 1;\n var lastLine = this._lastLine;\n\n for (var x = 0; x < byteWidth; x++) {\n var rawByte = rawData[1 + x];\n var f4Up = lastLine ? lastLine[x] : 0;\n var f4Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n var f4UpLeft = x > xBiggerThan && lastLine ? lastLine[x - xComparison] : 0;\n var f4Add = paethPredictor(f4Left, f4Up, f4UpLeft);\n unfilteredLine[x] = rawByte + f4Add;\n }\n};\n\nFilter.prototype._reverseFilterLine = function(rawData) {\n\n var filter = rawData[0];\n var unfilteredLine;\n var currentImage = this._images[this._imageIndex];\n var byteWidth = currentImage.byteWidth;\n\n if (filter === 0) {\n unfilteredLine = rawData.slice(1, byteWidth + 1);\n }\n else {\n\n unfilteredLine = new Buffer(byteWidth);\n\n switch (filter) {\n case 1:\n this._unFilterType1(rawData, unfilteredLine, byteWidth);\n break;\n case 2:\n this._unFilterType2(rawData, unfilteredLine, byteWidth);\n break;\n case 3:\n this._unFilterType3(rawData, unfilteredLine, byteWidth);\n break;\n case 4:\n this._unFilterType4(rawData, unfilteredLine, byteWidth);\n break;\n default:\n throw new Error('Unrecognised filter type - ' + filter);\n }\n }\n\n this.write(unfilteredLine);\n\n currentImage.lineIndex++;\n if (currentImage.lineIndex >= currentImage.height) {\n this._lastLine = null;\n this._imageIndex++;\n currentImage = this._images[this._imageIndex];\n }\n else {\n this._lastLine = unfilteredLine;\n }\n\n if (currentImage) {\n // read, using the byte width that may be from the new current image\n this.read(currentImage.byteWidth + 1, this._reverseFilterLine.bind(this));\n }\n else {\n this._lastLine = null;\n this.complete();\n }\n};\n", "'use strict';\n\nvar util = require('util');\nvar ChunkStream = require('./chunkstream');\nvar Filter = require('./filter-parse');\n\n\nvar FilterAsync = module.exports = function(bitmapInfo) {\n ChunkStream.call(this);\n\n var buffers = [];\n var that = this;\n this._filter = new Filter(bitmapInfo, {\n read: this.read.bind(this),\n write: function(buffer) {\n buffers.push(buffer);\n },\n complete: function() {\n that.emit('complete', Buffer.concat(buffers));\n }\n });\n\n this._filter.start();\n};\nutil.inherits(FilterAsync, ChunkStream);\n", "'use strict';\n\n\nmodule.exports = {\n\n PNG_SIGNATURE: [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a],\n\n TYPE_IHDR: 0x49484452,\n TYPE_IEND: 0x49454e44,\n TYPE_IDAT: 0x49444154,\n TYPE_PLTE: 0x504c5445,\n TYPE_tRNS: 0x74524e53, // eslint-disable-line camelcase\n TYPE_gAMA: 0x67414d41, // eslint-disable-line camelcase\n\n // color-type bits\n COLORTYPE_GRAYSCALE: 0,\n COLORTYPE_PALETTE: 1,\n COLORTYPE_COLOR: 2,\n COLORTYPE_ALPHA: 4, // e.g. grayscale and alpha\n\n // color-type combinations\n COLORTYPE_PALETTE_COLOR: 3,\n COLORTYPE_COLOR_ALPHA: 6,\n\n COLORTYPE_TO_BPP_MAP: {\n 0: 1,\n 2: 3,\n 3: 1,\n 4: 2,\n 6: 4\n },\n\n GAMMA_DIVISION: 100000\n};\n", "'use strict';\n\nvar crcTable = [];\n\n(function() {\n for (var i = 0; i < 256; i++) {\n var currentCrc = i;\n for (var j = 0; j < 8; j++) {\n if (currentCrc & 1) {\n currentCrc = 0xedb88320 ^ (currentCrc >>> 1);\n }\n else {\n currentCrc = currentCrc >>> 1;\n }\n }\n crcTable[i] = currentCrc;\n }\n}());\n\nvar CrcCalculator = module.exports = function() {\n this._crc = -1;\n};\n\nCrcCalculator.prototype.write = function(data) {\n\n for (var i = 0; i < data.length; i++) {\n this._crc = crcTable[(this._crc ^ data[i]) & 0xff] ^ (this._crc >>> 8);\n }\n return true;\n};\n\nCrcCalculator.prototype.crc32 = function() {\n return this._crc ^ -1;\n};\n\n\nCrcCalculator.crc32 = function(buf) {\n\n var crc = -1;\n for (var i = 0; i < buf.length; i++) {\n crc = crcTable[(crc ^ buf[i]) & 0xff] ^ (crc >>> 8);\n }\n return crc ^ -1;\n};\n", "'use strict';\n\nvar constants = require('./constants');\nvar CrcCalculator = require('./crc');\n\n\nvar Parser = module.exports = function(options, dependencies) {\n\n this._options = options;\n options.checkCRC = options.checkCRC !== false;\n\n this._hasIHDR = false;\n this._hasIEND = false;\n\n // input flags/metadata\n this._palette = [];\n this._colorType = 0;\n\n this._chunks = {};\n this._chunks[constants.TYPE_IHDR] = this._handleIHDR.bind(this);\n this._chunks[constants.TYPE_IEND] = this._handleIEND.bind(this);\n this._chunks[constants.TYPE_IDAT] = this._handleIDAT.bind(this);\n this._chunks[constants.TYPE_PLTE] = this._handlePLTE.bind(this);\n this._chunks[constants.TYPE_tRNS] = this._handleTRNS.bind(this);\n this._chunks[constants.TYPE_gAMA] = this._handleGAMA.bind(this);\n\n this.read = dependencies.read;\n this.error = dependencies.error;\n this.metadata = dependencies.metadata;\n this.gamma = dependencies.gamma;\n this.transColor = dependencies.transColor;\n this.palette = dependencies.palette;\n this.parsed = dependencies.parsed;\n this.inflateData = dependencies.inflateData;\n this.inflateData = dependencies.inflateData;\n this.finished = dependencies.finished;\n};\n\nParser.prototype.start = function() {\n this.read(constants.PNG_SIGNATURE.length,\n this._parseSignature.bind(this)\n );\n};\n\nParser.prototype._parseSignature = function(data) {\n\n var signature = constants.PNG_SIGNATURE;\n\n for (var i = 0; i < signature.length; i++) {\n if (data[i] !== signature[i]) {\n this.error(new Error('Invalid file signature'));\n return;\n }\n }\n this.read(8, this._parseChunkBegin.bind(this));\n};\n\nParser.prototype._parseChunkBegin = function(data) {\n\n // chunk content length\n var length = data.readUInt32BE(0);\n\n // chunk type\n var type = data.readUInt32BE(4);\n var name = '';\n for (var i = 4; i < 8; i++) {\n name += String.fromCharCode(data[i]);\n }\n\n //console.log('chunk ', name, length);\n\n // chunk flags\n var ancillary = Boolean(data[4] & 0x20); // or critical\n// priv = Boolean(data[5] & 0x20), // or public\n// safeToCopy = Boolean(data[7] & 0x20); // or unsafe\n\n if (!this._hasIHDR && type !== constants.TYPE_IHDR) {\n this.error(new Error('Expected IHDR on beggining'));\n return;\n }\n\n this._crc = new CrcCalculator();\n this._crc.write(new Buffer(name));\n\n if (this._chunks[type]) {\n return this._chunks[type](length);\n }\n\n if (!ancillary) {\n this.error(new Error('Unsupported critical chunk type ' + name));\n return;\n }\n\n this.read(length + 4, this._skipChunk.bind(this));\n};\n\nParser.prototype._skipChunk = function(/*data*/) {\n this.read(8, this._parseChunkBegin.bind(this));\n};\n\nParser.prototype._handleChunkEnd = function() {\n this.read(4, this._parseChunkEnd.bind(this));\n};\n\nParser.prototype._parseChunkEnd = function(data) {\n\n var fileCrc = data.readInt32BE(0);\n var calcCrc = this._crc.crc32();\n\n // check CRC\n if (this._options.checkCRC && calcCrc !== fileCrc) {\n this.error(new Error('Crc error - ' + fileCrc + ' - ' + calcCrc));\n return;\n }\n\n if (!this._hasIEND) {\n this.read(8, this._parseChunkBegin.bind(this));\n }\n};\n\nParser.prototype._handleIHDR = function(length) {\n this.read(length, this._parseIHDR.bind(this));\n};\nParser.prototype._parseIHDR = function(data) {\n\n this._crc.write(data);\n\n var width = data.readUInt32BE(0);\n var height = data.readUInt32BE(4);\n var depth = data[8];\n var colorType = data[9]; // bits: 1 palette, 2 color, 4 alpha\n var compr = data[10];\n var filter = data[11];\n var interlace = data[12];\n\n // console.log(' width', width, 'height', height,\n // 'depth', depth, 'colorType', colorType,\n // 'compr', compr, 'filter', filter, 'interlace', interlace\n // );\n\n if (depth !== 8 && depth !== 4 && depth !== 2 && depth !== 1 && depth !== 16) {\n this.error(new Error('Unsupported bit depth ' + depth));\n return;\n }\n if (!(colorType in constants.COLORTYPE_TO_BPP_MAP)) {\n this.error(new Error('Unsupported color type'));\n return;\n }\n if (compr !== 0) {\n this.error(new Error('Unsupported compression method'));\n return;\n }\n if (filter !== 0) {\n this.error(new Error('Unsupported filter method'));\n return;\n }\n if (interlace !== 0 && interlace !== 1) {\n this.error(new Error('Unsupported interlace method'));\n return;\n }\n\n this._colorType = colorType;\n\n var bpp = constants.COLORTYPE_TO_BPP_MAP[this._colorType];\n\n this._hasIHDR = true;\n\n this.metadata({\n width: width,\n height: height,\n depth: depth,\n interlace: Boolean(interlace),\n palette: Boolean(colorType & constants.COLORTYPE_PALETTE),\n color: Boolean(colorType & constants.COLORTYPE_COLOR),\n alpha: Boolean(colorType & constants.COLORTYPE_ALPHA),\n bpp: bpp,\n colorType: colorType\n });\n\n this._handleChunkEnd();\n};\n\n\nParser.prototype._handlePLTE = function(length) {\n this.read(length, this._parsePLTE.bind(this));\n};\nParser.prototype._parsePLTE = function(data) {\n\n this._crc.write(data);\n\n var entries = Math.floor(data.length / 3);\n // console.log('Palette:', entries);\n\n for (var i = 0; i < entries; i++) {\n this._palette.push([\n data[i * 3],\n data[i * 3 + 1],\n data[i * 3 + 2],\n 0xff\n ]);\n }\n\n this.palette(this._palette);\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleTRNS = function(length) {\n this.read(length, this._parseTRNS.bind(this));\n};\nParser.prototype._parseTRNS = function(data) {\n\n this._crc.write(data);\n\n // palette\n if (this._colorType === constants.COLORTYPE_PALETTE_COLOR) {\n if (this._palette.length === 0) {\n this.error(new Error('Transparency chunk must be after palette'));\n return;\n }\n if (data.length > this._palette.length) {\n this.error(new Error('More transparent colors than palette size'));\n return;\n }\n for (var i = 0; i < data.length; i++) {\n this._palette[i][3] = data[i];\n }\n this.palette(this._palette);\n }\n\n // for colorType 0 (grayscale) and 2 (rgb)\n // there might be one gray/color defined as transparent\n if (this._colorType === constants.COLORTYPE_GRAYSCALE) {\n // grey, 2 bytes\n this.transColor([data.readUInt16BE(0)]);\n }\n if (this._colorType === constants.COLORTYPE_COLOR) {\n this.transColor([data.readUInt16BE(0), data.readUInt16BE(2), data.readUInt16BE(4)]);\n }\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleGAMA = function(length) {\n this.read(length, this._parseGAMA.bind(this));\n};\nParser.prototype._parseGAMA = function(data) {\n\n this._crc.write(data);\n this.gamma(data.readUInt32BE(0) / constants.GAMMA_DIVISION);\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleIDAT = function(length) {\n this.read(-length, this._parseIDAT.bind(this, length));\n};\nParser.prototype._parseIDAT = function(length, data) {\n\n this._crc.write(data);\n\n if (this._colorType === constants.COLORTYPE_PALETTE_COLOR && this._palette.length === 0) {\n throw new Error('Expected palette not found');\n }\n\n this.inflateData(data);\n var leftOverLength = length - data.length;\n\n if (leftOverLength > 0) {\n this._handleIDAT(leftOverLength);\n }\n else {\n this._handleChunkEnd();\n }\n};\n\nParser.prototype._handleIEND = function(length) {\n this.read(length, this._parseIEND.bind(this));\n};\nParser.prototype._parseIEND = function(data) {\n\n this._crc.write(data);\n\n this._hasIEND = true;\n this._handleChunkEnd();\n\n if (this.finished) {\n this.finished();\n }\n};\n", "'use strict';\n\nvar interlaceUtils = require('./interlace');\n\nvar pixelBppMap = {\n 1: { // L\n 0: 0,\n 1: 0,\n 2: 0,\n 3: 0xff\n },\n 2: { // LA\n 0: 0,\n 1: 0,\n 2: 0,\n 3: 1\n },\n 3: { // RGB\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 0xff\n },\n 4: { // RGBA\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n }\n};\n\nfunction bitRetriever(data, depth) {\n\n var leftOver = [];\n var i = 0;\n\n function split() {\n if (i === data.length) {\n throw new Error('Ran out of data');\n }\n var byte = data[i];\n i++;\n var byte8, byte7, byte6, byte5, byte4, byte3, byte2, byte1;\n switch (depth) {\n default:\n throw new Error('unrecognised depth');\n case 16:\n byte2 = data[i];\n i++;\n leftOver.push(((byte << 8) + byte2));\n break;\n case 4:\n byte2 = byte & 0x0f;\n byte1 = byte >> 4;\n leftOver.push(byte1, byte2);\n break;\n case 2:\n byte4 = byte & 3;\n byte3 = byte >> 2 & 3;\n byte2 = byte >> 4 & 3;\n byte1 = byte >> 6 & 3;\n leftOver.push(byte1, byte2, byte3, byte4);\n break;\n case 1:\n byte8 = byte & 1;\n byte7 = byte >> 1 & 1;\n byte6 = byte >> 2 & 1;\n byte5 = byte >> 3 & 1;\n byte4 = byte >> 4 & 1;\n byte3 = byte >> 5 & 1;\n byte2 = byte >> 6 & 1;\n byte1 = byte >> 7 & 1;\n leftOver.push(byte1, byte2, byte3, byte4, byte5, byte6, byte7, byte8);\n break;\n }\n }\n\n return {\n get: function(count) {\n while (leftOver.length < count) {\n split();\n }\n var returner = leftOver.slice(0, count);\n leftOver = leftOver.slice(count);\n return returner;\n },\n resetAfterLine: function() {\n leftOver.length = 0;\n },\n end: function() {\n if (i !== data.length) {\n throw new Error('extra data found');\n }\n }\n };\n}\n\nfunction mapImage8Bit(image, pxData, getPxPos, bpp, data, rawPos) { // eslint-disable-line max-params\n var imageWidth = image.width;\n var imageHeight = image.height;\n var imagePass = image.index;\n for (var y = 0; y < imageHeight; y++) {\n for (var x = 0; x < imageWidth; x++) {\n var pxPos = getPxPos(x, y, imagePass);\n\n for (var i = 0; i < 4; i++) {\n var idx = pixelBppMap[bpp][i];\n if (i === data.length) {\n throw new Error('Ran out of data');\n }\n pxData[pxPos + i] = idx !== 0xff ? data[idx + rawPos] : 0xff;\n }\n rawPos += bpp; //eslint-disable-line no-param-reassign\n }\n }\n return rawPos;\n}\n\nfunction mapImageCustomBit(image, pxData, getPxPos, bpp, bits, maxBit) { // eslint-disable-line max-params\n var imageWidth = image.width;\n var imageHeight = image.height;\n var imagePass = image.index;\n for (var y = 0; y < imageHeight; y++) {\n for (var x = 0; x < imageWidth; x++) {\n var pixelData = bits.get(bpp);\n var pxPos = getPxPos(x, y, imagePass);\n\n for (var i = 0; i < 4; i++) {\n var idx = pixelBppMap[bpp][i];\n pxData[pxPos + i] = idx !== 0xff ? pixelData[idx] : maxBit;\n }\n }\n bits.resetAfterLine();\n }\n}\n\nexports.dataToBitMap = function(data, bitmapInfo) {\n\n var width = bitmapInfo.width;\n var height = bitmapInfo.height;\n var depth = bitmapInfo.depth;\n var bpp = bitmapInfo.bpp;\n var interlace = bitmapInfo.interlace;\n\n if (depth !== 8) {\n var bits = bitRetriever(data, depth);\n }\n var pxData;\n if (depth <= 8) {\n pxData = new Buffer(width * height * 4);\n }\n else {\n pxData = new Uint16Array(width * height * 4);\n }\n var maxBit = Math.pow(2, depth) - 1;\n var rawPos = 0;\n var images;\n var getPxPos;\n\n if (interlace) {\n images = interlaceUtils.getImagePasses(width, height);\n getPxPos = interlaceUtils.getInterlaceIterator(width, height);\n }\n else {\n var nonInterlacedPxPos = 0;\n getPxPos = function() {\n var returner = nonInterlacedPxPos;\n nonInterlacedPxPos += 4;\n return returner;\n };\n images = [{ width: width, height: height }];\n }\n\n for (var imageIndex = 0; imageIndex < images.length; imageIndex++) {\n if (depth === 8) {\n rawPos = mapImage8Bit(images[imageIndex], pxData, getPxPos, bpp, data, rawPos);\n }\n else {\n mapImageCustomBit(images[imageIndex], pxData, getPxPos, bpp, bits, maxBit);\n }\n }\n if (depth === 8) {\n if (rawPos !== data.length) {\n throw new Error('extra data found');\n }\n }\n else {\n bits.end();\n }\n\n return pxData;\n};\n", "'use strict';\n\nfunction dePalette(indata, outdata, width, height, palette) {\n var pxPos = 0;\n // use values from palette\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var color = palette[indata[pxPos]];\n\n if (!color) {\n throw new Error('index ' + indata[pxPos] + ' not in palette');\n }\n\n for (var i = 0; i < 4; i++) {\n outdata[pxPos + i] = color[i];\n }\n pxPos += 4;\n }\n }\n}\n\nfunction replaceTransparentColor(indata, outdata, width, height, transColor) {\n var pxPos = 0;\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var makeTrans = false;\n\n if (transColor.length === 1) {\n if (transColor[0] === indata[pxPos]) {\n makeTrans = true;\n }\n }\n else if (transColor[0] === indata[pxPos] && transColor[1] === indata[pxPos + 1] && transColor[2] === indata[pxPos + 2]) {\n makeTrans = true;\n }\n if (makeTrans) {\n for (var i = 0; i < 4; i++) {\n outdata[pxPos + i] = 0;\n }\n }\n pxPos += 4;\n }\n }\n}\n\nfunction scaleDepth(indata, outdata, width, height, depth) {\n var maxOutSample = 255;\n var maxInSample = Math.pow(2, depth) - 1;\n var pxPos = 0;\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n for (var i = 0; i < 4; i++) {\n outdata[pxPos + i] = Math.floor((indata[pxPos + i] * maxOutSample) / maxInSample + 0.5);\n }\n pxPos += 4;\n }\n }\n}\n\nmodule.exports = function(indata, imageData) {\n\n var depth = imageData.depth;\n var width = imageData.width;\n var height = imageData.height;\n var colorType = imageData.colorType;\n var transColor = imageData.transColor;\n var palette = imageData.palette;\n\n var outdata = indata; // only different for 16 bits\n\n if (colorType === 3) { // paletted\n dePalette(indata, outdata, width, height, palette);\n }\n else {\n if (transColor) {\n replaceTransparentColor(indata, outdata, width, height, transColor);\n }\n // if it needs scaling\n if (depth !== 8) {\n // if we need to change the buffer size\n if (depth === 16) {\n outdata = new Buffer(width * height * 4);\n }\n scaleDepth(indata, outdata, width, height, depth);\n }\n }\n return outdata;\n};\n", "'use strict';\n\nvar util = require('util');\nvar zlib = require('zlib');\nvar ChunkStream = require('./chunkstream');\nvar FilterAsync = require('./filter-parse-async');\nvar Parser = require('./parser');\nvar bitmapper = require('./bitmapper');\nvar formatNormaliser = require('./format-normaliser');\n\nvar ParserAsync = module.exports = function(options) {\n ChunkStream.call(this);\n\n this._parser = new Parser(options, {\n read: this.read.bind(this),\n error: this._handleError.bind(this),\n metadata: this._handleMetaData.bind(this),\n gamma: this.emit.bind(this, 'gamma'),\n palette: this._handlePalette.bind(this),\n transColor: this._handleTransColor.bind(this),\n finished: this._finished.bind(this),\n inflateData: this._inflateData.bind(this)\n });\n this._options = options;\n this.writable = true;\n\n this._parser.start();\n};\nutil.inherits(ParserAsync, ChunkStream);\n\n\nParserAsync.prototype._handleError = function(err) {\n\n this.emit('error', err);\n\n this.writable = false;\n\n this.destroy();\n\n if (this._inflate && this._inflate.destroy) {\n this._inflate.destroy();\n }\n\n this.errord = true;\n};\n\nParserAsync.prototype._inflateData = function(data) {\n if (!this._inflate) {\n this._inflate = zlib.createInflate();\n\n this._inflate.on('error', this.emit.bind(this, 'error'));\n this._filter.on('complete', this._complete.bind(this));\n\n this._inflate.pipe(this._filter);\n }\n this._inflate.write(data);\n};\n\nParserAsync.prototype._handleMetaData = function(metaData) {\n\n this.emit('metadata', metaData);\n\n this._bitmapInfo = Object.create(metaData);\n\n this._filter = new FilterAsync(this._bitmapInfo);\n};\n\nParserAsync.prototype._handleTransColor = function(transColor) {\n this._bitmapInfo.transColor = transColor;\n};\n\nParserAsync.prototype._handlePalette = function(palette) {\n this._bitmapInfo.palette = palette;\n};\n\n\nParserAsync.prototype._finished = function() {\n if (this.errord) {\n return;\n }\n\n if (!this._inflate) {\n this.emit('error', 'No Inflate block');\n }\n else {\n // no more data to inflate\n this._inflate.end();\n }\n this.destroySoon();\n};\n\nParserAsync.prototype._complete = function(filteredData) {\n\n if (this.errord) {\n return;\n }\n\n try {\n var bitmapData = bitmapper.dataToBitMap(filteredData, this._bitmapInfo);\n\n var normalisedBitmapData = formatNormaliser(bitmapData, this._bitmapInfo);\n bitmapData = null;\n }\n catch (ex) {\n this._handleError(ex);\n return;\n }\n\n this.emit('parsed', normalisedBitmapData);\n};\n", "'use strict';\n\nvar constants = require('./constants');\n\nmodule.exports = function(data, width, height, options) {\n var outHasAlpha = options.colorType === constants.COLORTYPE_COLOR_ALPHA;\n if (options.inputHasAlpha && outHasAlpha) {\n return data;\n }\n if (!options.inputHasAlpha && !outHasAlpha) {\n return data;\n }\n\n var outBpp = outHasAlpha ? 4 : 3;\n var outData = new Buffer(width * height * outBpp);\n var inBpp = options.inputHasAlpha ? 4 : 3;\n var inIndex = 0;\n var outIndex = 0;\n\n var bgColor = options.bgColor || {};\n if (bgColor.red === undefined) {\n bgColor.red = 255;\n }\n if (bgColor.green === undefined) {\n bgColor.green = 255;\n }\n if (bgColor.blue === undefined) {\n bgColor.blue = 255;\n }\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var red = data[inIndex];\n var green = data[inIndex + 1];\n var blue = data[inIndex + 2];\n\n var alpha;\n if (options.inputHasAlpha) {\n alpha = data[inIndex + 3];\n if (!outHasAlpha) {\n alpha /= 255;\n red = Math.min(Math.max(Math.round((1 - alpha) * bgColor.red + alpha * red), 0), 255);\n green = Math.min(Math.max(Math.round((1 - alpha) * bgColor.green + alpha * green), 0), 255);\n blue = Math.min(Math.max(Math.round((1 - alpha) * bgColor.blue + alpha * blue), 0), 255);\n }\n }\n else {\n alpha = 255;\n }\n\n outData[outIndex] = red;\n outData[outIndex + 1] = green;\n outData[outIndex + 2] = blue;\n if (outHasAlpha) {\n outData[outIndex + 3] = alpha;\n }\n\n inIndex += inBpp;\n outIndex += outBpp;\n }\n }\n\n return outData;\n};\n", "'use strict';\n\nvar paethPredictor = require('./paeth-predictor');\n\nfunction filterNone(pxData, pxPos, byteWidth, rawData, rawPos) {\n pxData.copy(rawData, rawPos, pxPos, pxPos + byteWidth);\n}\n\nfunction filterSumNone(pxData, pxPos, byteWidth) {\n\n var sum = 0;\n var length = pxPos + byteWidth;\n\n for (var i = pxPos; i < length; i++) {\n sum += Math.abs(pxData[i]);\n }\n return sum;\n}\n\nfunction filterSub(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var val = pxData[pxPos + x] - left;\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumSub(pxData, pxPos, byteWidth, bpp) {\n\n var sum = 0;\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var val = pxData[pxPos + x] - left;\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterUp(pxData, pxPos, byteWidth, rawData, rawPos) {\n\n for (var x = 0; x < byteWidth; x++) {\n\n var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n var val = pxData[pxPos + x] - up;\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumUp(pxData, pxPos, byteWidth) {\n\n var sum = 0;\n var length = pxPos + byteWidth;\n for (var x = pxPos; x < length; x++) {\n\n var up = pxPos > 0 ? pxData[x - byteWidth] : 0;\n var val = pxData[x] - up;\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterAvg(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n var val = pxData[pxPos + x] - ((left + up) >> 1);\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumAvg(pxData, pxPos, byteWidth, bpp) {\n\n var sum = 0;\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n var val = pxData[pxPos + x] - ((left + up) >> 1);\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterPaeth(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n var upleft = pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;\n var val = pxData[pxPos + x] - paethPredictor(left, up, upleft);\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumPaeth(pxData, pxPos, byteWidth, bpp) {\n var sum = 0;\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n var upleft = pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;\n var val = pxData[pxPos + x] - paethPredictor(left, up, upleft);\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nvar filters = {\n 0: filterNone,\n 1: filterSub,\n 2: filterUp,\n 3: filterAvg,\n 4: filterPaeth\n};\n\nvar filterSums = {\n 0: filterSumNone,\n 1: filterSumSub,\n 2: filterSumUp,\n 3: filterSumAvg,\n 4: filterSumPaeth\n};\n\nmodule.exports = function(pxData, width, height, options, bpp) {\n\n var filterTypes;\n if (!('filterType' in options) || options.filterType === -1) {\n filterTypes = [0, 1, 2, 3, 4];\n }\n else if (typeof options.filterType === 'number') {\n filterTypes = [options.filterType];\n }\n else {\n throw new Error('unrecognised filter types');\n }\n\n var byteWidth = width * bpp;\n var rawPos = 0;\n var pxPos = 0;\n var rawData = new Buffer((byteWidth + 1) * height);\n var sel = filterTypes[0];\n\n for (var y = 0; y < height; y++) {\n\n if (filterTypes.length > 1) {\n // find best filter for this line (with lowest sum of values)\n var min = Infinity;\n\n for (var i = 0; i < filterTypes.length; i++) {\n var sum = filterSums[filterTypes[i]](pxData, pxPos, byteWidth, bpp);\n if (sum < min) {\n sel = filterTypes[i];\n min = sum;\n }\n }\n }\n\n rawData[rawPos] = sel;\n rawPos++;\n filters[sel](pxData, pxPos, byteWidth, rawData, rawPos, bpp);\n rawPos += byteWidth;\n pxPos += byteWidth;\n }\n return rawData;\n};\n", "'use strict';\n\nvar constants = require('./constants');\nvar CrcStream = require('./crc');\nvar bitPacker = require('./bitpacker');\nvar filter = require('./filter-pack');\nvar zlib = require('zlib');\n\nvar Packer = module.exports = function(options) {\n this._options = options;\n\n options.deflateChunkSize = options.deflateChunkSize || 32 * 1024;\n options.deflateLevel = options.deflateLevel != null ? options.deflateLevel : 9;\n options.deflateStrategy = options.deflateStrategy != null ? options.deflateStrategy : 3;\n options.inputHasAlpha = options.inputHasAlpha != null ? options.inputHasAlpha : true;\n options.deflateFactory = options.deflateFactory || zlib.createDeflate;\n options.bitDepth = options.bitDepth || 8;\n options.colorType = (typeof options.colorType === 'number') ? options.colorType : constants.COLORTYPE_COLOR_ALPHA;\n\n if (options.colorType !== constants.COLORTYPE_COLOR && options.colorType !== constants.COLORTYPE_COLOR_ALPHA) {\n throw new Error('option color type:' + options.colorType + ' is not supported at present');\n }\n if (options.bitDepth !== 8) {\n throw new Error('option bit depth:' + options.bitDepth + ' is not supported at present');\n }\n};\n\nPacker.prototype.getDeflateOptions = function() {\n return {\n chunkSize: this._options.deflateChunkSize,\n level: this._options.deflateLevel,\n strategy: this._options.deflateStrategy\n };\n};\n\nPacker.prototype.createDeflate = function() {\n return this._options.deflateFactory(this.getDeflateOptions());\n};\n\nPacker.prototype.filterData = function(data, width, height) {\n // convert to correct format for filtering (e.g. right bpp and bit depth)\n var packedData = bitPacker(data, width, height, this._options);\n\n // filter pixel data\n var bpp = constants.COLORTYPE_TO_BPP_MAP[this._options.colorType];\n var filteredData = filter(packedData, width, height, this._options, bpp);\n return filteredData;\n};\n\nPacker.prototype._packChunk = function(type, data) {\n\n var len = (data ? data.length : 0);\n var buf = new Buffer(len + 12);\n\n buf.writeUInt32BE(len, 0);\n buf.writeUInt32BE(type, 4);\n\n if (data) {\n data.copy(buf, 8);\n }\n\n buf.writeInt32BE(CrcStream.crc32(buf.slice(4, buf.length - 4)), buf.length - 4);\n return buf;\n};\n\nPacker.prototype.packGAMA = function(gamma) {\n var buf = new Buffer(4);\n buf.writeUInt32BE(Math.floor(gamma * constants.GAMMA_DIVISION), 0);\n return this._packChunk(constants.TYPE_gAMA, buf);\n};\n\nPacker.prototype.packIHDR = function(width, height) {\n\n var buf = new Buffer(13);\n buf.writeUInt32BE(width, 0);\n buf.writeUInt32BE(height, 4);\n buf[8] = this._options.bitDepth; // Bit depth\n buf[9] = this._options.colorType; // colorType\n buf[10] = 0; // compression\n buf[11] = 0; // filter\n buf[12] = 0; // interlace\n\n return this._packChunk(constants.TYPE_IHDR, buf);\n};\n\nPacker.prototype.packIDAT = function(data) {\n return this._packChunk(constants.TYPE_IDAT, data);\n};\n\nPacker.prototype.packIEND = function() {\n return this._packChunk(constants.TYPE_IEND, null);\n};", "'use strict';\n\nvar util = require('util');\nvar Stream = require('stream');\nvar constants = require('./constants');\nvar Packer = require('./packer');\n\nvar PackerAsync = module.exports = function(opt) {\n Stream.call(this);\n\n var options = opt || {};\n\n this._packer = new Packer(options);\n this._deflate = this._packer.createDeflate();\n\n this.readable = true;\n};\nutil.inherits(PackerAsync, Stream);\n\n\nPackerAsync.prototype.pack = function(data, width, height, gamma) {\n // Signature\n this.emit('data', new Buffer(constants.PNG_SIGNATURE));\n this.emit('data', this._packer.packIHDR(width, height));\n\n if (gamma) {\n this.emit('data', this._packer.packGAMA(gamma));\n }\n\n var filteredData = this._packer.filterData(data, width, height);\n\n // compress it\n this._deflate.on('error', this.emit.bind(this, 'error'));\n\n this._deflate.on('data', function(compressedData) {\n this.emit('data', this._packer.packIDAT(compressedData));\n }.bind(this));\n\n this._deflate.on('end', function() {\n this.emit('data', this._packer.packIEND());\n this.emit('end');\n }.bind(this));\n\n this._deflate.end(filteredData);\n};\n", "'use strict';\n\nvar SyncReader = module.exports = function(buffer) {\n\n this._buffer = buffer;\n this._reads = [];\n};\n\nSyncReader.prototype.read = function(length, callback) {\n\n this._reads.push({\n length: Math.abs(length), // if length < 0 then at most this length\n allowLess: length < 0,\n func: callback\n });\n};\n\nSyncReader.prototype.process = function() {\n\n // as long as there is any data and read requests\n while (this._reads.length > 0 && this._buffer.length) {\n\n var read = this._reads[0];\n\n if (this._buffer.length && (this._buffer.length >= read.length || read.allowLess)) {\n\n // ok there is any data so that we can satisfy this request\n this._reads.shift(); // == read\n\n var buf = this._buffer;\n\n this._buffer = buf.slice(read.length);\n\n read.func.call(this, buf.slice(0, read.length));\n\n }\n else {\n break;\n }\n\n }\n\n if (this._reads.length > 0) {\n return new Error('There are some read requests waitng on finished stream');\n }\n\n if (this._buffer.length > 0) {\n return new Error('unrecognised content at end of stream');\n }\n\n};\n", "'use strict';\n\nvar SyncReader = require('./sync-reader');\nvar Filter = require('./filter-parse');\n\n\nexports.process = function(inBuffer, bitmapInfo) {\n\n var outBuffers = [];\n var reader = new SyncReader(inBuffer);\n var filter = new Filter(bitmapInfo, {\n read: reader.read.bind(reader),\n write: function(bufferPart) {\n outBuffers.push(bufferPart);\n },\n complete: function() {\n }\n });\n\n filter.start();\n reader.process();\n\n return Buffer.concat(outBuffers);\n};", "'use strict';\n\nvar hasSyncZlib = true;\nvar zlib = require('zlib');\nif (!zlib.deflateSync) {\n hasSyncZlib = false;\n}\nvar SyncReader = require('./sync-reader');\nvar FilterSync = require('./filter-parse-sync');\nvar Parser = require('./parser');\nvar bitmapper = require('./bitmapper');\nvar formatNormaliser = require('./format-normaliser');\n\n\nmodule.exports = function(buffer, options) {\n\n if (!hasSyncZlib) {\n throw new Error('To use the sync capability of this library in old node versions, please also add a dependency on node-zlb-backport');\n }\n\n var err;\n function handleError(_err_) {\n err = _err_;\n }\n\n var metaData;\n function handleMetaData(_metaData_) {\n metaData = _metaData_;\n }\n\n function handleTransColor(transColor) {\n metaData.transColor = transColor;\n }\n\n function handlePalette(palette) {\n metaData.palette = palette;\n }\n\n var gamma;\n function handleGamma(_gamma_) {\n gamma = _gamma_;\n }\n\n var inflateDataList = [];\n function handleInflateData(inflatedData) {\n inflateDataList.push(inflatedData);\n }\n\n var reader = new SyncReader(buffer);\n\n var parser = new Parser(options, {\n read: reader.read.bind(reader),\n error: handleError,\n metadata: handleMetaData,\n gamma: handleGamma,\n palette: handlePalette,\n transColor: handleTransColor,\n inflateData: handleInflateData\n });\n\n parser.start();\n reader.process();\n\n if (err) {\n throw err;\n }\n\n //join together the inflate datas\n var inflateData = Buffer.concat(inflateDataList);\n inflateDataList.length = 0;\n\n var inflatedData = zlib.inflateSync(inflateData);\n inflateData = null;\n\n if (!inflatedData || !inflatedData.length) {\n throw new Error('bad png - invalid inflate data response');\n }\n\n var unfilteredData = FilterSync.process(inflatedData, metaData);\n inflateData = null;\n\n var bitmapData = bitmapper.dataToBitMap(unfilteredData, metaData);\n unfilteredData = null;\n\n var normalisedBitmapData = formatNormaliser(bitmapData, metaData);\n\n metaData.data = normalisedBitmapData;\n metaData.gamma = gamma || 0;\n\n return metaData;\n};\n", "'use strict';\n\nvar hasSyncZlib = true;\nvar zlib = require('zlib');\nif (!zlib.deflateSync) {\n hasSyncZlib = false;\n}\nvar constants = require('./constants');\nvar Packer = require('./packer');\n\nmodule.exports = function(metaData, opt) {\n\n if (!hasSyncZlib) {\n throw new Error('To use the sync capability of this library in old node versions, please also add a dependency on node-zlb-backport');\n }\n\n var options = opt || {};\n\n var packer = new Packer(options);\n\n var chunks = [];\n\n // Signature\n chunks.push(new Buffer(constants.PNG_SIGNATURE));\n\n // Header\n chunks.push(packer.packIHDR(metaData.width, metaData.height));\n\n if (metaData.gamma) {\n chunks.push(packer.packGAMA(metaData.gamma));\n }\n\n var filteredData = packer.filterData(metaData.data, metaData.width, metaData.height);\n\n // compress it\n var compressedData = zlib.deflateSync(filteredData, packer.getDeflateOptions());\n filteredData = null;\n\n if (!compressedData || !compressedData.length) {\n throw new Error('bad png - invalid compressed data response');\n }\n chunks.push(packer.packIDAT(compressedData));\n\n // End\n chunks.push(packer.packIEND());\n\n return Buffer.concat(chunks);\n};\n", "'use strict';\n\n\nvar parse = require('./parser-sync');\nvar pack = require('./packer-sync');\n\n\nexports.read = function(buffer, options) {\n\n return parse(buffer, options || {});\n};\n\nexports.write = function(png) {\n\n return pack(png);\n};\n", "'use strict';\n\nvar util = require('util');\nvar Stream = require('stream');\nvar Parser = require('./parser-async');\nvar Packer = require('./packer-async');\nvar PNGSync = require('./png-sync');\n\n\nvar PNG = exports.PNG = function(options) {\n Stream.call(this);\n\n options = options || {}; // eslint-disable-line no-param-reassign\n\n this.width = options.width || 0;\n this.height = options.height || 0;\n\n this.data = this.width > 0 && this.height > 0 ?\n new Buffer(4 * this.width * this.height) : null;\n\n if (options.fill && this.data) {\n this.data.fill(0);\n }\n\n this.gamma = 0;\n this.readable = this.writable = true;\n\n this._parser = new Parser(options);\n\n this._parser.on('error', this.emit.bind(this, 'error'));\n this._parser.on('close', this._handleClose.bind(this));\n this._parser.on('metadata', this._metadata.bind(this));\n this._parser.on('gamma', this._gamma.bind(this));\n this._parser.on('parsed', function(data) {\n this.data = data;\n this.emit('parsed', data);\n }.bind(this));\n\n this._packer = new Packer(options);\n this._packer.on('data', this.emit.bind(this, 'data'));\n this._packer.on('end', this.emit.bind(this, 'end'));\n this._parser.on('close', this._handleClose.bind(this));\n this._packer.on('error', this.emit.bind(this, 'error'));\n\n};\nutil.inherits(PNG, Stream);\n\nPNG.sync = PNGSync;\n\nPNG.prototype.pack = function() {\n\n if (!this.data || !this.data.length) {\n this.emit('error', 'No data provided');\n return this;\n }\n\n process.nextTick(function() {\n this._packer.pack(this.data, this.width, this.height, this.gamma);\n }.bind(this));\n\n return this;\n};\n\n\nPNG.prototype.parse = function(data, callback) {\n\n if (callback) {\n var onParsed, onError;\n\n onParsed = function(parsedData) {\n this.removeListener('error', onError);\n\n this.data = parsedData;\n callback(null, this);\n }.bind(this);\n\n onError = function(err) {\n this.removeListener('parsed', onParsed);\n\n callback(err, null);\n }.bind(this);\n\n this.once('parsed', onParsed);\n this.once('error', onError);\n }\n\n this.end(data);\n return this;\n};\n\nPNG.prototype.write = function(data) {\n this._parser.write(data);\n return true;\n};\n\nPNG.prototype.end = function(data) {\n this._parser.end(data);\n};\n\nPNG.prototype._metadata = function(metadata) {\n this.width = metadata.width;\n this.height = metadata.height;\n\n this.emit('metadata', metadata);\n};\n\nPNG.prototype._gamma = function(gamma) {\n this.gamma = gamma;\n};\n\nPNG.prototype._handleClose = function() {\n if (!this._parser.writable && !this._packer.readable) {\n this.emit('close');\n }\n};\n\n\nPNG.bitblt = function(src, dst, srcX, srcY, width, height, deltaX, deltaY) { // eslint-disable-line max-params\n\n if (srcX > src.width || srcY > src.height || srcX + width > src.width || srcY + height > src.height) {\n throw new Error('bitblt reading outside image');\n }\n\n if (deltaX > dst.width || deltaY > dst.height || deltaX + width > dst.width || deltaY + height > dst.height) {\n throw new Error('bitblt writing outside image');\n }\n\n for (var y = 0; y < height; y++) {\n src.data.copy(dst.data,\n ((deltaY + y) * dst.width + deltaX) << 2,\n ((srcY + y) * src.width + srcX) << 2,\n ((srcY + y) * src.width + srcX + width) << 2\n );\n }\n};\n\n\nPNG.prototype.bitblt = function(dst, srcX, srcY, width, height, deltaX, deltaY) { // eslint-disable-line max-params\n\n PNG.bitblt(this, dst, srcX, srcY, width, height, deltaX, deltaY);\n return this;\n};\n\nPNG.adjustGamma = function(src) {\n if (src.gamma) {\n for (var y = 0; y < src.height; y++) {\n for (var x = 0; x < src.width; x++) {\n var idx = (src.width * y + x) << 2;\n\n for (var i = 0; i < 3; i++) {\n var sample = src.data[idx + i] / 255;\n sample = Math.pow(sample, 1 / 2.2 / src.gamma);\n src.data[idx + i] = Math.round(sample * 255);\n }\n }\n }\n src.gamma = 0;\n }\n};\n\nPNG.prototype.adjustGamma = function() {\n PNG.adjustGamma(this);\n};\n", "\"use strict\"\n\nfunction iota(n) {\n var result = new Array(n)\n for(var i=0; i\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n", "var iota = require(\"iota-array\")\nvar isBuffer = require(\"is-buffer\")\n\nvar hasTypedArrays = ((typeof Float64Array) !== \"undefined\")\n\nfunction compare1st(a, b) {\n return a[0] - b[0]\n}\n\nfunction order() {\n var stride = this.stride\n var terms = new Array(stride.length)\n var i\n for(i=0; iMath.abs(this.stride[1]))?[1,0]:[0,1]}})\")\n } else if(dimension === 3) {\n code.push(\n\"var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);\\\nif(s0>s1){\\\nif(s1>s2){\\\nreturn [2,1,0];\\\n}else if(s0>s2){\\\nreturn [1,2,0];\\\n}else{\\\nreturn [1,0,2];\\\n}\\\n}else if(s0>s2){\\\nreturn [2,0,1];\\\n}else if(s2>s1){\\\nreturn [0,1,2];\\\n}else{\\\nreturn [0,2,1];\\\n}}})\")\n }\n } else {\n code.push(\"ORDER})\")\n }\n }\n\n //view.set(i0, ..., v):\n code.push(\n\"proto.set=function \"+className+\"_set(\"+args.join(\",\")+\",v){\")\n if(useGetters) {\n code.push(\"return this.data.set(\"+index_str+\",v)}\")\n } else {\n code.push(\"return this.data[\"+index_str+\"]=v}\")\n }\n\n //view.get(i0, ...):\n code.push(\"proto.get=function \"+className+\"_get(\"+args.join(\",\")+\"){\")\n if(useGetters) {\n code.push(\"return this.data.get(\"+index_str+\")}\")\n } else {\n code.push(\"return this.data[\"+index_str+\"]}\")\n }\n\n //view.index:\n code.push(\n \"proto.index=function \"+className+\"_index(\", args.join(), \"){return \"+index_str+\"}\")\n\n //view.hi():\n code.push(\"proto.hi=function \"+className+\"_hi(\"+args.join(\",\")+\"){return new \"+className+\"(this.data,\"+\n indices.map(function(i) {\n return [\"(typeof i\",i,\"!=='number'||i\",i,\"<0)?this.shape[\", i, \"]:i\", i,\"|0\"].join(\"\")\n }).join(\",\")+\",\"+\n indices.map(function(i) {\n return \"this.stride[\"+i + \"]\"\n }).join(\",\")+\",this.offset)}\")\n\n //view.lo():\n var a_vars = indices.map(function(i) { return \"a\"+i+\"=this.shape[\"+i+\"]\" })\n var c_vars = indices.map(function(i) { return \"c\"+i+\"=this.stride[\"+i+\"]\" })\n code.push(\"proto.lo=function \"+className+\"_lo(\"+args.join(\",\")+\"){var b=this.offset,d=0,\"+a_vars.join(\",\")+\",\"+c_vars.join(\",\"))\n for(var i=0; i=0){\\\nd=i\"+i+\"|0;\\\nb+=c\"+i+\"*d;\\\na\"+i+\"-=d}\")\n }\n code.push(\"return new \"+className+\"(this.data,\"+\n indices.map(function(i) {\n return \"a\"+i\n }).join(\",\")+\",\"+\n indices.map(function(i) {\n return \"c\"+i\n }).join(\",\")+\",b)}\")\n\n //view.step():\n code.push(\"proto.step=function \"+className+\"_step(\"+args.join(\",\")+\"){var \"+\n indices.map(function(i) {\n return \"a\"+i+\"=this.shape[\"+i+\"]\"\n }).join(\",\")+\",\"+\n indices.map(function(i) {\n return \"b\"+i+\"=this.stride[\"+i+\"]\"\n }).join(\",\")+\",c=this.offset,d=0,ceil=Math.ceil\")\n for(var i=0; i=0){c=(c+this.stride[\"+i+\"]*i\"+i+\")|0}else{a.push(this.shape[\"+i+\"]);b.push(this.stride[\"+i+\"])}\")\n }\n code.push(\"var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}\")\n\n //Add return statement\n code.push(\"return function construct_\"+className+\"(data,shape,stride,offset){return new \"+className+\"(data,\"+\n indices.map(function(i) {\n return \"shape[\"+i+\"]\"\n }).join(\",\")+\",\"+\n indices.map(function(i) {\n return \"stride[\"+i+\"]\"\n }).join(\",\")+\",offset)}\")\n\n //Compile procedure\n var procedure = new Function(\"CTOR_LIST\", \"ORDER\", code.join(\"\\n\"))\n return procedure(CACHED_CONSTRUCTORS[dtype], order)\n}\n\nfunction arrayDType(data) {\n if(isBuffer(data)) {\n return \"buffer\"\n }\n if(hasTypedArrays) {\n switch(Object.prototype.toString.call(data)) {\n case \"[object Float64Array]\":\n return \"float64\"\n case \"[object Float32Array]\":\n return \"float32\"\n case \"[object Int8Array]\":\n return \"int8\"\n case \"[object Int16Array]\":\n return \"int16\"\n case \"[object Int32Array]\":\n return \"int32\"\n case \"[object Uint8Array]\":\n return \"uint8\"\n case \"[object Uint16Array]\":\n return \"uint16\"\n case \"[object Uint32Array]\":\n return \"uint32\"\n case \"[object Uint8ClampedArray]\":\n return \"uint8_clamped\"\n case \"[object BigInt64Array]\":\n return \"bigint64\"\n case \"[object BigUint64Array]\":\n return \"biguint64\"\n }\n }\n if(Array.isArray(data)) {\n return \"array\"\n }\n return \"generic\"\n}\n\nvar CACHED_CONSTRUCTORS = {\n \"float32\":[],\n \"float64\":[],\n \"int8\":[],\n \"int16\":[],\n \"int32\":[],\n \"uint8\":[],\n \"uint16\":[],\n \"uint32\":[],\n \"array\":[],\n \"uint8_clamped\":[],\n \"bigint64\": [],\n \"biguint64\": [],\n \"buffer\":[],\n \"generic\":[]\n}\n\n;(function() {\n for(var id in CACHED_CONSTRUCTORS) {\n CACHED_CONSTRUCTORS[id].push(compileConstructor(id, -1))\n }\n});\n\nfunction wrappedNDArrayCtor(data, shape, stride, offset) {\n if(data === undefined) {\n var ctor = CACHED_CONSTRUCTORS.array[0]\n return ctor([])\n } else if(typeof data === \"number\") {\n data = [data]\n }\n if(shape === undefined) {\n shape = [ data.length ]\n }\n var d = shape.length\n if(stride === undefined) {\n stride = new Array(d)\n for(var i=d-1, sz=1; i>=0; --i) {\n stride[i] = sz\n sz *= shape[i]\n }\n }\n if(offset === undefined) {\n offset = 0\n for(var i=0; i0\n , code = []\n , vars = []\n , idx=0, pidx=0, i, j\n for(i=0; i 0) {\n code.push(\"var \" + vars.join(\",\"))\n } \n //Scan loop\n for(i=dimension-1; i>=0; --i) { // Start at largest stride and work your way inwards\n idx = order[i]\n code.push([\"for(i\",i,\"=0;i\",i,\" 0) {\n code.push([\"index[\",pidx,\"]-=s\",pidx].join(\"\"))\n }\n code.push([\"++index[\",idx,\"]\"].join(\"\"))\n }\n code.push(\"}\")\n }\n return code.join(\"\\n\")\n}\n\n// Generate \"outer\" loops that loop over blocks of data, applying \"inner\" loops to the blocks by manipulating the local variables in such a way that the inner loop only \"sees\" the current block.\n// TODO: If this is used, then the previous declaration (done by generateCwiseOp) of s* is essentially unnecessary.\n// I believe the s* are not used elsewhere (in particular, I don't think they're used in the pre/post parts and \"shape\" is defined independently), so it would be possible to make defining the s* dependent on what loop method is being used.\nfunction outerFill(matched, order, proc, body) {\n var dimension = order.length\n , nargs = proc.arrayArgs.length\n , blockSize = proc.blockSize\n , has_index = proc.indexArgs.length > 0\n , code = []\n for(var i=0; i0;){\"].join(\"\")) // Iterate back to front\n code.push([\"if(j\",i,\"<\",blockSize,\"){\"].join(\"\")) // Either decrease j by blockSize (s = blockSize), or set it to zero (after setting s = j).\n code.push([\"s\",order[i],\"=j\",i].join(\"\"))\n code.push([\"j\",i,\"=0\"].join(\"\"))\n code.push([\"}else{s\",order[i],\"=\",blockSize].join(\"\"))\n code.push([\"j\",i,\"-=\",blockSize,\"}\"].join(\"\"))\n if(has_index) {\n code.push([\"index[\",order[i],\"]=j\",i].join(\"\"))\n }\n }\n for(var i=0; i 0) {\n allEqual = allEqual && summary[i] === summary[i-1]\n }\n }\n if(allEqual) {\n return summary[0]\n }\n return summary.join(\"\")\n}\n\n//Generates a cwise operator\nfunction generateCWiseOp(proc, typesig) {\n\n //Compute dimension\n // Arrays get put first in typesig, and there are two entries per array (dtype and order), so this gets the number of dimensions in the first array arg.\n var dimension = (typesig[1].length - Math.abs(proc.arrayBlockIndices[0]))|0\n var orders = new Array(proc.arrayArgs.length)\n var dtypes = new Array(proc.arrayArgs.length)\n for(var i=0; i 0) {\n vars.push(\"shape=SS.slice(0)\") // Makes the shape over which we iterate available to the user defined functions (so you can use width/height for example)\n }\n if(proc.indexArgs.length > 0) {\n // Prepare an array to keep track of the (logical) indices, initialized to dimension zeroes.\n var zeros = new Array(dimension)\n for(var i=0; i 0) {\n code.push(\"var \" + vars.join(\",\"))\n }\n for(var i=0; i 3) {\n code.push(processBlock(proc.pre, proc, dtypes))\n }\n\n //Process body\n var body = processBlock(proc.body, proc, dtypes)\n var matched = countMatches(loopOrders)\n if(matched < dimension) {\n code.push(outerFill(matched, loopOrders[0], proc, body)) // TODO: Rather than passing loopOrders[0], it might be interesting to look at passing an order that represents the majority of the arguments for example.\n } else {\n code.push(innerFill(loopOrders[0], proc, body))\n }\n\n //Inline epilog\n if(proc.post.body.length > 3) {\n code.push(processBlock(proc.post, proc, dtypes))\n }\n \n if(proc.debug) {\n console.log(\"-----Generated cwise routine for \", typesig, \":\\n\" + code.join(\"\\n\") + \"\\n----------\")\n }\n \n var loopName = [(proc.funcName||\"unnamed\"), \"_cwise_loop_\", orders[0].join(\"s\"),\"m\",matched,typeSummary(dtypes)].join(\"\")\n var f = new Function([\"function \",loopName,\"(\", arglist.join(\",\"),\"){\", code.join(\"\\n\"),\"} return \", loopName].join(\"\"))\n return f()\n}\nmodule.exports = generateCWiseOp\n", "\"use strict\"\n\n// The function below is called when constructing a cwise function object, and does the following:\n// A function object is constructed which accepts as argument a compilation function and returns another function.\n// It is this other function that is eventually returned by createThunk, and this function is the one that actually\n// checks whether a certain pattern of arguments has already been used before and compiles new loops as needed.\n// The compilation passed to the first function object is used for compiling new functions.\n// Once this function object is created, it is called with compile as argument, where the first argument of compile\n// is bound to \"proc\" (essentially containing a preprocessed version of the user arguments to cwise).\n// So createThunk roughly works like this:\n// function createThunk(proc) {\n// var thunk = function(compileBound) {\n// var CACHED = {}\n// return function(arrays and scalars) {\n// if (dtype and order of arrays in CACHED) {\n// var func = CACHED[dtype and order of arrays]\n// } else {\n// var func = CACHED[dtype and order of arrays] = compileBound(dtype and order of arrays)\n// }\n// return func(arrays and scalars)\n// }\n// }\n// return thunk(compile.bind1(proc))\n// }\n\nvar compile = require(\"./compile.js\")\n\nfunction createThunk(proc) {\n var code = [\"'use strict'\", \"var CACHED={}\"]\n var vars = []\n var thunkName = proc.funcName + \"_cwise_thunk\"\n \n //Build thunk\n code.push([\"return function \", thunkName, \"(\", proc.shimArgs.join(\",\"), \"){\"].join(\"\"))\n var typesig = []\n var string_typesig = []\n var proc_args = [[\"array\",proc.arrayArgs[0],\".shape.slice(\", // Slice shape so that we only retain the shape over which we iterate (which gets passed to the cwise operator as SS).\n Math.max(0,proc.arrayBlockIndices[0]),proc.arrayBlockIndices[0]<0?(\",\"+proc.arrayBlockIndices[0]+\")\"):\")\"].join(\"\")]\n var shapeLengthConditions = [], shapeConditions = []\n // Process array arguments\n for(var i=0; i0) { // Gather conditions to check for shape equality (ignoring block indices)\n shapeLengthConditions.push(\"array\" + proc.arrayArgs[0] + \".shape.length===array\" + j + \".shape.length+\" + (Math.abs(proc.arrayBlockIndices[0])-Math.abs(proc.arrayBlockIndices[i])))\n shapeConditions.push(\"array\" + proc.arrayArgs[0] + \".shape[shapeIndex+\" + Math.max(0,proc.arrayBlockIndices[0]) + \"]===array\" + j + \".shape[shapeIndex+\" + Math.max(0,proc.arrayBlockIndices[i]) + \"]\")\n }\n }\n // Check for shape equality\n if (proc.arrayArgs.length > 1) {\n code.push(\"if (!(\" + shapeLengthConditions.join(\" && \") + \")) throw new Error('cwise: Arrays do not all have the same dimensionality!')\")\n code.push(\"for(var shapeIndex=array\" + proc.arrayArgs[0] + \".shape.length-\" + Math.abs(proc.arrayBlockIndices[0]) + \"; shapeIndex-->0;) {\")\n code.push(\"if (!(\" + shapeConditions.join(\" && \") + \")) throw new Error('cwise: Arrays do not all have the same shape!')\")\n code.push(\"}\")\n }\n // Process scalar arguments\n for(var i=0; i0) {\n throw new Error(\"cwise: pre() block may not reference array args\")\n }\n if(i < proc.post.args.length && proc.post.args[i].count>0) {\n throw new Error(\"cwise: post() block may not reference array args\")\n }\n } else if(arg_type === \"scalar\") {\n proc.scalarArgs.push(i)\n proc.shimArgs.push(\"scalar\" + i)\n } else if(arg_type === \"index\") {\n proc.indexArgs.push(i)\n if(i < proc.pre.args.length && proc.pre.args[i].count > 0) {\n throw new Error(\"cwise: pre() block may not reference array index\")\n }\n if(i < proc.body.args.length && proc.body.args[i].lvalue) {\n throw new Error(\"cwise: body() block may not write to array index\")\n }\n if(i < proc.post.args.length && proc.post.args[i].count > 0) {\n throw new Error(\"cwise: post() block may not reference array index\")\n }\n } else if(arg_type === \"shape\") {\n proc.shapeArgs.push(i)\n if(i < proc.pre.args.length && proc.pre.args[i].lvalue) {\n throw new Error(\"cwise: pre() block may not write to array shape\")\n }\n if(i < proc.body.args.length && proc.body.args[i].lvalue) {\n throw new Error(\"cwise: body() block may not write to array shape\")\n }\n if(i < proc.post.args.length && proc.post.args[i].lvalue) {\n throw new Error(\"cwise: post() block may not write to array shape\")\n }\n } else if(typeof arg_type === \"object\" && arg_type.offset) {\n proc.argTypes[i] = \"offset\"\n proc.offsetArgs.push({ array: arg_type.array, offset:arg_type.offset })\n proc.offsetArgIndex.push(i)\n } else {\n throw new Error(\"cwise: Unknown argument type \" + proc_args[i])\n }\n }\n \n //Make sure at least one array argument was specified\n if(proc.arrayArgs.length <= 0) {\n throw new Error(\"cwise: No array arguments specified\")\n }\n \n //Make sure arguments are correct\n if(proc.pre.args.length > proc_args.length) {\n throw new Error(\"cwise: Too many arguments in pre() block\")\n }\n if(proc.body.args.length > proc_args.length) {\n throw new Error(\"cwise: Too many arguments in body() block\")\n }\n if(proc.post.args.length > proc_args.length) {\n throw new Error(\"cwise: Too many arguments in post() block\")\n }\n\n //Check debug flag\n proc.debug = !!user_args.printCode || !!user_args.debug\n \n //Retrieve name\n proc.funcName = user_args.funcName || \"cwise\"\n \n //Read in block size\n proc.blockSize = user_args.blockSize || 64\n\n return createThunk(proc)\n}\n\nmodule.exports = compileCwise\n", "\"use strict\"\n\nvar compile = require(\"cwise-compiler\")\n\nvar EmptyProc = {\n body: \"\",\n args: [],\n thisVars: [],\n localVars: []\n}\n\nfunction fixup(x) {\n if(!x) {\n return EmptyProc\n }\n for(var i=0; i>\",\n rrshift: \">>>\"\n}\n;(function(){\n for(var id in assign_ops) {\n var op = assign_ops[id]\n exports[id] = makeOp({\n args: [\"array\",\"array\",\"array\"],\n body: {args:[\"a\",\"b\",\"c\"],\n body: \"a=b\"+op+\"c\"},\n funcName: id\n })\n exports[id+\"eq\"] = makeOp({\n args: [\"array\",\"array\"],\n body: {args:[\"a\",\"b\"],\n body:\"a\"+op+\"=b\"},\n rvalue: true,\n funcName: id+\"eq\"\n })\n exports[id+\"s\"] = makeOp({\n args: [\"array\", \"array\", \"scalar\"],\n body: {args:[\"a\",\"b\",\"s\"],\n body:\"a=b\"+op+\"s\"},\n funcName: id+\"s\"\n })\n exports[id+\"seq\"] = makeOp({\n args: [\"array\",\"scalar\"],\n body: {args:[\"a\",\"s\"],\n body:\"a\"+op+\"=s\"},\n rvalue: true,\n funcName: id+\"seq\"\n })\n }\n})();\n\nvar unary_ops = {\n not: \"!\",\n bnot: \"~\",\n neg: \"-\",\n recip: \"1.0/\"\n}\n;(function(){\n for(var id in unary_ops) {\n var op = unary_ops[id]\n exports[id] = makeOp({\n args: [\"array\", \"array\"],\n body: {args:[\"a\",\"b\"],\n body:\"a=\"+op+\"b\"},\n funcName: id\n })\n exports[id+\"eq\"] = makeOp({\n args: [\"array\"],\n body: {args:[\"a\"],\n body:\"a=\"+op+\"a\"},\n rvalue: true,\n count: 2,\n funcName: id+\"eq\"\n })\n }\n})();\n\nvar binary_ops = {\n and: \"&&\",\n or: \"||\",\n eq: \"===\",\n neq: \"!==\",\n lt: \"<\",\n gt: \">\",\n leq: \"<=\",\n geq: \">=\"\n}\n;(function() {\n for(var id in binary_ops) {\n var op = binary_ops[id]\n exports[id] = makeOp({\n args: [\"array\",\"array\",\"array\"],\n body: {args:[\"a\", \"b\", \"c\"],\n body:\"a=b\"+op+\"c\"},\n funcName: id\n })\n exports[id+\"s\"] = makeOp({\n args: [\"array\",\"array\",\"scalar\"],\n body: {args:[\"a\", \"b\", \"s\"],\n body:\"a=b\"+op+\"s\"},\n funcName: id+\"s\"\n })\n exports[id+\"eq\"] = makeOp({\n args: [\"array\", \"array\"],\n body: {args:[\"a\", \"b\"],\n body:\"a=a\"+op+\"b\"},\n rvalue:true,\n count:2,\n funcName: id+\"eq\"\n })\n exports[id+\"seq\"] = makeOp({\n args: [\"array\", \"scalar\"],\n body: {args:[\"a\",\"s\"],\n body:\"a=a\"+op+\"s\"},\n rvalue:true,\n count:2,\n funcName: id+\"seq\"\n })\n }\n})();\n\nvar math_unary = [\n \"abs\",\n \"acos\",\n \"asin\",\n \"atan\",\n \"ceil\",\n \"cos\",\n \"exp\",\n \"floor\",\n \"log\",\n \"round\",\n \"sin\",\n \"sqrt\",\n \"tan\"\n]\n;(function() {\n for(var i=0; ithis_s){this_s=-a}else if(a>this_s){this_s=a}\", localVars: [], thisVars: [\"this_s\"]},\n post: {args:[], localVars:[], thisVars:[\"this_s\"], body:\"return this_s\"},\n funcName: \"norminf\"\n})\n\nexports.norm1 = compile({\n args:[\"array\"],\n pre: {args:[], localVars:[], thisVars:[\"this_s\"], body:\"this_s=0\"},\n body: {args:[{name:\"a\", lvalue:false, rvalue:true, count:3}], body: \"this_s+=a<0?-a:a\", localVars: [], thisVars: [\"this_s\"]},\n post: {args:[], localVars:[], thisVars:[\"this_s\"], body:\"return this_s\"},\n funcName: \"norm1\"\n})\n\nexports.sup = compile({\n args: [ \"array\" ],\n pre:\n { body: \"this_h=-Infinity\",\n args: [],\n thisVars: [ \"this_h\" ],\n localVars: [] },\n body:\n { body: \"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_\",\n args: [{\"name\":\"_inline_1_arg0_\",\"lvalue\":false,\"rvalue\":true,\"count\":2} ],\n thisVars: [ \"this_h\" ],\n localVars: [] },\n post:\n { body: \"return this_h\",\n args: [],\n thisVars: [ \"this_h\" ],\n localVars: [] }\n })\n\nexports.inf = compile({\n args: [ \"array\" ],\n pre:\n { body: \"this_h=Infinity\",\n args: [],\n thisVars: [ \"this_h\" ],\n localVars: [] },\n body:\n { body: \"if(_inline_1_arg0_this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}\",\n args:[\n {name:\"_inline_1_arg0_\",lvalue:false,rvalue:true,count:2},\n {name:\"_inline_1_arg1_\",lvalue:false,rvalue:true,count:2}],\n thisVars:[\"this_i\",\"this_v\"],\n localVars:[\"_inline_1_k\"]},\n post:{\n body:\"{return this_i}\",\n args:[],\n thisVars:[\"this_i\"],\n localVars:[]}\n}) \n\nexports.random = makeOp({\n args: [\"array\"],\n pre: {args:[], body:\"this_f=Math.random\", thisVars:[\"this_f\"]},\n body: {args: [\"a\"], body:\"a=this_f()\", thisVars:[\"this_f\"]},\n funcName: \"random\"\n})\n\nexports.assign = makeOp({\n args:[\"array\", \"array\"],\n body: {args:[\"a\", \"b\"], body:\"a=b\"},\n funcName: \"assign\" })\n\nexports.assigns = makeOp({\n args:[\"array\", \"scalar\"],\n body: {args:[\"a\", \"b\"], body:\"a=b\"},\n funcName: \"assigns\" })\n\n\nexports.equals = compile({\n args:[\"array\", \"array\"],\n pre: EmptyProc,\n body: {args:[{name:\"x\", lvalue:false, rvalue:true, count:1},\n {name:\"y\", lvalue:false, rvalue:true, count:1}], \n body: \"if(x!==y){return false}\", \n localVars: [], \n thisVars: []},\n post: {args:[], localVars:[], thisVars:[], body:\"return true\"},\n funcName: \"equals\"\n})\n\n\n", "var Stream = require('stream')\n\n// through\n//\n// a stream that does nothing but re-emit the input.\n// useful for aggregating a series of changing but not ending streams into one stream)\n\nexports = module.exports = through\nthrough.through = through\n\n//create a readable writable stream.\n\nfunction through (write, end, opts) {\n write = write || function (data) { this.queue(data) }\n end = end || function () { this.queue(null) }\n\n var ended = false, destroyed = false, buffer = [], _ended = false\n var stream = new Stream()\n stream.readable = stream.writable = true\n stream.paused = false\n\n// stream.autoPause = !(opts && opts.autoPause === false)\n stream.autoDestroy = !(opts && opts.autoDestroy === false)\n\n stream.write = function (data) {\n write.call(this, data)\n return !stream.paused\n }\n\n function drain() {\n while(buffer.length && !stream.paused) {\n var data = buffer.shift()\n if(null === data)\n return stream.emit('end')\n else\n stream.emit('data', data)\n }\n }\n\n stream.queue = stream.push = function (data) {\n// console.error(ended)\n if(_ended) return stream\n if(data === null) _ended = true\n buffer.push(data)\n drain()\n return stream\n }\n\n //this will be registered as the first 'end' listener\n //must call destroy next tick, to make sure we're after any\n //stream piped from here.\n //this is only a problem if end is not emitted synchronously.\n //a nicer way to do this is to make sure this is the last listener for 'end'\n\n stream.on('end', function () {\n stream.readable = false\n if(!stream.writable && stream.autoDestroy)\n process.nextTick(function () {\n stream.destroy()\n })\n })\n\n function _end () {\n stream.writable = false\n end.call(stream)\n if(!stream.readable && stream.autoDestroy)\n stream.destroy()\n }\n\n stream.end = function (data) {\n if(ended) return\n ended = true\n if(arguments.length) stream.write(data)\n _end() // will emit or queue\n return stream\n }\n\n stream.destroy = function () {\n if(destroyed) return\n destroyed = true\n ended = true\n buffer.length = 0\n stream.writable = stream.readable = false\n stream.emit('close')\n return stream\n }\n\n stream.pause = function () {\n if(stream.paused) return\n stream.paused = true\n return stream\n }\n\n stream.resume = function () {\n if(stream.paused) {\n stream.paused = false\n stream.emit('resume')\n }\n drain()\n //may have become paused again,\n //as drain emits 'data'.\n if(!stream.paused)\n stream.emit('drain')\n return stream\n }\n return stream\n}\n\n", "'use strict'\n\nvar ContentStream = require('contentstream')\nvar GifEncoder = require('gif-encoder')\nvar jpegJs = require('jpeg-js')\nvar PNG = require('pngjs-nozlib').PNG\nvar ndarray = require('ndarray')\nvar ops = require('ndarray-ops')\nvar through = require('through')\n\nfunction handleData (array, data, frame) {\n var i, j, ptr = 0, c\n if (array.shape.length === 4) {\n return handleData(array.pick(frame), data, 0)\n } else if (array.shape.length === 3) {\n if (array.shape[2] === 3) {\n ops.assign(\n ndarray(data,\n [array.shape[0], array.shape[1], 3],\n [4, 4 * array.shape[0], 1]),\n array)\n ops.assigns(\n ndarray(data,\n [array.shape[0] * array.shape[1]],\n [4],\n 3),\n 255)\n } else if (array.shape[2] === 4) {\n ops.assign(\n ndarray(data,\n [array.shape[0], array.shape[1], 4],\n [4, array.shape[0] * 4, 1]),\n array)\n } else if (array.shape[2] === 1) {\n ops.assign(\n ndarray(data,\n [array.shape[0], array.shape[1], 3],\n [4, 4 * array.shape[0], 1]),\n ndarray(array.data,\n [array.shape[0], array.shape[1], 3],\n [array.stride[0], array.stride[1], 0],\n array.offset))\n ops.assigns(\n ndarray(data,\n [array.shape[0] * array.shape[1]],\n [4],\n 3),\n 255)\n } else {\n return new Error('Incompatible array shape')\n }\n } else if (array.shape.length === 2) {\n ops.assign(\n ndarray(data,\n [array.shape[0], array.shape[1], 3],\n [4, 4 * array.shape[0], 1]),\n ndarray(array.data,\n [array.shape[0], array.shape[1], 3],\n [array.stride[0], array.stride[1], 0],\n array.offset))\n ops.assigns(\n ndarray(data,\n [array.shape[0] * array.shape[1]],\n [4],\n 3),\n 255)\n } else {\n return new Error('Incompatible array shape')\n }\n return data\n}\n\nfunction haderror (err) {\n var result = through()\n result.emit('error', err)\n return result\n}\n\nmodule.exports = function savePixels (array, type, options) {\n options = options || {}\n switch (type.toUpperCase()) {\n case 'JPG':\n case '.JPG':\n case 'JPEG':\n case '.JPEG':\n case 'JPE':\n case '.JPE':\n var width = array.shape[0]\n var height = array.shape[1]\n var data = new Buffer(width * height * 4)\n data = handleData(array, data)\n var rawImageData = {\n data: data,\n width: width,\n height: height\n }\n var jpegImageData = jpegJs.encode(rawImageData, options.quality)\n return new ContentStream(jpegImageData.data)\n\n case 'GIF':\n case '.GIF':\n var frames = array.shape.length === 4 ? array.shape[0] : 1\n var width = array.shape.length === 4 ? array.shape[1] : array.shape[0]\n var height = array.shape.length === 4 ? array.shape[2] : array.shape[1]\n var data = new Buffer(width * height * 4)\n var gif = new GifEncoder(width, height)\n gif.writeHeader()\n for (var i = 0; i < frames; i++) {\n data = handleData(array, data, i)\n gif.addFrame(data)\n }\n gif.finish()\n return gif\n\n case 'PNG':\n case '.PNG':\n var png = new PNG({\n width: array.shape[0],\n height: array.shape[1]\n })\n var data = handleData(array, png.data)\n if (typeof data === 'Error') return haderror(data)\n png.data = data\n return png.pack()\n\n case 'CANVAS':\n var canvas = document.createElement('canvas')\n var context = canvas.getContext('2d')\n canvas.width = array.shape[0]\n canvas.height = array.shape[1]\n var imageData = context.getImageData(0, 0, canvas.width, canvas.height)\n var data = imageData.data\n data = handleData(array, data)\n if (typeof data === 'Error') return haderror(data)\n context.putImageData(imageData, 0, 0)\n return canvas\n\n default:\n return haderror(new Error('Unsupported file type: ' + type))\n }\n}\n", "'use strict';\n\n\nvar util = require('util');\nvar Stream = require('stream');\n\n\nvar ChunkStream = module.exports = function() {\n Stream.call(this);\n\n this._buffers = [];\n this._buffered = 0;\n\n this._reads = [];\n this._paused = false;\n\n this._encoding = 'utf8';\n this.writable = true;\n};\nutil.inherits(ChunkStream, Stream);\n\n\nChunkStream.prototype.read = function(length, callback) {\n\n this._reads.push({\n length: Math.abs(length), // if length < 0 then at most this length\n allowLess: length < 0,\n func: callback\n });\n\n process.nextTick(function() {\n this._process();\n\n // its paused and there is not enought data then ask for more\n if (this._paused && this._reads.length > 0) {\n this._paused = false;\n\n this.emit('drain');\n }\n }.bind(this));\n};\n\nChunkStream.prototype.write = function(data, encoding) {\n\n if (!this.writable) {\n this.emit('error', new Error('Stream not writable'));\n return false;\n }\n\n var dataBuffer;\n if (Buffer.isBuffer(data)) {\n dataBuffer = data;\n }\n else {\n dataBuffer = new Buffer(data, encoding || this._encoding);\n }\n\n this._buffers.push(dataBuffer);\n this._buffered += dataBuffer.length;\n\n this._process();\n\n // ok if there are no more read requests\n if (this._reads && this._reads.length === 0) {\n this._paused = true;\n }\n\n return this.writable && !this._paused;\n};\n\nChunkStream.prototype.end = function(data, encoding) {\n\n if (data) {\n this.write(data, encoding);\n }\n\n this.writable = false;\n\n // already destroyed\n if (!this._buffers) {\n return;\n }\n\n // enqueue or handle end\n if (this._buffers.length === 0) {\n this._end();\n }\n else {\n this._buffers.push(null);\n this._process();\n }\n};\n\nChunkStream.prototype.destroySoon = ChunkStream.prototype.end;\n\nChunkStream.prototype._end = function() {\n\n if (this._reads.length > 0) {\n this.emit('error',\n new Error('Unexpected end of input')\n );\n }\n\n this.destroy();\n};\n\nChunkStream.prototype.destroy = function() {\n\n if (!this._buffers) {\n return;\n }\n\n this.writable = false;\n this._reads = null;\n this._buffers = null;\n\n this.emit('close');\n};\n\nChunkStream.prototype._processReadAllowingLess = function(read) {\n // ok there is any data so that we can satisfy this request\n this._reads.shift(); // == read\n\n // first we need to peek into first buffer\n var smallerBuf = this._buffers[0];\n\n // ok there is more data than we need\n if (smallerBuf.length > read.length) {\n\n this._buffered -= read.length;\n this._buffers[0] = smallerBuf.slice(read.length);\n\n read.func.call(this, smallerBuf.slice(0, read.length));\n\n }\n else {\n // ok this is less than maximum length so use it all\n this._buffered -= smallerBuf.length;\n this._buffers.shift(); // == smallerBuf\n\n read.func.call(this, smallerBuf);\n }\n};\n\nChunkStream.prototype._processRead = function(read) {\n this._reads.shift(); // == read\n\n var pos = 0;\n var count = 0;\n var data = new Buffer(read.length);\n\n // create buffer for all data\n while (pos < read.length) {\n\n var buf = this._buffers[count++];\n var len = Math.min(buf.length, read.length - pos);\n\n buf.copy(data, pos, 0, len);\n pos += len;\n\n // last buffer wasn't used all so just slice it and leave\n if (len !== buf.length) {\n this._buffers[--count] = buf.slice(len);\n }\n }\n\n // remove all used buffers\n if (count > 0) {\n this._buffers.splice(0, count);\n }\n\n this._buffered -= read.length;\n\n read.func.call(this, data);\n};\n\nChunkStream.prototype._process = function() {\n\n try {\n // as long as there is any data and read requests\n while (this._buffered > 0 && this._reads && this._reads.length > 0) {\n\n var read = this._reads[0];\n\n // read any data (but no more than length)\n if (read.allowLess) {\n this._processReadAllowingLess(read);\n\n }\n else if (this._buffered >= read.length) {\n // ok we can meet some expectations\n\n this._processRead(read);\n }\n else {\n // not enought data to satisfy first request in queue\n // so we need to wait for more\n break;\n }\n }\n\n if (this._buffers && !this.writable) {\n this._end();\n }\n }\n catch (ex) {\n this.emit('error', ex);\n }\n};\n", "'use strict';\n\n// Adam 7\n// 0 1 2 3 4 5 6 7\n// 0 x 6 4 6 x 6 4 6\n// 1 7 7 7 7 7 7 7 7\n// 2 5 6 5 6 5 6 5 6\n// 3 7 7 7 7 7 7 7 7\n// 4 3 6 4 6 3 6 4 6\n// 5 7 7 7 7 7 7 7 7\n// 6 5 6 5 6 5 6 5 6\n// 7 7 7 7 7 7 7 7 7\n\n\nvar imagePasses = [\n { // pass 1 - 1px\n x: [0],\n y: [0]\n },\n { // pass 2 - 1px\n x: [4],\n y: [0]\n },\n { // pass 3 - 2px\n x: [0, 4],\n y: [4]\n },\n { // pass 4 - 4px\n x: [2, 6],\n y: [0, 4]\n },\n { // pass 5 - 8px\n x: [0, 2, 4, 6],\n y: [2, 6]\n },\n { // pass 6 - 16px\n x: [1, 3, 5, 7],\n y: [0, 2, 4, 6]\n },\n { // pass 7 - 32px\n x: [0, 1, 2, 3, 4, 5, 6, 7],\n y: [1, 3, 5, 7]\n }\n];\n\nexports.getImagePasses = function(width, height) {\n var images = [];\n var xLeftOver = width % 8;\n var yLeftOver = height % 8;\n var xRepeats = (width - xLeftOver) / 8;\n var yRepeats = (height - yLeftOver) / 8;\n for (var i = 0; i < imagePasses.length; i++) {\n var pass = imagePasses[i];\n var passWidth = xRepeats * pass.x.length;\n var passHeight = yRepeats * pass.y.length;\n for (var j = 0; j < pass.x.length; j++) {\n if (pass.x[j] < xLeftOver) {\n passWidth++;\n }\n else {\n break;\n }\n }\n for (j = 0; j < pass.y.length; j++) {\n if (pass.y[j] < yLeftOver) {\n passHeight++;\n }\n else {\n break;\n }\n }\n if (passWidth > 0 && passHeight > 0) {\n images.push({ width: passWidth, height: passHeight, index: i });\n }\n }\n return images;\n};\n\nexports.getInterlaceIterator = function(width) {\n return function(x, y, pass) {\n var outerXLeftOver = x % imagePasses[pass].x.length;\n var outerX = (((x - outerXLeftOver) / imagePasses[pass].x.length) * 8) + imagePasses[pass].x[outerXLeftOver];\n var outerYLeftOver = y % imagePasses[pass].y.length;\n var outerY = (((y - outerYLeftOver) / imagePasses[pass].y.length) * 8) + imagePasses[pass].y[outerYLeftOver];\n return (outerX * 4) + (outerY * width * 4);\n };\n};", "'use strict';\r\n\r\nmodule.exports = function paethPredictor(left, above, upLeft) {\r\n\r\n var paeth = left + above - upLeft;\r\n var pLeft = Math.abs(paeth - left);\r\n var pAbove = Math.abs(paeth - above);\r\n var pUpLeft = Math.abs(paeth - upLeft);\r\n\r\n if (pLeft <= pAbove && pLeft <= pUpLeft) {\r\n return left;\r\n }\r\n if (pAbove <= pUpLeft) {\r\n return above;\r\n }\r\n return upLeft;\r\n};", "'use strict';\n\nvar interlaceUtils = require('./interlace');\nvar paethPredictor = require('./paeth-predictor');\n\nfunction getByteWidth(width, bpp, depth) {\n var byteWidth = width * bpp;\n if (depth !== 8) {\n byteWidth = Math.ceil(byteWidth / (8 / depth));\n }\n return byteWidth;\n}\n\nvar Filter = module.exports = function(bitmapInfo, dependencies) {\n\n var width = bitmapInfo.width;\n var height = bitmapInfo.height;\n var interlace = bitmapInfo.interlace;\n var bpp = bitmapInfo.bpp;\n var depth = bitmapInfo.depth;\n\n this.read = dependencies.read;\n this.write = dependencies.write;\n this.complete = dependencies.complete;\n\n this._imageIndex = 0;\n this._images = [];\n if (interlace) {\n var passes = interlaceUtils.getImagePasses(width, height);\n for (var i = 0; i < passes.length; i++) {\n this._images.push({\n byteWidth: getByteWidth(passes[i].width, bpp, depth),\n height: passes[i].height,\n lineIndex: 0\n });\n }\n }\n else {\n this._images.push({\n byteWidth: getByteWidth(width, bpp, depth),\n height: height,\n lineIndex: 0\n });\n }\n\n // when filtering the line we look at the pixel to the left\n // the spec also says it is done on a byte level regardless of the number of pixels\n // so if the depth is byte compatible (8 or 16) we subtract the bpp in order to compare back\n // a pixel rather than just a different byte part. However if we are sub byte, we ignore.\n if (depth === 8) {\n this._xComparison = bpp;\n }\n else if (depth === 16) {\n this._xComparison = bpp * 2;\n }\n else {\n this._xComparison = 1;\n }\n};\n\nFilter.prototype.start = function() {\n this.read(this._images[this._imageIndex].byteWidth + 1, this._reverseFilterLine.bind(this));\n};\n\nFilter.prototype._unFilterType1 = function(rawData, unfilteredLine, byteWidth) {\n\n var xComparison = this._xComparison;\n var xBiggerThan = xComparison - 1;\n\n for (var x = 0; x < byteWidth; x++) {\n var rawByte = rawData[1 + x];\n var f1Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n unfilteredLine[x] = rawByte + f1Left;\n }\n};\n\nFilter.prototype._unFilterType2 = function(rawData, unfilteredLine, byteWidth) {\n\n var lastLine = this._lastLine;\n\n for (var x = 0; x < byteWidth; x++) {\n var rawByte = rawData[1 + x];\n var f2Up = lastLine ? lastLine[x] : 0;\n unfilteredLine[x] = rawByte + f2Up;\n }\n};\n\nFilter.prototype._unFilterType3 = function(rawData, unfilteredLine, byteWidth) {\n\n var xComparison = this._xComparison;\n var xBiggerThan = xComparison - 1;\n var lastLine = this._lastLine;\n\n for (var x = 0; x < byteWidth; x++) {\n var rawByte = rawData[1 + x];\n var f3Up = lastLine ? lastLine[x] : 0;\n var f3Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n var f3Add = Math.floor((f3Left + f3Up) / 2);\n unfilteredLine[x] = rawByte + f3Add;\n }\n};\n\nFilter.prototype._unFilterType4 = function(rawData, unfilteredLine, byteWidth) {\n\n var xComparison = this._xComparison;\n var xBiggerThan = xComparison - 1;\n var lastLine = this._lastLine;\n\n for (var x = 0; x < byteWidth; x++) {\n var rawByte = rawData[1 + x];\n var f4Up = lastLine ? lastLine[x] : 0;\n var f4Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n var f4UpLeft = x > xBiggerThan && lastLine ? lastLine[x - xComparison] : 0;\n var f4Add = paethPredictor(f4Left, f4Up, f4UpLeft);\n unfilteredLine[x] = rawByte + f4Add;\n }\n};\n\nFilter.prototype._reverseFilterLine = function(rawData) {\n\n var filter = rawData[0];\n var unfilteredLine;\n var currentImage = this._images[this._imageIndex];\n var byteWidth = currentImage.byteWidth;\n\n if (filter === 0) {\n unfilteredLine = rawData.slice(1, byteWidth + 1);\n }\n else {\n\n unfilteredLine = new Buffer(byteWidth);\n\n switch (filter) {\n case 1:\n this._unFilterType1(rawData, unfilteredLine, byteWidth);\n break;\n case 2:\n this._unFilterType2(rawData, unfilteredLine, byteWidth);\n break;\n case 3:\n this._unFilterType3(rawData, unfilteredLine, byteWidth);\n break;\n case 4:\n this._unFilterType4(rawData, unfilteredLine, byteWidth);\n break;\n default:\n throw new Error('Unrecognised filter type - ' + filter);\n }\n }\n\n this.write(unfilteredLine);\n\n currentImage.lineIndex++;\n if (currentImage.lineIndex >= currentImage.height) {\n this._lastLine = null;\n this._imageIndex++;\n currentImage = this._images[this._imageIndex];\n }\n else {\n this._lastLine = unfilteredLine;\n }\n\n if (currentImage) {\n // read, using the byte width that may be from the new current image\n this.read(currentImage.byteWidth + 1, this._reverseFilterLine.bind(this));\n }\n else {\n this._lastLine = null;\n this.complete();\n }\n};\n", "'use strict';\n\nvar util = require('util');\nvar ChunkStream = require('./chunkstream');\nvar Filter = require('./filter-parse');\n\n\nvar FilterAsync = module.exports = function(bitmapInfo) {\n ChunkStream.call(this);\n\n var buffers = [];\n var that = this;\n this._filter = new Filter(bitmapInfo, {\n read: this.read.bind(this),\n write: function(buffer) {\n buffers.push(buffer);\n },\n complete: function() {\n that.emit('complete', Buffer.concat(buffers));\n }\n });\n\n this._filter.start();\n};\nutil.inherits(FilterAsync, ChunkStream);\n", "'use strict';\n\n\nmodule.exports = {\n\n PNG_SIGNATURE: [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a],\n\n TYPE_IHDR: 0x49484452,\n TYPE_IEND: 0x49454e44,\n TYPE_IDAT: 0x49444154,\n TYPE_PLTE: 0x504c5445,\n TYPE_tRNS: 0x74524e53, // eslint-disable-line camelcase\n TYPE_gAMA: 0x67414d41, // eslint-disable-line camelcase\n\n // color-type bits\n COLORTYPE_GRAYSCALE: 0,\n COLORTYPE_PALETTE: 1,\n COLORTYPE_COLOR: 2,\n COLORTYPE_ALPHA: 4, // e.g. grayscale and alpha\n\n // color-type combinations\n COLORTYPE_PALETTE_COLOR: 3,\n COLORTYPE_COLOR_ALPHA: 6,\n\n COLORTYPE_TO_BPP_MAP: {\n 0: 1,\n 2: 3,\n 3: 1,\n 4: 2,\n 6: 4\n },\n\n GAMMA_DIVISION: 100000\n};\n", "'use strict';\n\nvar crcTable = [];\n\n(function() {\n for (var i = 0; i < 256; i++) {\n var currentCrc = i;\n for (var j = 0; j < 8; j++) {\n if (currentCrc & 1) {\n currentCrc = 0xedb88320 ^ (currentCrc >>> 1);\n }\n else {\n currentCrc = currentCrc >>> 1;\n }\n }\n crcTable[i] = currentCrc;\n }\n}());\n\nvar CrcCalculator = module.exports = function() {\n this._crc = -1;\n};\n\nCrcCalculator.prototype.write = function(data) {\n\n for (var i = 0; i < data.length; i++) {\n this._crc = crcTable[(this._crc ^ data[i]) & 0xff] ^ (this._crc >>> 8);\n }\n return true;\n};\n\nCrcCalculator.prototype.crc32 = function() {\n return this._crc ^ -1;\n};\n\n\nCrcCalculator.crc32 = function(buf) {\n\n var crc = -1;\n for (var i = 0; i < buf.length; i++) {\n crc = crcTable[(crc ^ buf[i]) & 0xff] ^ (crc >>> 8);\n }\n return crc ^ -1;\n};\n", "'use strict';\n\nvar constants = require('./constants');\nvar CrcCalculator = require('./crc');\n\n\nvar Parser = module.exports = function(options, dependencies) {\n\n this._options = options;\n options.checkCRC = options.checkCRC !== false;\n\n this._hasIHDR = false;\n this._hasIEND = false;\n this._emittedHeadersFinished = false;\n\n // input flags/metadata\n this._palette = [];\n this._colorType = 0;\n\n this._chunks = {};\n this._chunks[constants.TYPE_IHDR] = this._handleIHDR.bind(this);\n this._chunks[constants.TYPE_IEND] = this._handleIEND.bind(this);\n this._chunks[constants.TYPE_IDAT] = this._handleIDAT.bind(this);\n this._chunks[constants.TYPE_PLTE] = this._handlePLTE.bind(this);\n this._chunks[constants.TYPE_tRNS] = this._handleTRNS.bind(this);\n this._chunks[constants.TYPE_gAMA] = this._handleGAMA.bind(this);\n\n this.read = dependencies.read;\n this.error = dependencies.error;\n this.metadata = dependencies.metadata;\n this.gamma = dependencies.gamma;\n this.transColor = dependencies.transColor;\n this.palette = dependencies.palette;\n this.parsed = dependencies.parsed;\n this.inflateData = dependencies.inflateData;\n this.finished = dependencies.finished;\n this.simpleTransparency = dependencies.simpleTransparency;\n this.headersFinished = dependencies.headersFinished || function() {};\n};\n\nParser.prototype.start = function() {\n this.read(constants.PNG_SIGNATURE.length,\n this._parseSignature.bind(this)\n );\n};\n\nParser.prototype._parseSignature = function(data) {\n\n var signature = constants.PNG_SIGNATURE;\n\n for (var i = 0; i < signature.length; i++) {\n if (data[i] !== signature[i]) {\n this.error(new Error('Invalid file signature'));\n return;\n }\n }\n this.read(8, this._parseChunkBegin.bind(this));\n};\n\nParser.prototype._parseChunkBegin = function(data) {\n\n // chunk content length\n var length = data.readUInt32BE(0);\n\n // chunk type\n var type = data.readUInt32BE(4);\n var name = '';\n for (var i = 4; i < 8; i++) {\n name += String.fromCharCode(data[i]);\n }\n\n //console.log('chunk ', name, length);\n\n // chunk flags\n var ancillary = Boolean(data[4] & 0x20); // or critical\n // priv = Boolean(data[5] & 0x20), // or public\n // safeToCopy = Boolean(data[7] & 0x20); // or unsafe\n\n if (!this._hasIHDR && type !== constants.TYPE_IHDR) {\n this.error(new Error('Expected IHDR on beggining'));\n return;\n }\n\n this._crc = new CrcCalculator();\n this._crc.write(new Buffer(name));\n\n if (this._chunks[type]) {\n return this._chunks[type](length);\n }\n\n if (!ancillary) {\n this.error(new Error('Unsupported critical chunk type ' + name));\n return;\n }\n\n this.read(length + 4, this._skipChunk.bind(this));\n};\n\nParser.prototype._skipChunk = function(/*data*/) {\n this.read(8, this._parseChunkBegin.bind(this));\n};\n\nParser.prototype._handleChunkEnd = function() {\n this.read(4, this._parseChunkEnd.bind(this));\n};\n\nParser.prototype._parseChunkEnd = function(data) {\n\n var fileCrc = data.readInt32BE(0);\n var calcCrc = this._crc.crc32();\n\n // check CRC\n if (this._options.checkCRC && calcCrc !== fileCrc) {\n this.error(new Error('Crc error - ' + fileCrc + ' - ' + calcCrc));\n return;\n }\n\n if (!this._hasIEND) {\n this.read(8, this._parseChunkBegin.bind(this));\n }\n};\n\nParser.prototype._handleIHDR = function(length) {\n this.read(length, this._parseIHDR.bind(this));\n};\nParser.prototype._parseIHDR = function(data) {\n\n this._crc.write(data);\n\n var width = data.readUInt32BE(0);\n var height = data.readUInt32BE(4);\n var depth = data[8];\n var colorType = data[9]; // bits: 1 palette, 2 color, 4 alpha\n var compr = data[10];\n var filter = data[11];\n var interlace = data[12];\n\n // console.log(' width', width, 'height', height,\n // 'depth', depth, 'colorType', colorType,\n // 'compr', compr, 'filter', filter, 'interlace', interlace\n // );\n\n if (depth !== 8 && depth !== 4 && depth !== 2 && depth !== 1 && depth !== 16) {\n this.error(new Error('Unsupported bit depth ' + depth));\n return;\n }\n if (!(colorType in constants.COLORTYPE_TO_BPP_MAP)) {\n this.error(new Error('Unsupported color type'));\n return;\n }\n if (compr !== 0) {\n this.error(new Error('Unsupported compression method'));\n return;\n }\n if (filter !== 0) {\n this.error(new Error('Unsupported filter method'));\n return;\n }\n if (interlace !== 0 && interlace !== 1) {\n this.error(new Error('Unsupported interlace method'));\n return;\n }\n\n this._colorType = colorType;\n\n var bpp = constants.COLORTYPE_TO_BPP_MAP[this._colorType];\n\n this._hasIHDR = true;\n\n this.metadata({\n width: width,\n height: height,\n depth: depth,\n interlace: Boolean(interlace),\n palette: Boolean(colorType & constants.COLORTYPE_PALETTE),\n color: Boolean(colorType & constants.COLORTYPE_COLOR),\n alpha: Boolean(colorType & constants.COLORTYPE_ALPHA),\n bpp: bpp,\n colorType: colorType\n });\n\n this._handleChunkEnd();\n};\n\n\nParser.prototype._handlePLTE = function(length) {\n this.read(length, this._parsePLTE.bind(this));\n};\nParser.prototype._parsePLTE = function(data) {\n\n this._crc.write(data);\n\n var entries = Math.floor(data.length / 3);\n // console.log('Palette:', entries);\n\n for (var i = 0; i < entries; i++) {\n this._palette.push([\n data[i * 3],\n data[i * 3 + 1],\n data[i * 3 + 2],\n 0xff\n ]);\n }\n\n this.palette(this._palette);\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleTRNS = function(length) {\n this.simpleTransparency();\n this.read(length, this._parseTRNS.bind(this));\n};\nParser.prototype._parseTRNS = function(data) {\n\n this._crc.write(data);\n\n // palette\n if (this._colorType === constants.COLORTYPE_PALETTE_COLOR) {\n if (this._palette.length === 0) {\n this.error(new Error('Transparency chunk must be after palette'));\n return;\n }\n if (data.length > this._palette.length) {\n this.error(new Error('More transparent colors than palette size'));\n return;\n }\n for (var i = 0; i < data.length; i++) {\n this._palette[i][3] = data[i];\n }\n this.palette(this._palette);\n }\n\n // for colorType 0 (grayscale) and 2 (rgb)\n // there might be one gray/color defined as transparent\n if (this._colorType === constants.COLORTYPE_GRAYSCALE) {\n // grey, 2 bytes\n this.transColor([data.readUInt16BE(0)]);\n }\n if (this._colorType === constants.COLORTYPE_COLOR) {\n this.transColor([data.readUInt16BE(0), data.readUInt16BE(2), data.readUInt16BE(4)]);\n }\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleGAMA = function(length) {\n this.read(length, this._parseGAMA.bind(this));\n};\nParser.prototype._parseGAMA = function(data) {\n\n this._crc.write(data);\n this.gamma(data.readUInt32BE(0) / constants.GAMMA_DIVISION);\n\n this._handleChunkEnd();\n};\n\nParser.prototype._handleIDAT = function(length) {\n if (!this._emittedHeadersFinished) {\n this._emittedHeadersFinished = true;\n this.headersFinished();\n }\n this.read(-length, this._parseIDAT.bind(this, length));\n};\nParser.prototype._parseIDAT = function(length, data) {\n\n this._crc.write(data);\n\n if (this._colorType === constants.COLORTYPE_PALETTE_COLOR && this._palette.length === 0) {\n throw new Error('Expected palette not found');\n }\n\n this.inflateData(data);\n var leftOverLength = length - data.length;\n\n if (leftOverLength > 0) {\n this._handleIDAT(leftOverLength);\n }\n else {\n this._handleChunkEnd();\n }\n};\n\nParser.prototype._handleIEND = function(length) {\n this.read(length, this._parseIEND.bind(this));\n};\nParser.prototype._parseIEND = function(data) {\n\n this._crc.write(data);\n\n this._hasIEND = true;\n this._handleChunkEnd();\n\n if (this.finished) {\n this.finished();\n }\n};\n", "'use strict';\n\nvar interlaceUtils = require('./interlace');\n\nvar pixelBppMapper = [\n // 0 - dummy entry\n function() {},\n\n // 1 - L\n // 0: 0, 1: 0, 2: 0, 3: 0xff\n function(pxData, data, pxPos, rawPos) {\n if (rawPos === data.length) {\n throw new Error('Ran out of data');\n }\n\n var pixel = data[rawPos];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = 0xff;\n },\n\n // 2 - LA\n // 0: 0, 1: 0, 2: 0, 3: 1\n function(pxData, data, pxPos, rawPos) {\n if (rawPos + 1 >= data.length) {\n throw new Error('Ran out of data');\n }\n\n var pixel = data[rawPos];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = data[rawPos + 1];\n },\n\n // 3 - RGB\n // 0: 0, 1: 1, 2: 2, 3: 0xff\n function(pxData, data, pxPos, rawPos) {\n if (rawPos + 2 >= data.length) {\n throw new Error('Ran out of data');\n }\n\n pxData[pxPos] = data[rawPos];\n pxData[pxPos + 1] = data[rawPos + 1];\n pxData[pxPos + 2] = data[rawPos + 2];\n pxData[pxPos + 3] = 0xff;\n },\n\n // 4 - RGBA\n // 0: 0, 1: 1, 2: 2, 3: 3\n function(pxData, data, pxPos, rawPos) {\n if (rawPos + 3 >= data.length) {\n throw new Error('Ran out of data');\n }\n\n pxData[pxPos] = data[rawPos];\n pxData[pxPos + 1] = data[rawPos + 1];\n pxData[pxPos + 2] = data[rawPos + 2];\n pxData[pxPos + 3] = data[rawPos + 3];\n }\n];\n\nvar pixelBppCustomMapper = [\n // 0 - dummy entry\n function() {},\n\n // 1 - L\n // 0: 0, 1: 0, 2: 0, 3: 0xff\n function(pxData, pixelData, pxPos, maxBit) {\n var pixel = pixelData[0];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = maxBit;\n },\n\n // 2 - LA\n // 0: 0, 1: 0, 2: 0, 3: 1\n function(pxData, pixelData, pxPos) {\n var pixel = pixelData[0];\n pxData[pxPos] = pixel;\n pxData[pxPos + 1] = pixel;\n pxData[pxPos + 2] = pixel;\n pxData[pxPos + 3] = pixelData[1];\n },\n\n // 3 - RGB\n // 0: 0, 1: 1, 2: 2, 3: 0xff\n function(pxData, pixelData, pxPos, maxBit) {\n pxData[pxPos] = pixelData[0];\n pxData[pxPos + 1] = pixelData[1];\n pxData[pxPos + 2] = pixelData[2];\n pxData[pxPos + 3] = maxBit;\n },\n\n // 4 - RGBA\n // 0: 0, 1: 1, 2: 2, 3: 3\n function(pxData, pixelData, pxPos) {\n pxData[pxPos] = pixelData[0];\n pxData[pxPos + 1] = pixelData[1];\n pxData[pxPos + 2] = pixelData[2];\n pxData[pxPos + 3] = pixelData[3];\n }\n];\n\nfunction bitRetriever(data, depth) {\n\n var leftOver = [];\n var i = 0;\n\n function split() {\n if (i === data.length) {\n throw new Error('Ran out of data');\n }\n var byte = data[i];\n i++;\n var byte8, byte7, byte6, byte5, byte4, byte3, byte2, byte1;\n switch (depth) {\n default:\n throw new Error('unrecognised depth');\n case 16:\n byte2 = data[i];\n i++;\n leftOver.push(((byte << 8) + byte2));\n break;\n case 4:\n byte2 = byte & 0x0f;\n byte1 = byte >> 4;\n leftOver.push(byte1, byte2);\n break;\n case 2:\n byte4 = byte & 3;\n byte3 = byte >> 2 & 3;\n byte2 = byte >> 4 & 3;\n byte1 = byte >> 6 & 3;\n leftOver.push(byte1, byte2, byte3, byte4);\n break;\n case 1:\n byte8 = byte & 1;\n byte7 = byte >> 1 & 1;\n byte6 = byte >> 2 & 1;\n byte5 = byte >> 3 & 1;\n byte4 = byte >> 4 & 1;\n byte3 = byte >> 5 & 1;\n byte2 = byte >> 6 & 1;\n byte1 = byte >> 7 & 1;\n leftOver.push(byte1, byte2, byte3, byte4, byte5, byte6, byte7, byte8);\n break;\n }\n }\n\n return {\n get: function(count) {\n while (leftOver.length < count) {\n split();\n }\n var returner = leftOver.slice(0, count);\n leftOver = leftOver.slice(count);\n return returner;\n },\n resetAfterLine: function() {\n leftOver.length = 0;\n },\n end: function() {\n if (i !== data.length) {\n throw new Error('extra data found');\n }\n }\n };\n}\n\nfunction mapImage8Bit(image, pxData, getPxPos, bpp, data, rawPos) { // eslint-disable-line max-params\n var imageWidth = image.width;\n var imageHeight = image.height;\n var imagePass = image.index;\n for (var y = 0; y < imageHeight; y++) {\n for (var x = 0; x < imageWidth; x++) {\n var pxPos = getPxPos(x, y, imagePass);\n pixelBppMapper[bpp](pxData, data, pxPos, rawPos);\n rawPos += bpp; //eslint-disable-line no-param-reassign\n }\n }\n return rawPos;\n}\n\nfunction mapImageCustomBit(image, pxData, getPxPos, bpp, bits, maxBit) { // eslint-disable-line max-params\n var imageWidth = image.width;\n var imageHeight = image.height;\n var imagePass = image.index;\n for (var y = 0; y < imageHeight; y++) {\n for (var x = 0; x < imageWidth; x++) {\n var pixelData = bits.get(bpp);\n var pxPos = getPxPos(x, y, imagePass);\n pixelBppCustomMapper[bpp](pxData, pixelData, pxPos, maxBit);\n }\n bits.resetAfterLine();\n }\n}\n\nexports.dataToBitMap = function(data, bitmapInfo) {\n\n var width = bitmapInfo.width;\n var height = bitmapInfo.height;\n var depth = bitmapInfo.depth;\n var bpp = bitmapInfo.bpp;\n var interlace = bitmapInfo.interlace;\n\n if (depth !== 8) {\n var bits = bitRetriever(data, depth);\n }\n var pxData;\n if (depth <= 8) {\n pxData = new Buffer(width * height * 4);\n }\n else {\n pxData = new Uint16Array(width * height * 4);\n }\n var maxBit = Math.pow(2, depth) - 1;\n var rawPos = 0;\n var images;\n var getPxPos;\n\n if (interlace) {\n images = interlaceUtils.getImagePasses(width, height);\n getPxPos = interlaceUtils.getInterlaceIterator(width, height);\n }\n else {\n var nonInterlacedPxPos = 0;\n getPxPos = function() {\n var returner = nonInterlacedPxPos;\n nonInterlacedPxPos += 4;\n return returner;\n };\n images = [{ width: width, height: height }];\n }\n\n for (var imageIndex = 0; imageIndex < images.length; imageIndex++) {\n if (depth === 8) {\n rawPos = mapImage8Bit(images[imageIndex], pxData, getPxPos, bpp, data, rawPos);\n }\n else {\n mapImageCustomBit(images[imageIndex], pxData, getPxPos, bpp, bits, maxBit);\n }\n }\n if (depth === 8) {\n if (rawPos !== data.length) {\n throw new Error('extra data found');\n }\n }\n else {\n bits.end();\n }\n\n return pxData;\n};\n", "'use strict';\n\nfunction dePalette(indata, outdata, width, height, palette) {\n var pxPos = 0;\n // use values from palette\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var color = palette[indata[pxPos]];\n\n if (!color) {\n throw new Error('index ' + indata[pxPos] + ' not in palette');\n }\n\n for (var i = 0; i < 4; i++) {\n outdata[pxPos + i] = color[i];\n }\n pxPos += 4;\n }\n }\n}\n\nfunction replaceTransparentColor(indata, outdata, width, height, transColor) {\n var pxPos = 0;\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var makeTrans = false;\n\n if (transColor.length === 1) {\n if (transColor[0] === indata[pxPos]) {\n makeTrans = true;\n }\n }\n else if (transColor[0] === indata[pxPos] && transColor[1] === indata[pxPos + 1] && transColor[2] === indata[pxPos + 2]) {\n makeTrans = true;\n }\n if (makeTrans) {\n for (var i = 0; i < 4; i++) {\n outdata[pxPos + i] = 0;\n }\n }\n pxPos += 4;\n }\n }\n}\n\nfunction scaleDepth(indata, outdata, width, height, depth) {\n var maxOutSample = 255;\n var maxInSample = Math.pow(2, depth) - 1;\n var pxPos = 0;\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n for (var i = 0; i < 4; i++) {\n outdata[pxPos + i] = Math.floor((indata[pxPos + i] * maxOutSample) / maxInSample + 0.5);\n }\n pxPos += 4;\n }\n }\n}\n\nmodule.exports = function(indata, imageData) {\n\n var depth = imageData.depth;\n var width = imageData.width;\n var height = imageData.height;\n var colorType = imageData.colorType;\n var transColor = imageData.transColor;\n var palette = imageData.palette;\n\n var outdata = indata; // only different for 16 bits\n\n if (colorType === 3) { // paletted\n dePalette(indata, outdata, width, height, palette);\n }\n else {\n if (transColor) {\n replaceTransparentColor(indata, outdata, width, height, transColor);\n }\n // if it needs scaling\n if (depth !== 8) {\n // if we need to change the buffer size\n if (depth === 16) {\n outdata = new Buffer(width * height * 4);\n }\n scaleDepth(indata, outdata, width, height, depth);\n }\n }\n return outdata;\n};\n", "'use strict';\n\nvar util = require('util');\nvar zlib = require('zlib');\nvar ChunkStream = require('./chunkstream');\nvar FilterAsync = require('./filter-parse-async');\nvar Parser = require('./parser');\nvar bitmapper = require('./bitmapper');\nvar formatNormaliser = require('./format-normaliser');\n\nvar ParserAsync = module.exports = function(options) {\n ChunkStream.call(this);\n\n this._parser = new Parser(options, {\n read: this.read.bind(this),\n error: this._handleError.bind(this),\n metadata: this._handleMetaData.bind(this),\n gamma: this.emit.bind(this, 'gamma'),\n palette: this._handlePalette.bind(this),\n transColor: this._handleTransColor.bind(this),\n finished: this._finished.bind(this),\n inflateData: this._inflateData.bind(this),\n simpleTransparency: this._simpleTransparency.bind(this),\n headersFinished: this._headersFinished.bind(this)\n });\n this._options = options;\n this.writable = true;\n\n this._parser.start();\n};\nutil.inherits(ParserAsync, ChunkStream);\n\n\nParserAsync.prototype._handleError = function(err) {\n\n this.emit('error', err);\n\n this.writable = false;\n\n this.destroy();\n\n if (this._inflate && this._inflate.destroy) {\n this._inflate.destroy();\n }\n\n if (this._filter) {\n this._filter.destroy();\n // For backward compatibility with Node 7 and below.\n // Suppress errors due to _inflate calling write() even after\n // it's destroy()'ed.\n this._filter.on('error', function() {});\n }\n\n this.errord = true;\n};\n\nParserAsync.prototype._inflateData = function(data) {\n if (!this._inflate) {\n if (this._bitmapInfo.interlace) {\n this._inflate = zlib.createInflate();\n\n this._inflate.on('error', this.emit.bind(this, 'error'));\n this._filter.on('complete', this._complete.bind(this));\n\n this._inflate.pipe(this._filter);\n }\n else {\n var rowSize = ((this._bitmapInfo.width * this._bitmapInfo.bpp * this._bitmapInfo.depth + 7) >> 3) + 1;\n var imageSize = rowSize * this._bitmapInfo.height;\n var chunkSize = Math.max(imageSize, zlib.Z_MIN_CHUNK);\n\n this._inflate = zlib.createInflate({ chunkSize: chunkSize });\n var leftToInflate = imageSize;\n\n var emitError = this.emit.bind(this, 'error');\n this._inflate.on('error', function(err) {\n if (!leftToInflate) {\n return;\n }\n\n emitError(err);\n });\n this._filter.on('complete', this._complete.bind(this));\n\n var filterWrite = this._filter.write.bind(this._filter);\n this._inflate.on('data', function(chunk) {\n if (!leftToInflate) {\n return;\n }\n\n if (chunk.length > leftToInflate) {\n chunk = chunk.slice(0, leftToInflate);\n }\n\n leftToInflate -= chunk.length;\n\n filterWrite(chunk);\n });\n\n this._inflate.on('end', this._filter.end.bind(this._filter));\n }\n }\n this._inflate.write(data);\n};\n\nParserAsync.prototype._handleMetaData = function(metaData) {\n this._metaData = metaData;\n this._bitmapInfo = Object.create(metaData);\n\n this._filter = new FilterAsync(this._bitmapInfo);\n};\n\nParserAsync.prototype._handleTransColor = function(transColor) {\n this._bitmapInfo.transColor = transColor;\n};\n\nParserAsync.prototype._handlePalette = function(palette) {\n this._bitmapInfo.palette = palette;\n};\n\nParserAsync.prototype._simpleTransparency = function() {\n this._metaData.alpha = true;\n};\n\nParserAsync.prototype._headersFinished = function() {\n // Up until this point, we don't know if we have a tRNS chunk (alpha)\n // so we can't emit metadata any earlier\n this.emit('metadata', this._metaData);\n};\n\nParserAsync.prototype._finished = function() {\n if (this.errord) {\n return;\n }\n\n if (!this._inflate) {\n this.emit('error', 'No Inflate block');\n }\n else {\n // no more data to inflate\n this._inflate.end();\n }\n this.destroySoon();\n};\n\nParserAsync.prototype._complete = function(filteredData) {\n\n if (this.errord) {\n return;\n }\n\n try {\n var bitmapData = bitmapper.dataToBitMap(filteredData, this._bitmapInfo);\n\n var normalisedBitmapData = formatNormaliser(bitmapData, this._bitmapInfo);\n bitmapData = null;\n }\n catch (ex) {\n this._handleError(ex);\n return;\n }\n\n this.emit('parsed', normalisedBitmapData);\n};\n", "'use strict';\n\nvar constants = require('./constants');\n\nmodule.exports = function(dataIn, width, height, options) {\n var outHasAlpha = [constants.COLORTYPE_COLOR_ALPHA, constants.COLORTYPE_ALPHA].indexOf(options.colorType) !== -1;\n if (options.colorType === options.inputColorType) {\n var bigEndian = (function() {\n var buffer = new ArrayBuffer(2);\n new DataView(buffer).setInt16(0, 256, true /* littleEndian */);\n // Int16Array uses the platform's endianness.\n return new Int16Array(buffer)[0] !== 256;\n })();\n // If no need to convert to grayscale and alpha is present/absent in both, take a fast route\n if (options.bitDepth === 8 || (options.bitDepth === 16 && bigEndian)) {\n return dataIn;\n }\n }\n\n // map to a UInt16 array if data is 16bit, fix endianness below\n var data = options.bitDepth !== 16 ? dataIn : new Uint16Array(dataIn.buffer);\n\n var maxValue = 255;\n var inBpp = constants.COLORTYPE_TO_BPP_MAP[options.inputColorType];\n if (inBpp === 4 && !options.inputHasAlpha) {\n inBpp = 3;\n }\n var outBpp = constants.COLORTYPE_TO_BPP_MAP[options.colorType];\n if (options.bitDepth === 16) {\n maxValue = 65535;\n outBpp *= 2;\n }\n var outData = new Buffer(width * height * outBpp);\n\n var inIndex = 0;\n var outIndex = 0;\n\n var bgColor = options.bgColor || {};\n if (bgColor.red === undefined) {\n bgColor.red = maxValue;\n }\n if (bgColor.green === undefined) {\n bgColor.green = maxValue;\n }\n if (bgColor.blue === undefined) {\n bgColor.blue = maxValue;\n }\n\n function getRGBA() {\n var red;\n var green;\n var blue;\n var alpha = maxValue;\n switch (options.inputColorType) {\n case constants.COLORTYPE_COLOR_ALPHA:\n alpha = data[inIndex + 3];\n red = data[inIndex];\n green = data[inIndex + 1];\n blue = data[inIndex + 2];\n break;\n case constants.COLORTYPE_COLOR:\n red = data[inIndex];\n green = data[inIndex + 1];\n blue = data[inIndex + 2];\n break;\n case constants.COLORTYPE_ALPHA:\n alpha = data[inIndex + 1];\n red = data[inIndex];\n green = red;\n blue = red;\n break;\n case constants.COLORTYPE_GRAYSCALE:\n red = data[inIndex];\n green = red;\n blue = red;\n break;\n default:\n throw new Error('input color type:' + options.inputColorType + ' is not supported at present');\n }\n\n if (options.inputHasAlpha) {\n if (!outHasAlpha) {\n alpha /= maxValue;\n red = Math.min(Math.max(Math.round((1 - alpha) * bgColor.red + alpha * red), 0), maxValue);\n green = Math.min(Math.max(Math.round((1 - alpha) * bgColor.green + alpha * green), 0), maxValue);\n blue = Math.min(Math.max(Math.round((1 - alpha) * bgColor.blue + alpha * blue), 0), maxValue);\n }\n }\n return { red: red, green: green, blue: blue, alpha: alpha };\n }\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var rgba = getRGBA(data, inIndex);\n\n switch (options.colorType) {\n case constants.COLORTYPE_COLOR_ALPHA:\n case constants.COLORTYPE_COLOR:\n if (options.bitDepth === 8) {\n outData[outIndex] = rgba.red;\n outData[outIndex + 1] = rgba.green;\n outData[outIndex + 2] = rgba.blue;\n if (outHasAlpha) {\n outData[outIndex + 3] = rgba.alpha;\n }\n }\n else {\n outData.writeUInt16BE(rgba.red, outIndex);\n outData.writeUInt16BE(rgba.green, outIndex + 2);\n outData.writeUInt16BE(rgba.blue, outIndex + 4);\n if (outHasAlpha) {\n outData.writeUInt16BE(rgba.alpha, outIndex + 6);\n }\n }\n break;\n case constants.COLORTYPE_ALPHA:\n case constants.COLORTYPE_GRAYSCALE:\n // Convert to grayscale and alpha\n var grayscale = (rgba.red + rgba.green + rgba.blue) / 3;\n if (options.bitDepth === 8) {\n outData[outIndex] = grayscale;\n if (outHasAlpha) {\n outData[outIndex + 1] = rgba.alpha;\n }\n }\n else {\n outData.writeUInt16BE(grayscale, outIndex);\n if (outHasAlpha) {\n outData.writeUInt16BE(rgba.alpha, outIndex + 2);\n }\n }\n break;\n default:\n throw new Error('unrecognised color Type ' + options.colorType);\n }\n\n inIndex += inBpp;\n outIndex += outBpp;\n }\n }\n\n return outData;\n};\n", "'use strict';\n\nvar paethPredictor = require('./paeth-predictor');\n\nfunction filterNone(pxData, pxPos, byteWidth, rawData, rawPos) {\n\n for (var x = 0; x < byteWidth; x++) {\n rawData[rawPos + x] = pxData[pxPos + x];\n }\n}\n\nfunction filterSumNone(pxData, pxPos, byteWidth) {\n\n var sum = 0;\n var length = pxPos + byteWidth;\n\n for (var i = pxPos; i < length; i++) {\n sum += Math.abs(pxData[i]);\n }\n return sum;\n}\n\nfunction filterSub(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var val = pxData[pxPos + x] - left;\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumSub(pxData, pxPos, byteWidth, bpp) {\n\n var sum = 0;\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var val = pxData[pxPos + x] - left;\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterUp(pxData, pxPos, byteWidth, rawData, rawPos) {\n\n for (var x = 0; x < byteWidth; x++) {\n\n var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n var val = pxData[pxPos + x] - up;\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumUp(pxData, pxPos, byteWidth) {\n\n var sum = 0;\n var length = pxPos + byteWidth;\n for (var x = pxPos; x < length; x++) {\n\n var up = pxPos > 0 ? pxData[x - byteWidth] : 0;\n var val = pxData[x] - up;\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterAvg(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n var val = pxData[pxPos + x] - ((left + up) >> 1);\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumAvg(pxData, pxPos, byteWidth, bpp) {\n\n var sum = 0;\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n var val = pxData[pxPos + x] - ((left + up) >> 1);\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nfunction filterPaeth(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n var upleft = pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;\n var val = pxData[pxPos + x] - paethPredictor(left, up, upleft);\n\n rawData[rawPos + x] = val;\n }\n}\n\nfunction filterSumPaeth(pxData, pxPos, byteWidth, bpp) {\n var sum = 0;\n for (var x = 0; x < byteWidth; x++) {\n\n var left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n var upleft = pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;\n var val = pxData[pxPos + x] - paethPredictor(left, up, upleft);\n\n sum += Math.abs(val);\n }\n\n return sum;\n}\n\nvar filters = {\n 0: filterNone,\n 1: filterSub,\n 2: filterUp,\n 3: filterAvg,\n 4: filterPaeth\n};\n\nvar filterSums = {\n 0: filterSumNone,\n 1: filterSumSub,\n 2: filterSumUp,\n 3: filterSumAvg,\n 4: filterSumPaeth\n};\n\nmodule.exports = function(pxData, width, height, options, bpp) {\n\n var filterTypes;\n if (!('filterType' in options) || options.filterType === -1) {\n filterTypes = [0, 1, 2, 3, 4];\n }\n else if (typeof options.filterType === 'number') {\n filterTypes = [options.filterType];\n }\n else {\n throw new Error('unrecognised filter types');\n }\n\n if (options.bitDepth === 16) {\n bpp *= 2;\n }\n var byteWidth = width * bpp;\n var rawPos = 0;\n var pxPos = 0;\n var rawData = new Buffer((byteWidth + 1) * height);\n\n var sel = filterTypes[0];\n\n for (var y = 0; y < height; y++) {\n\n if (filterTypes.length > 1) {\n // find best filter for this line (with lowest sum of values)\n var min = Infinity;\n\n for (var i = 0; i < filterTypes.length; i++) {\n var sum = filterSums[filterTypes[i]](pxData, pxPos, byteWidth, bpp);\n if (sum < min) {\n sel = filterTypes[i];\n min = sum;\n }\n }\n }\n\n rawData[rawPos] = sel;\n rawPos++;\n filters[sel](pxData, pxPos, byteWidth, rawData, rawPos, bpp);\n rawPos += byteWidth;\n pxPos += byteWidth;\n }\n return rawData;\n};\n", "'use strict';\n\nvar constants = require('./constants');\nvar CrcStream = require('./crc');\nvar bitPacker = require('./bitpacker');\nvar filter = require('./filter-pack');\nvar zlib = require('zlib');\n\nvar Packer = module.exports = function(options) {\n this._options = options;\n\n options.deflateChunkSize = options.deflateChunkSize || 32 * 1024;\n options.deflateLevel = options.deflateLevel != null ? options.deflateLevel : 9;\n options.deflateStrategy = options.deflateStrategy != null ? options.deflateStrategy : 3;\n options.inputHasAlpha = options.inputHasAlpha != null ? options.inputHasAlpha : true;\n options.deflateFactory = options.deflateFactory || zlib.createDeflate;\n options.bitDepth = options.bitDepth || 8;\n // This is outputColorType\n options.colorType = (typeof options.colorType === 'number') ? options.colorType : constants.COLORTYPE_COLOR_ALPHA;\n options.inputColorType = (typeof options.inputColorType === 'number') ? options.inputColorType : constants.COLORTYPE_COLOR_ALPHA;\n\n if ([\n constants.COLORTYPE_GRAYSCALE,\n constants.COLORTYPE_COLOR,\n constants.COLORTYPE_COLOR_ALPHA,\n constants.COLORTYPE_ALPHA\n ].indexOf(options.colorType) === -1) {\n throw new Error('option color type:' + options.colorType + ' is not supported at present');\n }\n if ([\n constants.COLORTYPE_GRAYSCALE,\n constants.COLORTYPE_COLOR,\n constants.COLORTYPE_COLOR_ALPHA,\n constants.COLORTYPE_ALPHA\n ].indexOf(options.inputColorType) === -1) {\n throw new Error('option input color type:' + options.inputColorType + ' is not supported at present');\n }\n if (options.bitDepth !== 8 && options.bitDepth !== 16) {\n throw new Error('option bit depth:' + options.bitDepth + ' is not supported at present');\n }\n};\n\nPacker.prototype.getDeflateOptions = function() {\n return {\n chunkSize: this._options.deflateChunkSize,\n level: this._options.deflateLevel,\n strategy: this._options.deflateStrategy\n };\n};\n\nPacker.prototype.createDeflate = function() {\n return this._options.deflateFactory(this.getDeflateOptions());\n};\n\nPacker.prototype.filterData = function(data, width, height) {\n // convert to correct format for filtering (e.g. right bpp and bit depth)\n var packedData = bitPacker(data, width, height, this._options);\n\n // filter pixel data\n var bpp = constants.COLORTYPE_TO_BPP_MAP[this._options.colorType];\n var filteredData = filter(packedData, width, height, this._options, bpp);\n return filteredData;\n};\n\nPacker.prototype._packChunk = function(type, data) {\n\n var len = (data ? data.length : 0);\n var buf = new Buffer(len + 12);\n\n buf.writeUInt32BE(len, 0);\n buf.writeUInt32BE(type, 4);\n\n if (data) {\n data.copy(buf, 8);\n }\n\n buf.writeInt32BE(CrcStream.crc32(buf.slice(4, buf.length - 4)), buf.length - 4);\n return buf;\n};\n\nPacker.prototype.packGAMA = function(gamma) {\n var buf = new Buffer(4);\n buf.writeUInt32BE(Math.floor(gamma * constants.GAMMA_DIVISION), 0);\n return this._packChunk(constants.TYPE_gAMA, buf);\n};\n\nPacker.prototype.packIHDR = function(width, height) {\n\n var buf = new Buffer(13);\n buf.writeUInt32BE(width, 0);\n buf.writeUInt32BE(height, 4);\n buf[8] = this._options.bitDepth; // Bit depth\n buf[9] = this._options.colorType; // colorType\n buf[10] = 0; // compression\n buf[11] = 0; // filter\n buf[12] = 0; // interlace\n\n return this._packChunk(constants.TYPE_IHDR, buf);\n};\n\nPacker.prototype.packIDAT = function(data) {\n return this._packChunk(constants.TYPE_IDAT, data);\n};\n\nPacker.prototype.packIEND = function() {\n return this._packChunk(constants.TYPE_IEND, null);\n};\n", "'use strict';\n\nvar util = require('util');\nvar Stream = require('stream');\nvar constants = require('./constants');\nvar Packer = require('./packer');\n\nvar PackerAsync = module.exports = function(opt) {\n Stream.call(this);\n\n var options = opt || {};\n\n this._packer = new Packer(options);\n this._deflate = this._packer.createDeflate();\n\n this.readable = true;\n};\nutil.inherits(PackerAsync, Stream);\n\n\nPackerAsync.prototype.pack = function(data, width, height, gamma) {\n // Signature\n this.emit('data', new Buffer(constants.PNG_SIGNATURE));\n this.emit('data', this._packer.packIHDR(width, height));\n\n if (gamma) {\n this.emit('data', this._packer.packGAMA(gamma));\n }\n\n var filteredData = this._packer.filterData(data, width, height);\n\n // compress it\n this._deflate.on('error', this.emit.bind(this, 'error'));\n\n this._deflate.on('data', function(compressedData) {\n this.emit('data', this._packer.packIDAT(compressedData));\n }.bind(this));\n\n this._deflate.on('end', function() {\n this.emit('data', this._packer.packIEND());\n this.emit('end');\n }.bind(this));\n\n this._deflate.end(filteredData);\n};\n", "'use strict';\n\nvar assert = require('assert').ok;\nvar zlib = require('zlib');\nvar util = require('util');\n\nvar kMaxLength = require('buffer').kMaxLength;\n\nfunction Inflate(opts) {\n if (!(this instanceof Inflate)) {\n return new Inflate(opts);\n }\n\n if (opts && opts.chunkSize < zlib.Z_MIN_CHUNK) {\n opts.chunkSize = zlib.Z_MIN_CHUNK;\n }\n\n zlib.Inflate.call(this, opts);\n\n // Node 8 --> 9 compatibility check\n this._offset = this._offset === undefined ? this._outOffset : this._offset;\n this._buffer = this._buffer || this._outBuffer;\n\n if (opts && opts.maxLength != null) {\n this._maxLength = opts.maxLength;\n }\n}\n\nfunction createInflate(opts) {\n return new Inflate(opts);\n}\n\nfunction _close(engine, callback) {\n if (callback) {\n process.nextTick(callback);\n }\n\n // Caller may invoke .close after a zlib error (which will null _handle).\n if (!engine._handle) {\n return;\n }\n\n engine._handle.close();\n engine._handle = null;\n}\n\nInflate.prototype._processChunk = function(chunk, flushFlag, asyncCb) {\n if (typeof asyncCb === 'function') {\n return zlib.Inflate._processChunk.call(this, chunk, flushFlag, asyncCb);\n }\n\n var self = this;\n\n var availInBefore = chunk && chunk.length;\n var availOutBefore = this._chunkSize - this._offset;\n var leftToInflate = this._maxLength;\n var inOff = 0;\n\n var buffers = [];\n var nread = 0;\n\n var error;\n this.on('error', function(err) {\n error = err;\n });\n\n function handleChunk(availInAfter, availOutAfter) {\n if (self._hadError) {\n return;\n }\n\n var have = availOutBefore - availOutAfter;\n assert(have >= 0, 'have should not go down');\n\n if (have > 0) {\n var out = self._buffer.slice(self._offset, self._offset + have);\n self._offset += have;\n\n if (out.length > leftToInflate) {\n out = out.slice(0, leftToInflate);\n }\n\n buffers.push(out);\n nread += out.length;\n leftToInflate -= out.length;\n\n if (leftToInflate === 0) {\n return false;\n }\n }\n\n if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n availOutBefore = self._chunkSize;\n self._offset = 0;\n self._buffer = Buffer.allocUnsafe(self._chunkSize);\n }\n\n if (availOutAfter === 0) {\n inOff += (availInBefore - availInAfter);\n availInBefore = availInAfter;\n\n return true;\n }\n\n return false;\n }\n\n assert(this._handle, 'zlib binding closed');\n do {\n var res = this._handle.writeSync(flushFlag,\n chunk, // in\n inOff, // in_off\n availInBefore, // in_len\n this._buffer, // out\n this._offset, //out_off\n availOutBefore); // out_len\n // Node 8 --> 9 compatibility check\n res = res || this._writeState;\n } while (!this._hadError && handleChunk(res[0], res[1]));\n\n if (this._hadError) {\n throw error;\n }\n\n if (nread >= kMaxLength) {\n _close(this);\n throw new RangeError('Cannot create final Buffer. It would be larger than 0x' + kMaxLength.toString(16) + ' bytes');\n }\n\n var buf = Buffer.concat(buffers, nread);\n _close(this);\n\n return buf;\n};\n\nutil.inherits(Inflate, zlib.Inflate);\n\nfunction zlibBufferSync(engine, buffer) {\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer);\n }\n if (!(buffer instanceof Buffer)) {\n throw new TypeError('Not a string or buffer');\n }\n\n var flushFlag = engine._finishFlushFlag;\n if (flushFlag == null) {\n flushFlag = zlib.Z_FINISH;\n }\n\n return engine._processChunk(buffer, flushFlag);\n}\n\nfunction inflateSync(buffer, opts) {\n return zlibBufferSync(new Inflate(opts), buffer);\n}\n\nmodule.exports = exports = inflateSync;\nexports.Inflate = Inflate;\nexports.createInflate = createInflate;\nexports.inflateSync = inflateSync;\n", "'use strict';\n\nvar SyncReader = module.exports = function(buffer) {\n\n this._buffer = buffer;\n this._reads = [];\n};\n\nSyncReader.prototype.read = function(length, callback) {\n\n this._reads.push({\n length: Math.abs(length), // if length < 0 then at most this length\n allowLess: length < 0,\n func: callback\n });\n};\n\nSyncReader.prototype.process = function() {\n\n // as long as there is any data and read requests\n while (this._reads.length > 0 && this._buffer.length) {\n\n var read = this._reads[0];\n\n if (this._buffer.length && (this._buffer.length >= read.length || read.allowLess)) {\n\n // ok there is any data so that we can satisfy this request\n this._reads.shift(); // == read\n\n var buf = this._buffer;\n\n this._buffer = buf.slice(read.length);\n\n read.func.call(this, buf.slice(0, read.length));\n\n }\n else {\n break;\n }\n\n }\n\n if (this._reads.length > 0) {\n return new Error('There are some read requests waitng on finished stream');\n }\n\n if (this._buffer.length > 0) {\n return new Error('unrecognised content at end of stream');\n }\n\n};\n", "'use strict';\n\nvar SyncReader = require('./sync-reader');\nvar Filter = require('./filter-parse');\n\n\nexports.process = function(inBuffer, bitmapInfo) {\n\n var outBuffers = [];\n var reader = new SyncReader(inBuffer);\n var filter = new Filter(bitmapInfo, {\n read: reader.read.bind(reader),\n write: function(bufferPart) {\n outBuffers.push(bufferPart);\n },\n complete: function() {\n }\n });\n\n filter.start();\n reader.process();\n\n return Buffer.concat(outBuffers);\n};", "'use strict';\n\nvar hasSyncZlib = true;\nvar zlib = require('zlib');\nvar inflateSync = require('./sync-inflate');\nif (!zlib.deflateSync) {\n hasSyncZlib = false;\n}\nvar SyncReader = require('./sync-reader');\nvar FilterSync = require('./filter-parse-sync');\nvar Parser = require('./parser');\nvar bitmapper = require('./bitmapper');\nvar formatNormaliser = require('./format-normaliser');\n\n\nmodule.exports = function(buffer, options) {\n\n if (!hasSyncZlib) {\n throw new Error('To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0');\n }\n\n var err;\n function handleError(_err_) {\n err = _err_;\n }\n\n var metaData;\n function handleMetaData(_metaData_) {\n metaData = _metaData_;\n }\n\n function handleTransColor(transColor) {\n metaData.transColor = transColor;\n }\n\n function handlePalette(palette) {\n metaData.palette = palette;\n }\n\n function handleSimpleTransparency() {\n metaData.alpha = true;\n }\n\n var gamma;\n function handleGamma(_gamma_) {\n gamma = _gamma_;\n }\n\n var inflateDataList = [];\n function handleInflateData(inflatedData) {\n inflateDataList.push(inflatedData);\n }\n\n var reader = new SyncReader(buffer);\n\n var parser = new Parser(options, {\n read: reader.read.bind(reader),\n error: handleError,\n metadata: handleMetaData,\n gamma: handleGamma,\n palette: handlePalette,\n transColor: handleTransColor,\n inflateData: handleInflateData,\n simpleTransparency: handleSimpleTransparency\n });\n\n parser.start();\n reader.process();\n\n if (err) {\n throw err;\n }\n\n //join together the inflate datas\n var inflateData = Buffer.concat(inflateDataList);\n inflateDataList.length = 0;\n\n var inflatedData;\n if (metaData.interlace) {\n inflatedData = zlib.inflateSync(inflateData);\n }\n else {\n var rowSize = ((metaData.width * metaData.bpp * metaData.depth + 7) >> 3) + 1;\n var imageSize = rowSize * metaData.height;\n inflatedData = inflateSync(inflateData, { chunkSize: imageSize, maxLength: imageSize });\n }\n inflateData = null;\n\n if (!inflatedData || !inflatedData.length) {\n throw new Error('bad png - invalid inflate data response');\n }\n\n var unfilteredData = FilterSync.process(inflatedData, metaData);\n inflateData = null;\n\n var bitmapData = bitmapper.dataToBitMap(unfilteredData, metaData);\n unfilteredData = null;\n\n var normalisedBitmapData = formatNormaliser(bitmapData, metaData);\n\n metaData.data = normalisedBitmapData;\n metaData.gamma = gamma || 0;\n\n return metaData;\n};\n", "'use strict';\n\nvar hasSyncZlib = true;\nvar zlib = require('zlib');\nif (!zlib.deflateSync) {\n hasSyncZlib = false;\n}\nvar constants = require('./constants');\nvar Packer = require('./packer');\n\nmodule.exports = function(metaData, opt) {\n\n if (!hasSyncZlib) {\n throw new Error('To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0');\n }\n\n var options = opt || {};\n\n var packer = new Packer(options);\n\n var chunks = [];\n\n // Signature\n chunks.push(new Buffer(constants.PNG_SIGNATURE));\n\n // Header\n chunks.push(packer.packIHDR(metaData.width, metaData.height));\n\n if (metaData.gamma) {\n chunks.push(packer.packGAMA(metaData.gamma));\n }\n\n var filteredData = packer.filterData(metaData.data, metaData.width, metaData.height);\n\n // compress it\n var compressedData = zlib.deflateSync(filteredData, packer.getDeflateOptions());\n filteredData = null;\n\n if (!compressedData || !compressedData.length) {\n throw new Error('bad png - invalid compressed data response');\n }\n chunks.push(packer.packIDAT(compressedData));\n\n // End\n chunks.push(packer.packIEND());\n\n return Buffer.concat(chunks);\n};\n", "'use strict';\n\n\nvar parse = require('./parser-sync');\nvar pack = require('./packer-sync');\n\n\nexports.read = function(buffer, options) {\n\n return parse(buffer, options || {});\n};\n\nexports.write = function(png, options) {\n\n return pack(png, options);\n};\n", "'use strict';\n\nvar util = require('util');\nvar Stream = require('stream');\nvar Parser = require('./parser-async');\nvar Packer = require('./packer-async');\nvar PNGSync = require('./png-sync');\n\n\nvar PNG = exports.PNG = function(options) {\n Stream.call(this);\n\n options = options || {}; // eslint-disable-line no-param-reassign\n\n // coerce pixel dimensions to integers (also coerces undefined -> 0):\n this.width = options.width | 0;\n this.height = options.height | 0;\n\n this.data = this.width > 0 && this.height > 0 ?\n new Buffer(4 * this.width * this.height) : null;\n\n if (options.fill && this.data) {\n this.data.fill(0);\n }\n\n this.gamma = 0;\n this.readable = this.writable = true;\n\n this._parser = new Parser(options);\n\n this._parser.on('error', this.emit.bind(this, 'error'));\n this._parser.on('close', this._handleClose.bind(this));\n this._parser.on('metadata', this._metadata.bind(this));\n this._parser.on('gamma', this._gamma.bind(this));\n this._parser.on('parsed', function(data) {\n this.data = data;\n this.emit('parsed', data);\n }.bind(this));\n\n this._packer = new Packer(options);\n this._packer.on('data', this.emit.bind(this, 'data'));\n this._packer.on('end', this.emit.bind(this, 'end'));\n this._parser.on('close', this._handleClose.bind(this));\n this._packer.on('error', this.emit.bind(this, 'error'));\n\n};\nutil.inherits(PNG, Stream);\n\nPNG.sync = PNGSync;\n\nPNG.prototype.pack = function() {\n\n if (!this.data || !this.data.length) {\n this.emit('error', 'No data provided');\n return this;\n }\n\n process.nextTick(function() {\n this._packer.pack(this.data, this.width, this.height, this.gamma);\n }.bind(this));\n\n return this;\n};\n\n\nPNG.prototype.parse = function(data, callback) {\n\n if (callback) {\n var onParsed, onError;\n\n onParsed = function(parsedData) {\n this.removeListener('error', onError);\n\n this.data = parsedData;\n callback(null, this);\n }.bind(this);\n\n onError = function(err) {\n this.removeListener('parsed', onParsed);\n\n callback(err, null);\n }.bind(this);\n\n this.once('parsed', onParsed);\n this.once('error', onError);\n }\n\n this.end(data);\n return this;\n};\n\nPNG.prototype.write = function(data) {\n this._parser.write(data);\n return true;\n};\n\nPNG.prototype.end = function(data) {\n this._parser.end(data);\n};\n\nPNG.prototype._metadata = function(metadata) {\n this.width = metadata.width;\n this.height = metadata.height;\n\n this.emit('metadata', metadata);\n};\n\nPNG.prototype._gamma = function(gamma) {\n this.gamma = gamma;\n};\n\nPNG.prototype._handleClose = function() {\n if (!this._parser.writable && !this._packer.readable) {\n this.emit('close');\n }\n};\n\n\nPNG.bitblt = function(src, dst, srcX, srcY, width, height, deltaX, deltaY) { // eslint-disable-line max-params\n // coerce pixel dimensions to integers (also coerces undefined -> 0):\n /* eslint-disable no-param-reassign */\n srcX |= 0;\n srcY |= 0;\n width |= 0;\n height |= 0;\n deltaX |= 0;\n deltaY |= 0;\n /* eslint-enable no-param-reassign */\n\n if (srcX > src.width || srcY > src.height || srcX + width > src.width || srcY + height > src.height) {\n throw new Error('bitblt reading outside image');\n }\n\n if (deltaX > dst.width || deltaY > dst.height || deltaX + width > dst.width || deltaY + height > dst.height) {\n throw new Error('bitblt writing outside image');\n }\n\n for (var y = 0; y < height; y++) {\n src.data.copy(dst.data,\n ((deltaY + y) * dst.width + deltaX) << 2,\n ((srcY + y) * src.width + srcX) << 2,\n ((srcY + y) * src.width + srcX + width) << 2\n );\n }\n};\n\n\nPNG.prototype.bitblt = function(dst, srcX, srcY, width, height, deltaX, deltaY) { // eslint-disable-line max-params\n\n PNG.bitblt(this, dst, srcX, srcY, width, height, deltaX, deltaY);\n return this;\n};\n\nPNG.adjustGamma = function(src) {\n if (src.gamma) {\n for (var y = 0; y < src.height; y++) {\n for (var x = 0; x < src.width; x++) {\n var idx = (src.width * y + x) << 2;\n\n for (var i = 0; i < 3; i++) {\n var sample = src.data[idx + i] / 255;\n sample = Math.pow(sample, 1 / 2.2 / src.gamma);\n src.data[idx + i] = Math.round(sample * 255);\n }\n }\n }\n src.gamma = 0;\n }\n};\n\nPNG.prototype.adjustGamma = function() {\n PNG.adjustGamma(this);\n};\n", "module.exports=require('cwise-compiler')({\"args\":[\"array\",\"scalar\",\"index\"],\"pre\":{\"body\":\"{}\",\"args\":[],\"thisVars\":[],\"localVars\":[]},\"body\":{\"body\":\"{\\nvar _inline_1_v=_inline_1_arg1_,_inline_1_i\\nfor(_inline_1_i=0;_inline_1_i<_inline_1_arg2_.length-1;++_inline_1_i) {\\n_inline_1_v=_inline_1_v[_inline_1_arg2_[_inline_1_i]]\\n}\\n_inline_1_arg0_=_inline_1_v[_inline_1_arg2_[_inline_1_arg2_.length-1]]\\n}\",\"args\":[{\"name\":\"_inline_1_arg0_\",\"lvalue\":true,\"rvalue\":false,\"count\":1},{\"name\":\"_inline_1_arg1_\",\"lvalue\":false,\"rvalue\":true,\"count\":1},{\"name\":\"_inline_1_arg2_\",\"lvalue\":false,\"rvalue\":true,\"count\":4}],\"thisVars\":[],\"localVars\":[\"_inline_1_i\",\"_inline_1_v\"]},\"post\":{\"body\":\"{}\",\"args\":[],\"thisVars\":[],\"localVars\":[]},\"funcName\":\"convert\",\"blockSize\":64})\n", "\"use strict\"\n\nvar ndarray = require(\"ndarray\")\nvar do_convert = require(\"./doConvert.js\")\n\nmodule.exports = function convert(arr, result) {\n var shape = [], c = arr, sz = 1\n while(Array.isArray(c)) {\n shape.push(c.length)\n sz *= c.length\n c = c[0]\n }\n if(shape.length === 0) {\n return ndarray()\n }\n if(!result) {\n result = ndarray(new Float64Array(sz), shape)\n }\n do_convert(result, arr)\n return result\n}\n", "// (c) Dean McNamee , 2013.\n//\n// https://github.com/deanm/omggif\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 OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n//\n// omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n// including animation and compression. It does not rely on any specific\n// underlying system, so should run in the browser, Node, or Plask.\n\n\"use strict\";\n\nfunction GifWriter(buf, width, height, gopts) {\n var p = 0;\n\n var gopts = gopts === undefined ? { } : gopts;\n var loop_count = gopts.loop === undefined ? null : gopts.loop;\n var global_palette = gopts.palette === undefined ? null : gopts.palette;\n\n if (width <= 0 || height <= 0 || width > 65535 || height > 65535)\n throw new Error(\"Width/Height invalid.\");\n\n function check_palette_and_num_colors(palette) {\n var num_colors = palette.length;\n if (num_colors < 2 || num_colors > 256 || num_colors & (num_colors-1)) {\n throw new Error(\n \"Invalid code/color length, must be power of 2 and 2 .. 256.\");\n }\n return num_colors;\n }\n\n // - Header.\n buf[p++] = 0x47; buf[p++] = 0x49; buf[p++] = 0x46; // GIF\n buf[p++] = 0x38; buf[p++] = 0x39; buf[p++] = 0x61; // 89a\n\n // Handling of Global Color Table (palette) and background index.\n var gp_num_colors_pow2 = 0;\n var background = 0;\n if (global_palette !== null) {\n var gp_num_colors = check_palette_and_num_colors(global_palette);\n while (gp_num_colors >>= 1) ++gp_num_colors_pow2;\n gp_num_colors = 1 << gp_num_colors_pow2;\n --gp_num_colors_pow2;\n if (gopts.background !== undefined) {\n background = gopts.background;\n if (background >= gp_num_colors)\n throw new Error(\"Background index out of range.\");\n // The GIF spec states that a background index of 0 should be ignored, so\n // this is probably a mistake and you really want to set it to another\n // slot in the palette. But actually in the end most browsers, etc end\n // up ignoring this almost completely (including for dispose background).\n if (background === 0)\n throw new Error(\"Background index explicitly passed as 0.\");\n }\n }\n\n // - Logical Screen Descriptor.\n // NOTE(deanm): w/h apparently ignored by implementations, but set anyway.\n buf[p++] = width & 0xff; buf[p++] = width >> 8 & 0xff;\n buf[p++] = height & 0xff; buf[p++] = height >> 8 & 0xff;\n // NOTE: Indicates 0-bpp original color resolution (unused?).\n buf[p++] = (global_palette !== null ? 0x80 : 0) | // Global Color Table Flag.\n gp_num_colors_pow2; // NOTE: No sort flag (unused?).\n buf[p++] = background; // Background Color Index.\n buf[p++] = 0; // Pixel aspect ratio (unused?).\n\n // - Global Color Table\n if (global_palette !== null) {\n for (var i = 0, il = global_palette.length; i < il; ++i) {\n var rgb = global_palette[i];\n buf[p++] = rgb >> 16 & 0xff;\n buf[p++] = rgb >> 8 & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n if (loop_count !== null) { // Netscape block for looping.\n if (loop_count < 0 || loop_count > 65535)\n throw new Error(\"Loop count invalid.\")\n // Extension code, label, and length.\n buf[p++] = 0x21; buf[p++] = 0xff; buf[p++] = 0x0b;\n // NETSCAPE2.0\n buf[p++] = 0x4e; buf[p++] = 0x45; buf[p++] = 0x54; buf[p++] = 0x53;\n buf[p++] = 0x43; buf[p++] = 0x41; buf[p++] = 0x50; buf[p++] = 0x45;\n buf[p++] = 0x32; buf[p++] = 0x2e; buf[p++] = 0x30;\n // Sub-block\n buf[p++] = 0x03; buf[p++] = 0x01;\n buf[p++] = loop_count & 0xff; buf[p++] = loop_count >> 8 & 0xff;\n buf[p++] = 0x00; // Terminator.\n }\n\n\n var ended = false;\n\n this.addFrame = function(x, y, w, h, indexed_pixels, opts) {\n if (ended === true) { --p; ended = false; } // Un-end.\n\n opts = opts === undefined ? { } : opts;\n\n // TODO(deanm): Bounds check x, y. Do they need to be within the virtual\n // canvas width/height, I imagine?\n if (x < 0 || y < 0 || x > 65535 || y > 65535)\n throw new Error(\"x/y invalid.\")\n\n if (w <= 0 || h <= 0 || w > 65535 || h > 65535)\n throw new Error(\"Width/Height invalid.\")\n\n if (indexed_pixels.length < w * h)\n throw new Error(\"Not enough pixels for the frame size.\");\n\n var using_local_palette = true;\n var palette = opts.palette;\n if (palette === undefined || palette === null) {\n using_local_palette = false;\n palette = global_palette;\n }\n\n if (palette === undefined || palette === null)\n throw new Error(\"Must supply either a local or global palette.\");\n\n var num_colors = check_palette_and_num_colors(palette);\n\n // Compute the min_code_size (power of 2), destroying num_colors.\n var min_code_size = 0;\n while (num_colors >>= 1) ++min_code_size;\n num_colors = 1 << min_code_size; // Now we can easily get it back.\n\n var delay = opts.delay === undefined ? 0 : opts.delay;\n\n // From the spec:\n // 0 - No disposal specified. The decoder is\n // not required to take any action.\n // 1 - Do not dispose. The graphic is to be left\n // in place.\n // 2 - Restore to background color. The area used by the\n // graphic must be restored to the background color.\n // 3 - Restore to previous. The decoder is required to\n // restore the area overwritten by the graphic with\n // what was there prior to rendering the graphic.\n // 4-7 - To be defined.\n // NOTE(deanm): Dispose background doesn't really work, apparently most\n // browsers ignore the background palette index and clear to transparency.\n var disposal = opts.disposal === undefined ? 0 : opts.disposal;\n if (disposal < 0 || disposal > 3) // 4-7 is reserved.\n throw new Error(\"Disposal out of range.\");\n\n var use_transparency = false;\n var transparent_index = 0;\n if (opts.transparent !== undefined && opts.transparent !== null) {\n use_transparency = true;\n transparent_index = opts.transparent;\n if (transparent_index < 0 || transparent_index >= num_colors)\n throw new Error(\"Transparent color index.\");\n }\n\n if (disposal !== 0 || use_transparency || delay !== 0) {\n // - Graphics Control Extension\n buf[p++] = 0x21; buf[p++] = 0xf9; // Extension / Label.\n buf[p++] = 4; // Byte size.\n\n buf[p++] = disposal << 2 | (use_transparency === true ? 1 : 0);\n buf[p++] = delay & 0xff; buf[p++] = delay >> 8 & 0xff;\n buf[p++] = transparent_index; // Transparent color index.\n buf[p++] = 0; // Block Terminator.\n }\n\n // - Image Descriptor\n buf[p++] = 0x2c; // Image Seperator.\n buf[p++] = x & 0xff; buf[p++] = x >> 8 & 0xff; // Left.\n buf[p++] = y & 0xff; buf[p++] = y >> 8 & 0xff; // Top.\n buf[p++] = w & 0xff; buf[p++] = w >> 8 & 0xff;\n buf[p++] = h & 0xff; buf[p++] = h >> 8 & 0xff;\n // NOTE: No sort flag (unused?).\n // TODO(deanm): Support interlace.\n buf[p++] = using_local_palette === true ? (0x80 | (min_code_size-1)) : 0;\n\n // - Local Color Table\n if (using_local_palette === true) {\n for (var i = 0, il = palette.length; i < il; ++i) {\n var rgb = palette[i];\n buf[p++] = rgb >> 16 & 0xff;\n buf[p++] = rgb >> 8 & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n p = GifWriterOutputLZWCodeStream(\n buf, p, min_code_size < 2 ? 2 : min_code_size, indexed_pixels);\n\n return p;\n };\n\n this.end = function() {\n if (ended === false) {\n buf[p++] = 0x3b; // Trailer.\n ended = true;\n }\n return p;\n };\n\n this.getOutputBuffer = function() { return buf; };\n this.setOutputBuffer = function(v) { buf = v; };\n this.getOutputBufferPosition = function() { return p; };\n this.setOutputBufferPosition = function(v) { p = v; };\n}\n\n// Main compression routine, palette indexes -> LZW code stream.\n// |index_stream| must have at least one entry.\nfunction GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {\n buf[p++] = min_code_size;\n var cur_subblock = p++; // Pointing at the length field.\n\n var clear_code = 1 << min_code_size;\n var code_mask = clear_code - 1;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n var cur_shift = 0;\n // We have at most 12-bit codes, so we should have to hold a max of 19\n // bits here (and then we would write out).\n var cur = 0;\n\n function emit_bytes_to_buffer(bit_block_size) {\n while (cur_shift >= bit_block_size) {\n buf[p++] = cur & 0xff;\n cur >>= 8; cur_shift -= 8;\n if (p === cur_subblock + 256) { // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n }\n\n function emit_code(c) {\n cur |= c << cur_shift;\n cur_shift += cur_code_size;\n emit_bytes_to_buffer(8);\n }\n\n // I am not an expert on the topic, and I don't want to write a thesis.\n // However, it is good to outline here the basic algorithm and the few data\n // structures and optimizations here that make this implementation fast.\n // The basic idea behind LZW is to build a table of previously seen runs\n // addressed by a short id (herein called output code). All data is\n // referenced by a code, which represents one or more values from the\n // original input stream. All input bytes can be referenced as the same\n // value as an output code. So if you didn't want any compression, you\n // could more or less just output the original bytes as codes (there are\n // some details to this, but it is the idea). In order to achieve\n // compression, values greater then the input range (codes can be up to\n // 12-bit while input only 8-bit) represent a sequence of previously seen\n // inputs. The decompressor is able to build the same mapping while\n // decoding, so there is always a shared common knowledge between the\n // encoding and decoder, which is also important for \"timing\" aspects like\n // how to handle variable bit width code encoding.\n //\n // One obvious but very important consequence of the table system is there\n // is always a unique id (at most 12-bits) to map the runs. 'A' might be\n // 4, then 'AA' might be 10, 'AAA' 11, 'AAAA' 12, etc. This relationship\n // can be used for an effecient lookup strategy for the code mapping. We\n // need to know if a run has been seen before, and be able to map that run\n // to the output code. Since we start with known unique ids (input bytes),\n // and then from those build more unique ids (table entries), we can\n // continue this chain (almost like a linked list) to always have small\n // integer values that represent the current byte chains in the encoder.\n // This means instead of tracking the input bytes (AAAABCD) to know our\n // current state, we can track the table entry for AAAABC (it is guaranteed\n // to exist by the nature of the algorithm) and the next character D.\n // Therefor the tuple of (table_entry, byte) is guaranteed to also be\n // unique. This allows us to create a simple lookup key for mapping input\n // sequences to codes (table indices) without having to store or search\n // any of the code sequences. So if 'AAAA' has a table entry of 12, the\n // tuple of ('AAAA', K) for any input byte K will be unique, and can be our\n // key. This leads to a integer value at most 20-bits, which can always\n // fit in an SMI value and be used as a fast sparse array / object key.\n\n // Output code for the current contents of the index buffer.\n var ib_code = index_stream[0] & code_mask; // Load first input index.\n var code_table = { }; // Key'd on our 20-bit \"tuple\".\n\n emit_code(clear_code); // Spec says first code should be a clear code.\n\n // First index already loaded, process the rest of the stream.\n for (var i = 1, il = index_stream.length; i < il; ++i) {\n var k = index_stream[i] & code_mask;\n var cur_key = ib_code << 8 | k; // (prev, k) unique tuple.\n var cur_code = code_table[cur_key]; // buffer + k.\n\n // Check if we have to create a new code table entry.\n if (cur_code === undefined) { // We don't have buffer + k.\n // Emit index buffer (without k).\n // This is an inline version of emit_code, because this is the core\n // writing routine of the compressor (and V8 cannot inline emit_code\n // because it is a closure here in a different context). Additionally\n // we can call emit_byte_to_buffer less often, because we can have\n // 30-bits (from our 31-bit signed SMI), and we know our codes will only\n // be 12-bits, so can safely have 18-bits there without overflow.\n // emit_code(ib_code);\n cur |= ib_code << cur_shift;\n cur_shift += cur_code_size;\n while (cur_shift >= 8) {\n buf[p++] = cur & 0xff;\n cur >>= 8; cur_shift -= 8;\n if (p === cur_subblock + 256) { // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n\n if (next_code === 4096) { // Table full, need a clear.\n emit_code(clear_code);\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_table = { };\n } else { // Table not full, insert a new entry.\n // Increase our variable bit code sizes if necessary. This is a bit\n // tricky as it is based on \"timing\" between the encoding and\n // decoder. From the encoders perspective this should happen after\n // we've already emitted the index buffer and are about to create the\n // first table entry that would overflow our current code bit size.\n if (next_code >= (1 << cur_code_size)) ++cur_code_size;\n code_table[cur_key] = next_code++; // Insert into code table.\n }\n\n ib_code = k; // Index buffer to single input k.\n } else {\n ib_code = cur_code; // Index buffer to sequence in code table.\n }\n }\n\n emit_code(ib_code); // There will still be something in the index buffer.\n emit_code(eoi_code); // End Of Information.\n\n // Flush / finalize the sub-blocks stream to the buffer.\n emit_bytes_to_buffer(1);\n\n // Finish the sub-blocks, writing out any unfinished lengths and\n // terminating with a sub-block of length 0. If we have already started\n // but not yet used a sub-block it can just become the terminator.\n if (cur_subblock + 1 === p) { // Started but unused.\n buf[cur_subblock] = 0;\n } else { // Started and used, write length and additional terminator block.\n buf[cur_subblock] = p - cur_subblock - 1;\n buf[p++] = 0;\n }\n return p;\n}\n\nfunction GifReader(buf) {\n var p = 0;\n\n // - Header (GIF87a or GIF89a).\n if (buf[p++] !== 0x47 || buf[p++] !== 0x49 || buf[p++] !== 0x46 ||\n buf[p++] !== 0x38 || (buf[p++]+1 & 0xfd) !== 0x38 || buf[p++] !== 0x61) {\n throw new Error(\"Invalid GIF 87a/89a header.\");\n }\n\n // - Logical Screen Descriptor.\n var width = buf[p++] | buf[p++] << 8;\n var height = buf[p++] | buf[p++] << 8;\n var pf0 = buf[p++]; // .\n var global_palette_flag = pf0 >> 7;\n var num_global_colors_pow2 = pf0 & 0x7;\n var num_global_colors = 1 << (num_global_colors_pow2 + 1);\n var background = buf[p++];\n buf[p++]; // Pixel aspect ratio (unused?).\n\n var global_palette_offset = null;\n var global_palette_size = null;\n\n if (global_palette_flag) {\n global_palette_offset = p;\n global_palette_size = num_global_colors;\n p += num_global_colors * 3; // Seek past palette.\n }\n\n var no_eof = true;\n\n var frames = [ ];\n\n var delay = 0;\n var transparent_index = null;\n var disposal = 0; // 0 - No disposal specified.\n var loop_count = null;\n\n this.width = width;\n this.height = height;\n\n while (no_eof && p < buf.length) {\n switch (buf[p++]) {\n case 0x21: // Graphics Control Extension Block\n switch (buf[p++]) {\n case 0xff: // Application specific block\n // Try if it's a Netscape block (with animation loop counter).\n if (buf[p ] !== 0x0b || // 21 FF already read, check block size.\n // NETSCAPE2.0\n buf[p+1 ] == 0x4e && buf[p+2 ] == 0x45 && buf[p+3 ] == 0x54 &&\n buf[p+4 ] == 0x53 && buf[p+5 ] == 0x43 && buf[p+6 ] == 0x41 &&\n buf[p+7 ] == 0x50 && buf[p+8 ] == 0x45 && buf[p+9 ] == 0x32 &&\n buf[p+10] == 0x2e && buf[p+11] == 0x30 &&\n // Sub-block\n buf[p+12] == 0x03 && buf[p+13] == 0x01 && buf[p+16] == 0) {\n p += 14;\n loop_count = buf[p++] | buf[p++] << 8;\n p++; // Skip terminator.\n } else { // We don't know what it is, just try to get past it.\n p += 12;\n while (true) { // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n }\n break;\n\n case 0xf9: // Graphics Control Extension\n if (buf[p++] !== 0x4 || buf[p+4] !== 0)\n throw new Error(\"Invalid graphics extension block.\");\n var pf1 = buf[p++];\n delay = buf[p++] | buf[p++] << 8;\n transparent_index = buf[p++];\n if ((pf1 & 1) === 0) transparent_index = null;\n disposal = pf1 >> 2 & 0x7;\n p++; // Skip terminator.\n break;\n\n case 0xfe: // Comment Extension.\n while (true) { // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n // console.log(buf.slice(p, p+block_size).toString('ascii'));\n p += block_size;\n }\n break;\n\n default:\n throw new Error(\n \"Unknown graphic control label: 0x\" + buf[p-1].toString(16));\n }\n break;\n\n case 0x2c: // Image Descriptor.\n var x = buf[p++] | buf[p++] << 8;\n var y = buf[p++] | buf[p++] << 8;\n var w = buf[p++] | buf[p++] << 8;\n var h = buf[p++] | buf[p++] << 8;\n var pf2 = buf[p++];\n var local_palette_flag = pf2 >> 7;\n var interlace_flag = pf2 >> 6 & 1;\n var num_local_colors_pow2 = pf2 & 0x7;\n var num_local_colors = 1 << (num_local_colors_pow2 + 1);\n var palette_offset = global_palette_offset;\n var palette_size = global_palette_size;\n var has_local_palette = false;\n if (local_palette_flag) {\n var has_local_palette = true;\n palette_offset = p; // Override with local palette.\n palette_size = num_local_colors;\n p += num_local_colors * 3; // Seek past palette.\n }\n\n var data_offset = p;\n\n p++; // codesize\n while (true) {\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n\n frames.push({x: x, y: y, width: w, height: h,\n has_local_palette: has_local_palette,\n palette_offset: palette_offset,\n palette_size: palette_size,\n data_offset: data_offset,\n data_length: p - data_offset,\n transparent_index: transparent_index,\n interlaced: !!interlace_flag,\n delay: delay,\n disposal: disposal});\n break;\n\n case 0x3b: // Trailer Marker (end of file).\n no_eof = false;\n break;\n\n default:\n throw new Error(\"Unknown gif block: 0x\" + buf[p-1].toString(16));\n break;\n }\n }\n\n this.numFrames = function() {\n return frames.length;\n };\n\n this.loopCount = function() {\n return loop_count;\n };\n\n this.frameInfo = function(frame_num) {\n if (frame_num < 0 || frame_num >= frames.length)\n throw new Error(\"Frame index out of range.\");\n return frames[frame_num];\n }\n\n this.decodeAndBlitFrameBGRA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf, frame.data_offset, index_stream, num_pixels);\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indicies of the top left and bottom right corners of the subrect.\n var opbeg = ((frame.y * width) + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) { // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) { // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip-1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = b;\n pixels[op++] = g;\n pixels[op++] = r;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n\n // I will go to copy and paste hell one day...\n this.decodeAndBlitFrameRGBA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf, frame.data_offset, index_stream, num_pixels);\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indicies of the top left and bottom right corners of the subrect.\n var opbeg = ((frame.y * width) + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) { // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) { // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip-1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = r;\n pixels[op++] = g;\n pixels[op++] = b;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n}\n\nfunction GifReaderLZWOutputIndexStream(code_stream, p, output, output_length) {\n var min_code_size = code_stream[p++];\n\n var clear_code = 1 << min_code_size;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n // NOTE: This shares the same name as the encoder, but has a different\n // meaning here. Here this masks each code coming from the code stream.\n var code_mask = (1 << cur_code_size) - 1;\n var cur_shift = 0;\n var cur = 0;\n\n var op = 0; // Output pointer.\n\n var subblock_size = code_stream[p++];\n\n // TODO(deanm): Would using a TypedArray be any faster? At least it would\n // solve the fast mode / backing store uncertainty.\n // var code_table = Array(4096);\n var code_table = new Int32Array(4096); // Can be signed, we only use 20 bits.\n\n var prev_code = null; // Track code-1.\n\n while (true) {\n // Read up to two bytes, making sure we always 12-bits for max sized code.\n while (cur_shift < 16) {\n if (subblock_size === 0) break; // No more data to be read.\n\n cur |= code_stream[p++] << cur_shift;\n cur_shift += 8;\n\n if (subblock_size === 1) { // Never let it get to 0 to hold logic above.\n subblock_size = code_stream[p++]; // Next subblock.\n } else {\n --subblock_size;\n }\n }\n\n // TODO(deanm): We should never really get here, we should have received\n // and EOI.\n if (cur_shift < cur_code_size)\n break;\n\n var code = cur & code_mask;\n cur >>= cur_code_size;\n cur_shift -= cur_code_size;\n\n // TODO(deanm): Maybe should check that the first code was a clear code,\n // at least this is what you're supposed to do. But actually our encoder\n // now doesn't emit a clear code first anyway.\n if (code === clear_code) {\n // We don't actually have to clear the table. This could be a good idea\n // for greater error checking, but we don't really do any anyway. We\n // will just track it with next_code and overwrite old entries.\n\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_mask = (1 << cur_code_size) - 1;\n\n // Don't update prev_code ?\n prev_code = null;\n continue;\n } else if (code === eoi_code) {\n break;\n }\n\n // We have a similar situation as the decoder, where we want to store\n // variable length entries (code table entries), but we want to do in a\n // faster manner than an array of arrays. The code below stores sort of a\n // linked list within the code table, and then \"chases\" through it to\n // construct the dictionary entries. When a new entry is created, just the\n // last byte is stored, and the rest (prefix) of the entry is only\n // referenced by its table entry. Then the code chases through the\n // prefixes until it reaches a single byte code. We have to chase twice,\n // first to compute the length, and then to actually copy the data to the\n // output (backwards, since we know the length). The alternative would be\n // storing something in an intermediate stack, but that doesn't make any\n // more sense. I implemented an approach where it also stored the length\n // in the code table, although it's a bit tricky because you run out of\n // bits (12 + 12 + 8), but I didn't measure much improvements (the table\n // entries are generally not the long). Even when I created benchmarks for\n // very long table entries the complexity did not seem worth it.\n // The code table stores the prefix entry in 12 bits and then the suffix\n // byte in 8 bits, so each entry is 20 bits.\n\n var chase_code = code < next_code ? code : prev_code;\n\n // Chase what we will output, either {CODE} or {CODE-1}.\n var chase_length = 0;\n var chase = chase_code;\n while (chase > clear_code) {\n chase = code_table[chase] >> 8;\n ++chase_length;\n }\n\n var k = chase;\n\n var op_end = op + chase_length + (chase_code !== code ? 1 : 0);\n if (op_end > output_length) {\n console.log(\"Warning, gif stream longer than expected.\");\n return;\n }\n\n // Already have the first byte from the chase, might as well write it fast.\n output[op++] = k;\n\n op += chase_length;\n var b = op; // Track pointer, writing backwards.\n\n if (chase_code !== code) // The case of emitting {CODE-1} + k.\n output[op++] = k;\n\n chase = chase_code;\n while (chase_length--) {\n chase = code_table[chase];\n output[--b] = chase & 0xff; // Write backwards.\n chase >>= 8; // Pull down to the prefix code.\n }\n\n if (prev_code !== null && next_code < 4096) {\n code_table[next_code++] = prev_code << 8 | k;\n // TODO(deanm): Figure out this clearing vs code growth logic better. I\n // have an feeling that it should just happen somewhere else, for now it\n // is awkward between when we grow past the max and then hit a clear code.\n // For now just check if we hit the max 12-bits (then a clear code should\n // follow, also of course encoded in 12-bits).\n if (next_code >= code_mask+1 && cur_code_size < 12) {\n ++cur_code_size;\n code_mask = code_mask << 1 | 1;\n }\n }\n\n prev_code = code;\n }\n\n if (op !== output_length) {\n console.log(\"Warning, gif stream shorter than expected.\");\n }\n\n return output;\n}\n\n// CommonJS.\ntry { exports.GifWriter = GifWriter; exports.GifReader = GifReader } catch(e) {}\n", "var Bitmap = module.exports = exports = function(buffer){\n this.buffer = buffer;\n this.initialized = false;\n\n this.fileHeader = null;\n this.infoHeader = null;\n this.coreHeader = null;\n this.colorPalette = null;\n this.dataPos = -1;\n};\nBitmap.prototype.CORE_TYPE_WINDOWS_V3 = 40;\nBitmap.prototype.CORE_TYPE_WINDOWS_V4 = 108;\nBitmap.prototype.CORE_TYPE_WINDOWS_V5 = 124;\nBitmap.prototype.CORE_TYPE_OS2_V1 = 12;\nBitmap.prototype.CORE_TYPE_OS2_V2 = 64;\nBitmap.prototype.BITMAPCOREHEADER = Bitmap.prototype.CORE_TYPE_OS2_V1;\nBitmap.prototype.BITMAPINFOHEADER = Bitmap.prototype.CORE_TYPE_WINDOWS_V3;\nBitmap.prototype.BITMAPINFOHEADER2 = Bitmap.prototype.CORE_TYPE_OS2_V2;\nBitmap.prototype.BITMAPV4HEADER = Bitmap.prototype.CORE_TYPE_WINDOWS_V4;\nBitmap.prototype.BITMAPV5HEADER = Bitmap.prototype.CORE_TYPE_WINDOWS_V5;\nBitmap.prototype.COMPRESSION_BI_RGB = 0;\nBitmap.prototype.COMPRESSION_BI_RLE8 = 1;\nBitmap.prototype.COMPRESSION_BI_RLE4 = 2;\nBitmap.prototype.COMPRESSION_BI_BITFIELDS = 3;\nBitmap.prototype.COMPRESSION_BI_JPEG = 4;\nBitmap.prototype.COMPRESSION_BI_PNG = 5;\nBitmap.prototype.BITCOUNT_2 = 1;\nBitmap.prototype.BITCOUNT_16 = 4;\nBitmap.prototype.BITCOUNT_256 = 8;\nBitmap.prototype.BITCOUNT_16bit = 16;\nBitmap.prototype.BITCOUNT_24bit = 24;\nBitmap.prototype.BITCOUNT_32bit = 32;\nBitmap.prototype.init = function(){\n this.readFileHeader();\n this.readInfoHeader();\n this.readCoreHeader();\n this.readColorPalette();\n\n this.initDataPos();\n this.initialized = true;\n};\nBitmap.prototype.checkInit = function (){\n if(!this.initialized){\n throw new Error('not initialized');\n }\n /* nop */\n};\nBitmap.prototype.isBitmap = function(){\n this.checkInit();\n\n if('BM' == this.fileHeader.bfType){\n return true;\n }\n return false;\n};\nBitmap.prototype.getData = function (){\n this.checkInit();\n\n if(this.COMPRESSION_BI_RGB !== this.coreHeader.__copmression__){\n throw new Error('not supported compression: ' + this.coreHeader.__copmression__);\n }\n\n var bitCount = this.coreHeader.__bitCount__;\n var width = this.getWidth();\n var height = this.getHeight();\n\n var line = (width * bitCount) / 8;\n if(0 != (line % 4)){\n line = ((line / 4) + 1) * 4;\n }\n\n var rgbaData = [];\n var dataPos = this.dataPos;\n for(var i = 0; i < height; ++i) {\n var pos = dataPos + (line * (height - (i + 1)));\n var buf = this.buffer.slice(pos, pos + line);\n var color = this.mapColor(buf, bitCount);\n rgbaData.push(color);\n }\n return rgbaData;\n};\nBitmap.prototype.getWidth = function (){\n this.checkInit();\n\n return this.coreHeader.__width__;\n};\nBitmap.prototype.getHeight = function (){\n this.checkInit();\n\n return this.coreHeader.__height__;\n};\nBitmap.prototype.read = function(buf, offset, limit){\n var read = [];\n for(var i = offset, len = offset + limit; i < len; ++i){\n read.push(buf.readInt8(i));\n }\n return new Buffer(read);\n};\nBitmap.prototype.readFileHeader = function(){\n var bfType = this.read(this.buffer, 0, 2);\n var bfSize = this.read(this.buffer, 2, 4);\n var bfReserved1 = this.read(this.buffer, 6, 2);\n var bfReserved2 = this.read(this.buffer, 8, 2);\n var bfOffBits = this.read(this.buffer, 10, 4);\n\n this.fileHeader = {\n bfType: bfType.toString('ascii'),\n _bfType: bfType,\n bfSize: bfSize.readUInt16LE(0),\n _bfSize: bfSize,\n bfReserved1: 0,\n bfReserved2: 0,\n bfOffBits: bfOffBits.readUInt16LE(0),\n _bfOffBits: bfOffBits\n };\n};\nBitmap.prototype.readInfoHeader = function (){\n this.infoHeader = this.read(this.buffer, 14, 4);\n};\nBitmap.prototype.readCoreHeader = function (){\n var coreType = this.infoHeader.readUInt16LE(0);\n switch(coreType){\n case this.BITMAPCOREHEADER:\n return this.readCoreHeaderOS2_V1();\n case this.BITMAPINFOHEADER2:\n return this.readCoreHeaderOS2_V2();\n case this.BITMAPV4HEADER:\n return this.readCoreHeaderWINDOWS_V4();\n case this.BITMAPV5HEADER:\n return this.readCoreHeaderWINDOWS_V5();\n case this.BITMAPINFOHEADER:\n return this.readCoreHeaderWINDOWS_V3();\n default:\n throw new Error('unknown coreType: ' + coreType);\n }\n};\nBitmap.prototype.readCoreHeaderWINDOWS_V3 = function (){\n var biWidth = this.read(this.buffer, 0x12, 4);\n var biHeight = this.read(this.buffer, 0x16, 4);\n var biPlanes = this.read(this.buffer, 0x1a, 2);\n var biBitCount = this.read(this.buffer, 0x1c, 2);\n var biCopmression = this.read(this.buffer, 0x1e, 4);\n var biSizeImage = this.read(this.buffer, 0x22, 4);\n var biXPixPerMeter = this.read(this.buffer, 0x26, 4);\n var biYPixPerMeter = this.read(this.buffer, 0x2a, 4);\n var biClrUsed = this.read(this.buffer, 0x2e, 4);\n var biCirImportant = this.read(this.buffer, 0x32, 4);\n\n this.coreHeader = {\n __copmression__: biCopmression.readUInt16LE(0),\n __bitCount__: biBitCount.readUInt8(0),\n __width__: biWidth.readUInt16LE(0),\n __height__: biHeight.readUInt16LE(0),\n biWidth: biWidth.readUInt16LE(0),\n _biWidth: biWidth,\n biHeight: biHeight.readUInt16LE(0),\n _biHeight: biHeight,\n biPlanes: biPlanes.readUInt8(0),\n _biPlanes: biPlanes,\n biBitCount: biBitCount.readUInt8(0),\n _biBitCount: biBitCount,\n biCopmression: biCopmression.readUInt16LE(0),\n _biCopmression: biCopmression,\n biSizeImage: biSizeImage.readUInt16LE(0),\n _biSizeImage: biSizeImage,\n biXPixPerMeter: biXPixPerMeter.readUInt16LE(0),\n _biXPixPerMeter: biXPixPerMeter,\n biYPixPerMeter: biYPixPerMeter.readUInt16LE(0),\n _biYPixPerMeter: biYPixPerMeter,\n biClrUsed: biClrUsed.readUInt16LE(0),\n _biClrUsed: biClrUsed,\n biCirImportant: biCirImportant.readUInt16LE(0),\n _biCirImportant: biCirImportant\n };\n};\nBitmap.prototype.readCoreHeaderWINDOWS_V4 = function (){\n throw new Error('not yet impl');\n \n var bV4Width = this.read(this.buffer, 0x12, 4);\n var bV4Height = this.read(this.buffer, 0x16, 4);\n var bV4Planes = this.read(this.buffer, 0x1a, 2);\n var bV4BitCount = this.read(this.buffer, 0x1c, 2);\n var bV4Compression = this.read(this.buffer, 0x1e, 4);\n var bV4SizeImage = this.read(this.buffer, 0x22, 4);\n var bV4XPelsPerMeter = this.read(this.buffer, 0x26, 4);\n var bV4YPelsPerMeter = this.read(this.buffer, 0x2a, 4);\n var bV4ClrUsed = this.read(this.buffer, 0x2e, 4);\n var bV4ClrImportant = this.read(this.buffer, 0x32, 4);\n var bV4RedMask = this.read(this.buffer, 0x36, 4);\n var bV4GreenMask = this.read(this.buffer, 0x3a, 4);\n var bV4BlueMask = this.read(this.buffer, 0x3e, 4);\n var bV4AlphaMask = this.read(this.buffer, 0x42, 4);\n var bV4CSType = this.read(this.buffer, 0x46, 4);\n var bV4Endpoints = this.read(this.buffer, 0x6a, 36);\n var bV4GammaRed = this.read(this.buffer, 0x6e, 4);\n var bV4GammaGreen = this.read(this.buffer, 0x72, 4);\n var bV4GammaBlue = this.read(this.buffer, 0x76, 4);\n\n this.coreHeader = {\n __compression__: bV4Compression.readUInt16LE(0),\n __bitCount__: bV4BitCount.readUInt8(0),\n __width__: bV4Width.readUInt16LE(0),\n __height__: bV4Height.readUInt16LE(0),\n bV4Width: bV4Width.readUInt16LE(0),\n _bV4Width: bV4Width,\n bV4Height: bV4Height.readUInt16LE(0),\n _bV4Height: bV4Height,\n bV4Planes: bV4Planes.readUInt8(0),\n _bV4Planes: bV4Planes,\n bV4BitCount: bV4BitCount.readUInt8(0),\n _bV4BitCount: bV4BitCount,\n bV4Compression: bV4Compression.readUInt16LE(0),\n _bV4Compression: bV4Compression,\n bV4SizeImage: bV4SizeImage.readUInt16LE(0),\n _bV4SizeImage: bV4SizeImage,\n bV4XPelsPerMeter: bV4XPelsPerMeter.readUInt16LE(0),\n _bV4XPelsPerMeter: bV4XPelsPerMeter,\n bV4YPelsPerMeter: bV4YPelsPerMeter.readUInt16LE(0),\n _bV4YPelsPerMeter: bV4YPelsPerMeter,\n bV4ClrUsed: bV4ClrUsed.readUInt16LE(0),\n _bV4ClrUsed: bV4ClrUsed,\n bV4ClrImportant: bV4ClrImportant.readUInt16LE(0),\n _bV4ClrImportant: bV4ClrImportant,\n bV4RedMask: bV4RedMask.readUInt16LE(0),\n _bV4RedMask: bV4RedMask,\n bV4GreenMask: bV4GreenMask.readUInt16LE(0),\n _bV4GreenMask: bV4GreenMask,\n bV4BlueMask: bV4BlueMask.readUInt16LE(0),\n _bV4BlueMask: bV4BlueMask,\n bV4AlphaMask: bV4AlphaMask.readUInt16LE(0),\n _bV4AlphaMask: bV4AlphaMask,\n bV4CSType: bV4CSType.readUInt16LE(0),\n _bV4CSType: bV4CSType,\n bV4Endpoints: null,\n _bV4Endpoints: bV4Endpoints,\n bV4GammaRed: bV4GammaRed.readUInt16LE(0),\n _bV4GammaRed: bV4GammaRed,\n bV4GammaGreen: bV4GammaGreen.readUInt16LE(0),\n _bV4GammaGreen: bV4GammaGreen,\n bV4GammaBlue: bV4GammaBlue.readUInt16LE(0),\n _bV4GammaBlue: bV4GammaBlue\n };\n};\nBitmap.prototype.readCoreHeaderWINDOWS_V5 = function (){\n throw new Error('not yet impl');\n\n var bV5Width = this.read(this.buffer, 0x12, 4);\n var bV5Height = this.read(this.buffer, 0x16, 4);\n var bV5Planes = this.read(this.buffer, 0x1a, 2);\n var bV5BitCount = this.read(this.buffer, 0x1c, 2);\n var bV5Compression = this.read(this.buffer, 0x1e, 4);\n var bV5SizeImage = this.read(this.buffer, 0x22, 4);\n var bV5XPelsPerMeter = this.read(this.buffer, 0x26, 4);\n var bV5YPelsPerMeter = this.read(this.buffer, 0x2a, 4);\n var bV5ClrUsed = this.read(this.buffer, 0x2e, 4);\n var bV5ClrImportant = this.read(this.buffer, 0x32, 4);\n var bV5RedMask = this.read(this.buffer, 0x36, 4);\n var bV5GreenMask = this.read(this.buffer, 0x3a, 4);\n var bV5BlueMask = this.read(this.buffer, 0x3e, 4);\n var bV5AlphaMask = this.read(this.buffer, 0x42, 4);\n var bV5CSType = this.read(this.buffer, 0x46, 4);\n var bV5Endpoints = this.read(this.buffer, 0x6a, 36);\n var bV5GammaRed = this.read(this.buffer, 0x6e, 4);\n var bV5GammaGreen = this.read(this.buffer, 0x72, 4);\n var bV5GammaBlue = this.read(this.buffer, 0x76, 4);\n var bV5Intent = this.read(this.buffer, 0x7a, 4);\n var bV5ProfileData = this.read(this.buffer, 0x7e, 4);\n var bV5ProfileSize = this.read(this.buffer, 0x82, 4);\n var bV5Reserved = this.read(this.buffer, 0x86, 4);\n\n this.coreHeader = {\n __compression__: bV5Compression.readUInt16LE(0),\n __bitCount__: bV5BitCount.readUInt8(0),\n __width__: bV5Width.readUInt16LE(0),\n __height__: bV5Height.readUInt16LE(0),\n bV5Width: bV5Width.readUInt16LE(0),\n _bV5Width: bV5Width,\n bV5Height: bV5Height.readUInt16LE(0),\n _bV5Height: bV5Height,\n bV5Planes: bV5Planes.readUInt8(0),\n _bV5Planes: bV5Planes,\n bV5BitCount: bV5BitCount.readUInt8(0),\n _bV5BitCount: bV5BitCount,\n bV5Compression: bV5Compression.readUInt16LE(0),\n _bV5Compression: bV5Compression,\n bV5SizeImage: bV5SizeImage.readUInt16LE(0),\n _bV5SizeImage: bV5SizeImage,\n bV5XPelsPerMeter: bV5XPelsPerMeter.readUInt16LE(0),\n _bV5XPelsPerMeter: bV5XPelsPerMeter,\n bV5YPelsPerMeter: bV5YPelsPerMeter.readUInt16LE(0),\n _bV5YPelsPerMeter: bV5YPelsPerMeter,\n bV5ClrUsed: bV5ClrUsed.readUInt16LE(0),\n _bV5ClrUsed: bV5ClrUsed,\n bV5ClrImportant: bV5ClrImportant.readUInt16LE(0),\n _bV5ClrImportant: bV5ClrImportant,\n bV5RedMask: bV5RedMask.readUInt16LE(0),\n _bV5RedMask: bV5RedMask,\n bV5GreenMask: bV5GreenMask.readUInt16LE(0),\n _bV5GreenMask: bV5GreenMask,\n bV5BlueMask: bV5BlueMask.readUInt16LE(0),\n _bV5BlueMask: bV5BlueMask,\n bV5AlphaMask: bV5AlphaMask.readUInt16LE(0),\n _bV5AlphaMask: bV5AlphaMask,\n bV5CSType: bV5CSType.readUInt16LE(0),\n _bV5CSType: bV5CSType,\n bV5Endpoints: null,\n _bV5Endpoints: bV5Endpoints,\n bV5GammaRed: bV5GammaRed.readUInt16LE(0),\n _bV5GammaRed: bV5GammaRed,\n bV5GammaGreen: bV5GammaGreen.readUInt16LE(0),\n _bV5GammaGreen: bV5GammaGreen,\n bV5GammaBlue: bV5GammaBlue.readUInt16LE(0),\n _bV5GammaBlue: bV5GammaBlue,\n bV5Intent: bV5Intent.readUInt16LE(0),\n _bV5Intent: bV5Intent,\n bV5ProfileData: bV5ProfileData.readUInt16LE(0),\n _bV5ProfileData: bV5ProfileData,\n bV5ProfileSize: bV5ProfileSize.readUInt16LE(0),\n _bV5ProfileSize: bV5ProfileSize,\n bV5Reserved: 0,\n _bV5Reserved: bV5Reserved\n };\n};\nBitmap.prototype.readCoreHeaderOS2_V1 = function (){\n throw new Error('not yet impl');\n\n var bcWidth = this.read(this.buffer, 0x12, 2);\n var bcHeight = this.read(this.buffer, 0x14, 2);\n var bcPlanes = this.read(this.buffer, 0x16, 2);\n var bcBitCount = this.read(this.buffer, 0x18, 2);\n\n this.coreHeader = {\n __compression__: 0,\n __bitCount__: bcBitCount.readUInt8(0),\n __width__: bcWidth.readUInt8(0),\n __height__: bcHeight.readUInt8(0),\n bcWidth: bcWidth.readUInt8(0),\n _bcWidth: bcWidth,\n bcHeight: bcHeight.readUInt8(0),\n _bcHeight: bcHeight,\n bcPlanes: bcPlanes.readUInt8(0),\n _bcPlanes: bcPlanes,\n bcBitCount: bcBitCount.readUInt8(0),\n _bcBitCount: bcBitCount\n };\n};\nBitmap.prototype.readCoreHeaderOS2_V2 = function (){\n throw new Error('not yet impl');\n\n var cx = this.read(this.buffer, 0x12, 4);\n var cy = this.read(this.buffer, 0x16, 4);\n var cPlanes = this.read(this.buffer, 0x1a, 2);\n var cBitCount = this.read(this.buffer, 0x1c, 2);\n var ulCompression = this.read(this.buffer, 0x1e, 4);\n var cbImage = this.read(this.buffer, 0x22, 4);\n var cxResolution = this.read(this.buffer, 0x26, 4);\n var cyResolution = this.read(this.buffer, 0x2a, 4);\n var cclrUsed = this.read(this.buffer, 0x2e, 4);\n var cclrImportant = this.read(this.buffer, 0x32, 4);\n var usUnits = this.read(this.buffer, 0x36, 2);\n var usReserved = this.read(this.buffer, 0x38, 2);\n var usRecording = this.read(this.buffer, 0x3a, 2);\n var usRendering = this.read(this.buffer, 0x3c, 2);\n var cSize1 = this.read(this.buffer, 0x3e, 4);\n var cSize2 = this.read(this.buffer, 0x42, 4);\n var ulColorEncoding = this.read(this.buffer, 0x46, 4);\n var ulIdentifier = this.read(this.buffer, 0x4a, 4);\n\n this.coreHeader = {\n __compression__: ulCompression.readUInt16LE(0),\n __bitCount__: cBitCount.readUInt8(0),\n __width__: cx.readUInt16LE(0),\n __height__: cy.readUInt16LE(0),\n cx: cx.readUInt16LE(0),\n _cx: cx,\n cy: cy.readUInt16LE(0),\n _cy: cy,\n cPlanes: cPlanes.readUInt8(0),\n _cPlanes: cPlanes,\n cBitCount: cBitCount.readUInt8(0),\n _cBitCount: cBitCount,\n ulCompression: ulCompression.readUInt16LE(0),\n _ulCompression: ulCompression,\n cbImage: cbImage.readUInt16LE(0),\n _cbImage: cbImage,\n cxResolution: cxResolution.readUInt16LE(0),\n _cxResolution: cxResolution,\n cyResolution: cyResolution.readUInt16LE(0),\n _cyResolution: cyResolution,\n cclrUsed: cclrUsed.readUInt16LE(0),\n _cclrUsed: cclrUsed,\n cclrImportant: cclrImportant.readUInt16LE(0),\n _cclrImportant: cclrImportant,\n usUnits: usUnits.readUInt8(0),\n _usUnits: usUnits,\n usReserved: usReserved.readUInt8(0),\n _usReserved: usReserved,\n usRecording: usRecording.readUInt8(0),\n _usRecording: usRecording,\n usRendering: usRendering.readUInt8(0),\n _usRendering: usRendering,\n cSize1: cSize1.readUInt16LE(0),\n _cSize1: cSize1,\n cSize2: cSize2.readUInt16LE(0),\n _cSize1: cSize1,\n ulColorEncoding: ulColorEncoding.readUInt16LE(0),\n _ulColorEncoding: ulColorEncoding,\n ulIdentifier: ulIdentifier.readUInt16LE(0),\n _ulIdentifier: ulIdentifier\n };\n};\nBitmap.prototype.readColorPalette = function (){\n var bitCount = this.coreHeader.__bitCount__;\n if(this.BITCOUNT_16bit == bitCount){\n return /* nop */;\n }\n if(this.BITCOUNT_24bit == bitCount){\n return /* nop */;\n }\n if(this.BITCOUNT_32bit == bitCount){\n return /* nop */;\n }\n\n var coreType = this.infoHeader.readUInt16LE(0);\n switch(coreType){\n case this.BITMAPCOREHEADER:\n return this.readColorPalette_RGBTRIPLE(bitCount, 0x1a);\n case this.BITMAPINFOHEADER2:\n return this.readColorPalette_RGBTRIPLE(bitCount, 0x4e);\n case this.BITMAPV4HEADER:\n return this.readColorPalette_RGBQUAD(bitCount, 0x7a);\n case this.BITMAPV5HEADER:\n return this.readColorPalette_RGBQUAD(bitCount, 0x8a);\n case this.BITMAPINFOHEADER:\n return this.readColorPalette_RGBQUAD(bitCount, 0x36);\n default:\n throw new Error('unknown colorPalette: ' + coreType + ',' + bitCount);\n }\n};\nBitmap.prototype.readColorPalette_RGBTRIPLE = function (bitCount, startPos){\n throw new Error('not yet impl');\n};\nBitmap.prototype.readColorPalette_RGBQUAD = function (bitCount, startPos){\n if(this.BITCOUNT_2 == bitCount){\n return this.readRGBQUAD(1 << this.BITCOUNT_2, startPos);\n }\n if(this.BITCOUNT_16 == bitCount){\n return this.readRGBQUAD(1 << this.BITCOUNT_16, startPos);\n }\n if(this.BITCOUNT_256 == bitCount){\n return this.readRGBQUAD(1 << this.BITCOUNT_256, startPos);\n }\n throw new Error('unknown bitCount: ' + bitCount);\n};\nBitmap.prototype.readRGBQUAD = function(count, startPos){\n var palette = [];\n for(var i = startPos, len = startPos + (4 * count); i < len; i += 4){\n palette.push({\n rgbBlue: this.read(this.buffer, i, 1).readUInt8(0),\n rgbGreen: this.read(this.buffer, i + 1, 1).readUInt8(0),\n rgbRed: this.read(this.buffer, i + 2, 1).readUInt8(0),\n rgbReserved: this.read(this.buffer, i + 3, 1).readUInt8(0)\n });\n }\n this.colorPalette = palette;\n};\nBitmap.prototype.initDataPos = function(){\n var bitCount = this.coreHeader.__bitCount__;\n var hasPalette = true;\n if(this.BITCOUNT_16bit == bitCount){\n hasPalette = true;\n }\n if(this.BITCOUNT_24bit == bitCount){\n hasPalette = true;\n }\n if(this.BITCOUNT_32bit == bitCount){\n hasPalette = true;\n }\n\n var coreType = this.infoHeader.readUInt16LE(0);\n switch(coreType){\n case this.BITMAPCOREHEADER:\n this.dataPos = 0x1a;\n if(hasPalette){\n this.dataPos = this.dataPos + (3 * (1 << bitCount));\n }\n break;\n case this.BITMAPINFOHEADER2:\n this.dataPos = 0x4e;\n if(hasPalette){\n this.dataPos = this.dataPos + (3 * (1 << bitCount));\n }\n break;\n case this.BITMAPV4HEADER:\n this.dataPos = 0x7a;\n if(hasPalette){\n this.dataPos = this.dataPos + (4 * (1 << bitCount));\n }\n break;\n case this.BITMAPV5HEADER:\n this.dataPos = 0x8a;\n if(hasPalette){\n this.dataPos = this.dataPos + (4 * (1 << bitCount));\n }\n case this.BITMAPINFOHEADER:\n this.dataPos = 0x36;\n if(hasPalette){\n this.dataPos = this.dataPos + (4 * (1 << bitCount));\n }\n break;\n default:\n throw new Error('unknown colorPalette: ' + coreType + ',' + bitCount);\n }\n};\nBitmap.prototype.mapRGBA = function(r, g, b, a){\n var hex = [];\n\n var padHex = function(value){\n var h = value.toString(16);\n if(value < 0x0f){\n return '0' + h;\n }\n return h;\n };\n\n hex.push(padHex(r));\n hex.push(padHex(g));\n hex.push(padHex(b));\n\n return '#' + hex.join('');\n};\nBitmap.prototype.mapColor = function(bmpBuf, bitCount){\n var b, g, r, a;\n var length = bmpBuf.length;\n var colorData = [];\n\n if(this.BITCOUNT_2 == bitCount){\n for(var i = 0; i < length; ++i){\n var paletteValue = bmpBuf[i];\n var bin = paletteValue.toString(2);\n bin = new Array(8 - bin.length).join('0') + bin;\n\n for(var j = 0; j < bin.length; ++j){\n var paletteIndex = parseInt(bin.substring(j, j + 1), 10);\n var palette = this.colorPalette[paletteIndex];\n colorData.push(this.mapRGBA(palette.rgbRed, palette.rgbGreen, palette.rgbBlue, -1));\n }\n }\n return colorData;\n }\n if(this.BITCOUNT_16 == bitCount){\n for(var i = 0; i < length; i += 2){\n var paletteHigh = bmpBuf.readUInt8(i);\n var paletteLow = bmpBuf.readUInt8(i + 1);\n var indexes = [paletteHigh, paletteLow];\n indexes.forEach(function(paletteIndex){\n var palette = this.colorPalette[paletteIndex];\n colorData.push(this.mapRGBA(palette.rgbRed, palette.rgbGreen, palette.rgbBlue, -1));\n });\n }\n\n return colorData;\n }\n if(this.BITCOUNT_256 == bitCount){\n for(var i = 0; i < length; ++i){\n var paletteIndex = bmpBuf.readUInt16LE(i);\n var palette = this.colorPalette[paletteIndex];\n colorData.push(this.mapRGBA(palette.rgbRed, palette.rgbGreen, palette.rgbBlue, -1));\n }\n return colorData;\n }\n if(this.BITCOUNT_16bit == bitCount){\n for(var i = 0; i < length; i += 3){\n b = bmpBuf[i];\n g = bmpBuf[i + 1];\n r = bmpBuf[i + 2];\n colorData.push(this.mapRGBA(r, g, b, -1));\n }\n return colorData;\n }\n if(this.BITCOUNT_24bit == bitCount){\n for(var i = 0; i < length; i += 3){\n b = bmpBuf[i];\n g = bmpBuf[i + 1];\n r = bmpBuf[i + 2];\n colorData.push(this.mapRGBA(r, g, b, -1));\n }\n return colorData;\n }\n if(this.BITCOUNT_32bit == bitCount){\n for(var i = 0; i < length; i += 4){\n b = bmpBuf[i];\n g = bmpBuf[i + 1];\n r = bmpBuf[i + 2];\n a = bmpBuf[i + 3];\n colorData.push(this.mapRGBA(r, g, b, a));\n }\n return colorData;\n }\n throw new Error('unknown bitCount: ' + bitCount);\n};\n", "module.exports = require('./lib/bitmap');\n", "'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n", "[\n\"ac\",\n\"com.ac\",\n\"edu.ac\",\n\"gov.ac\",\n\"net.ac\",\n\"mil.ac\",\n\"org.ac\",\n\"ad\",\n\"nom.ad\",\n\"ae\",\n\"co.ae\",\n\"net.ae\",\n\"org.ae\",\n\"sch.ae\",\n\"ac.ae\",\n\"gov.ae\",\n\"mil.ae\",\n\"aero\",\n\"accident-investigation.aero\",\n\"accident-prevention.aero\",\n\"aerobatic.aero\",\n\"aeroclub.aero\",\n\"aerodrome.aero\",\n\"agents.aero\",\n\"aircraft.aero\",\n\"airline.aero\",\n\"airport.aero\",\n\"air-surveillance.aero\",\n\"airtraffic.aero\",\n\"air-traffic-control.aero\",\n\"ambulance.aero\",\n\"amusement.aero\",\n\"association.aero\",\n\"author.aero\",\n\"ballooning.aero\",\n\"broker.aero\",\n\"caa.aero\",\n\"cargo.aero\",\n\"catering.aero\",\n\"certification.aero\",\n\"championship.aero\",\n\"charter.aero\",\n\"civilaviation.aero\",\n\"club.aero\",\n\"conference.aero\",\n\"consultant.aero\",\n\"consulting.aero\",\n\"control.aero\",\n\"council.aero\",\n\"crew.aero\",\n\"design.aero\",\n\"dgca.aero\",\n\"educator.aero\",\n\"emergency.aero\",\n\"engine.aero\",\n\"engineer.aero\",\n\"entertainment.aero\",\n\"equipment.aero\",\n\"exchange.aero\",\n\"express.aero\",\n\"federation.aero\",\n\"flight.aero\",\n\"fuel.aero\",\n\"gliding.aero\",\n\"government.aero\",\n\"groundhandling.aero\",\n\"group.aero\",\n\"hanggliding.aero\",\n\"homebuilt.aero\",\n\"insurance.aero\",\n\"journal.aero\",\n\"journalist.aero\",\n\"leasing.aero\",\n\"logistics.aero\",\n\"magazine.aero\",\n\"maintenance.aero\",\n\"media.aero\",\n\"microlight.aero\",\n\"modelling.aero\",\n\"navigation.aero\",\n\"parachuting.aero\",\n\"paragliding.aero\",\n\"passenger-association.aero\",\n\"pilot.aero\",\n\"press.aero\",\n\"production.aero\",\n\"recreation.aero\",\n\"repbody.aero\",\n\"res.aero\",\n\"research.aero\",\n\"rotorcraft.aero\",\n\"safety.aero\",\n\"scientist.aero\",\n\"services.aero\",\n\"show.aero\",\n\"skydiving.aero\",\n\"software.aero\",\n\"student.aero\",\n\"trader.aero\",\n\"trading.aero\",\n\"trainer.aero\",\n\"union.aero\",\n\"workinggroup.aero\",\n\"works.aero\",\n\"af\",\n\"gov.af\",\n\"com.af\",\n\"org.af\",\n\"net.af\",\n\"edu.af\",\n\"ag\",\n\"com.ag\",\n\"org.ag\",\n\"net.ag\",\n\"co.ag\",\n\"nom.ag\",\n\"ai\",\n\"off.ai\",\n\"com.ai\",\n\"net.ai\",\n\"org.ai\",\n\"al\",\n\"com.al\",\n\"edu.al\",\n\"gov.al\",\n\"mil.al\",\n\"net.al\",\n\"org.al\",\n\"am\",\n\"co.am\",\n\"com.am\",\n\"commune.am\",\n\"net.am\",\n\"org.am\",\n\"ao\",\n\"ed.ao\",\n\"gv.ao\",\n\"og.ao\",\n\"co.ao\",\n\"pb.ao\",\n\"it.ao\",\n\"aq\",\n\"ar\",\n\"bet.ar\",\n\"com.ar\",\n\"coop.ar\",\n\"edu.ar\",\n\"gob.ar\",\n\"gov.ar\",\n\"int.ar\",\n\"mil.ar\",\n\"musica.ar\",\n\"mutual.ar\",\n\"net.ar\",\n\"org.ar\",\n\"senasa.ar\",\n\"tur.ar\",\n\"arpa\",\n\"e164.arpa\",\n\"in-addr.arpa\",\n\"ip6.arpa\",\n\"iris.arpa\",\n\"uri.arpa\",\n\"urn.arpa\",\n\"as\",\n\"gov.as\",\n\"asia\",\n\"at\",\n\"ac.at\",\n\"co.at\",\n\"gv.at\",\n\"or.at\",\n\"sth.ac.at\",\n\"au\",\n\"com.au\",\n\"net.au\",\n\"org.au\",\n\"edu.au\",\n\"gov.au\",\n\"asn.au\",\n\"id.au\",\n\"info.au\",\n\"conf.au\",\n\"oz.au\",\n\"act.au\",\n\"nsw.au\",\n\"nt.au\",\n\"qld.au\",\n\"sa.au\",\n\"tas.au\",\n\"vic.au\",\n\"wa.au\",\n\"act.edu.au\",\n\"catholic.edu.au\",\n\"nsw.edu.au\",\n\"nt.edu.au\",\n\"qld.edu.au\",\n\"sa.edu.au\",\n\"tas.edu.au\",\n\"vic.edu.au\",\n\"wa.edu.au\",\n\"qld.gov.au\",\n\"sa.gov.au\",\n\"tas.gov.au\",\n\"vic.gov.au\",\n\"wa.gov.au\",\n\"schools.nsw.edu.au\",\n\"aw\",\n\"com.aw\",\n\"ax\",\n\"az\",\n\"com.az\",\n\"net.az\",\n\"int.az\",\n\"gov.az\",\n\"org.az\",\n\"edu.az\",\n\"info.az\",\n\"pp.az\",\n\"mil.az\",\n\"name.az\",\n\"pro.az\",\n\"biz.az\",\n\"ba\",\n\"com.ba\",\n\"edu.ba\",\n\"gov.ba\",\n\"mil.ba\",\n\"net.ba\",\n\"org.ba\",\n\"bb\",\n\"biz.bb\",\n\"co.bb\",\n\"com.bb\",\n\"edu.bb\",\n\"gov.bb\",\n\"info.bb\",\n\"net.bb\",\n\"org.bb\",\n\"store.bb\",\n\"tv.bb\",\n\"*.bd\",\n\"be\",\n\"ac.be\",\n\"bf\",\n\"gov.bf\",\n\"bg\",\n\"a.bg\",\n\"b.bg\",\n\"c.bg\",\n\"d.bg\",\n\"e.bg\",\n\"f.bg\",\n\"g.bg\",\n\"h.bg\",\n\"i.bg\",\n\"j.bg\",\n\"k.bg\",\n\"l.bg\",\n\"m.bg\",\n\"n.bg\",\n\"o.bg\",\n\"p.bg\",\n\"q.bg\",\n\"r.bg\",\n\"s.bg\",\n\"t.bg\",\n\"u.bg\",\n\"v.bg\",\n\"w.bg\",\n\"x.bg\",\n\"y.bg\",\n\"z.bg\",\n\"0.bg\",\n\"1.bg\",\n\"2.bg\",\n\"3.bg\",\n\"4.bg\",\n\"5.bg\",\n\"6.bg\",\n\"7.bg\",\n\"8.bg\",\n\"9.bg\",\n\"bh\",\n\"com.bh\",\n\"edu.bh\",\n\"net.bh\",\n\"org.bh\",\n\"gov.bh\",\n\"bi\",\n\"co.bi\",\n\"com.bi\",\n\"edu.bi\",\n\"or.bi\",\n\"org.bi\",\n\"biz\",\n\"bj\",\n\"asso.bj\",\n\"barreau.bj\",\n\"gouv.bj\",\n\"bm\",\n\"com.bm\",\n\"edu.bm\",\n\"gov.bm\",\n\"net.bm\",\n\"org.bm\",\n\"bn\",\n\"com.bn\",\n\"edu.bn\",\n\"gov.bn\",\n\"net.bn\",\n\"org.bn\",\n\"bo\",\n\"com.bo\",\n\"edu.bo\",\n\"gob.bo\",\n\"int.bo\",\n\"org.bo\",\n\"net.bo\",\n\"mil.bo\",\n\"tv.bo\",\n\"web.bo\",\n\"academia.bo\",\n\"agro.bo\",\n\"arte.bo\",\n\"blog.bo\",\n\"bolivia.bo\",\n\"ciencia.bo\",\n\"cooperativa.bo\",\n\"democracia.bo\",\n\"deporte.bo\",\n\"ecologia.bo\",\n\"economia.bo\",\n\"empresa.bo\",\n\"indigena.bo\",\n\"industria.bo\",\n\"info.bo\",\n\"medicina.bo\",\n\"movimiento.bo\",\n\"musica.bo\",\n\"natural.bo\",\n\"nombre.bo\",\n\"noticias.bo\",\n\"patria.bo\",\n\"politica.bo\",\n\"profesional.bo\",\n\"plurinacional.bo\",\n\"pueblo.bo\",\n\"revista.bo\",\n\"salud.bo\",\n\"tecnologia.bo\",\n\"tksat.bo\",\n\"transporte.bo\",\n\"wiki.bo\",\n\"br\",\n\"9guacu.br\",\n\"abc.br\",\n\"adm.br\",\n\"adv.br\",\n\"agr.br\",\n\"aju.br\",\n\"am.br\",\n\"anani.br\",\n\"aparecida.br\",\n\"app.br\",\n\"arq.br\",\n\"art.br\",\n\"ato.br\",\n\"b.br\",\n\"barueri.br\",\n\"belem.br\",\n\"bhz.br\",\n\"bib.br\",\n\"bio.br\",\n\"blog.br\",\n\"bmd.br\",\n\"boavista.br\",\n\"bsb.br\",\n\"campinagrande.br\",\n\"campinas.br\",\n\"caxias.br\",\n\"cim.br\",\n\"cng.br\",\n\"cnt.br\",\n\"com.br\",\n\"contagem.br\",\n\"coop.br\",\n\"coz.br\",\n\"cri.br\",\n\"cuiaba.br\",\n\"curitiba.br\",\n\"def.br\",\n\"des.br\",\n\"det.br\",\n\"dev.br\",\n\"ecn.br\",\n\"eco.br\",\n\"edu.br\",\n\"emp.br\",\n\"enf.br\",\n\"eng.br\",\n\"esp.br\",\n\"etc.br\",\n\"eti.br\",\n\"far.br\",\n\"feira.br\",\n\"flog.br\",\n\"floripa.br\",\n\"fm.br\",\n\"fnd.br\",\n\"fortal.br\",\n\"fot.br\",\n\"foz.br\",\n\"fst.br\",\n\"g12.br\",\n\"geo.br\",\n\"ggf.br\",\n\"goiania.br\",\n\"gov.br\",\n\"ac.gov.br\",\n\"al.gov.br\",\n\"am.gov.br\",\n\"ap.gov.br\",\n\"ba.gov.br\",\n\"ce.gov.br\",\n\"df.gov.br\",\n\"es.gov.br\",\n\"go.gov.br\",\n\"ma.gov.br\",\n\"mg.gov.br\",\n\"ms.gov.br\",\n\"mt.gov.br\",\n\"pa.gov.br\",\n\"pb.gov.br\",\n\"pe.gov.br\",\n\"pi.gov.br\",\n\"pr.gov.br\",\n\"rj.gov.br\",\n\"rn.gov.br\",\n\"ro.gov.br\",\n\"rr.gov.br\",\n\"rs.gov.br\",\n\"sc.gov.br\",\n\"se.gov.br\",\n\"sp.gov.br\",\n\"to.gov.br\",\n\"gru.br\",\n\"imb.br\",\n\"ind.br\",\n\"inf.br\",\n\"jab.br\",\n\"jampa.br\",\n\"jdf.br\",\n\"joinville.br\",\n\"jor.br\",\n\"jus.br\",\n\"leg.br\",\n\"lel.br\",\n\"log.br\",\n\"londrina.br\",\n\"macapa.br\",\n\"maceio.br\",\n\"manaus.br\",\n\"maringa.br\",\n\"mat.br\",\n\"med.br\",\n\"mil.br\",\n\"morena.br\",\n\"mp.br\",\n\"mus.br\",\n\"natal.br\",\n\"net.br\",\n\"niteroi.br\",\n\"*.nom.br\",\n\"not.br\",\n\"ntr.br\",\n\"odo.br\",\n\"ong.br\",\n\"org.br\",\n\"osasco.br\",\n\"palmas.br\",\n\"poa.br\",\n\"ppg.br\",\n\"pro.br\",\n\"psc.br\",\n\"psi.br\",\n\"pvh.br\",\n\"qsl.br\",\n\"radio.br\",\n\"rec.br\",\n\"recife.br\",\n\"rep.br\",\n\"ribeirao.br\",\n\"rio.br\",\n\"riobranco.br\",\n\"riopreto.br\",\n\"salvador.br\",\n\"sampa.br\",\n\"santamaria.br\",\n\"santoandre.br\",\n\"saobernardo.br\",\n\"saogonca.br\",\n\"seg.br\",\n\"sjc.br\",\n\"slg.br\",\n\"slz.br\",\n\"sorocaba.br\",\n\"srv.br\",\n\"taxi.br\",\n\"tc.br\",\n\"tec.br\",\n\"teo.br\",\n\"the.br\",\n\"tmp.br\",\n\"trd.br\",\n\"tur.br\",\n\"tv.br\",\n\"udi.br\",\n\"vet.br\",\n\"vix.br\",\n\"vlog.br\",\n\"wiki.br\",\n\"zlg.br\",\n\"bs\",\n\"com.bs\",\n\"net.bs\",\n\"org.bs\",\n\"edu.bs\",\n\"gov.bs\",\n\"bt\",\n\"com.bt\",\n\"edu.bt\",\n\"gov.bt\",\n\"net.bt\",\n\"org.bt\",\n\"bv\",\n\"bw\",\n\"co.bw\",\n\"org.bw\",\n\"by\",\n\"gov.by\",\n\"mil.by\",\n\"com.by\",\n\"of.by\",\n\"bz\",\n\"com.bz\",\n\"net.bz\",\n\"org.bz\",\n\"edu.bz\",\n\"gov.bz\",\n\"ca\",\n\"ab.ca\",\n\"bc.ca\",\n\"mb.ca\",\n\"nb.ca\",\n\"nf.ca\",\n\"nl.ca\",\n\"ns.ca\",\n\"nt.ca\",\n\"nu.ca\",\n\"on.ca\",\n\"pe.ca\",\n\"qc.ca\",\n\"sk.ca\",\n\"yk.ca\",\n\"gc.ca\",\n\"cat\",\n\"cc\",\n\"cd\",\n\"gov.cd\",\n\"cf\",\n\"cg\",\n\"ch\",\n\"ci\",\n\"org.ci\",\n\"or.ci\",\n\"com.ci\",\n\"co.ci\",\n\"edu.ci\",\n\"ed.ci\",\n\"ac.ci\",\n\"net.ci\",\n\"go.ci\",\n\"asso.ci\",\n\"a\u00E9roport.ci\",\n\"int.ci\",\n\"presse.ci\",\n\"md.ci\",\n\"gouv.ci\",\n\"*.ck\",\n\"!www.ck\",\n\"cl\",\n\"co.cl\",\n\"gob.cl\",\n\"gov.cl\",\n\"mil.cl\",\n\"cm\",\n\"co.cm\",\n\"com.cm\",\n\"gov.cm\",\n\"net.cm\",\n\"cn\",\n\"ac.cn\",\n\"com.cn\",\n\"edu.cn\",\n\"gov.cn\",\n\"net.cn\",\n\"org.cn\",\n\"mil.cn\",\n\"\u516C\u53F8.cn\",\n\"\u7F51\u7EDC.cn\",\n\"\u7DB2\u7D61.cn\",\n\"ah.cn\",\n\"bj.cn\",\n\"cq.cn\",\n\"fj.cn\",\n\"gd.cn\",\n\"gs.cn\",\n\"gz.cn\",\n\"gx.cn\",\n\"ha.cn\",\n\"hb.cn\",\n\"he.cn\",\n\"hi.cn\",\n\"hl.cn\",\n\"hn.cn\",\n\"jl.cn\",\n\"js.cn\",\n\"jx.cn\",\n\"ln.cn\",\n\"nm.cn\",\n\"nx.cn\",\n\"qh.cn\",\n\"sc.cn\",\n\"sd.cn\",\n\"sh.cn\",\n\"sn.cn\",\n\"sx.cn\",\n\"tj.cn\",\n\"xj.cn\",\n\"xz.cn\",\n\"yn.cn\",\n\"zj.cn\",\n\"hk.cn\",\n\"mo.cn\",\n\"tw.cn\",\n\"co\",\n\"arts.co\",\n\"com.co\",\n\"edu.co\",\n\"firm.co\",\n\"gov.co\",\n\"info.co\",\n\"int.co\",\n\"mil.co\",\n\"net.co\",\n\"nom.co\",\n\"org.co\",\n\"rec.co\",\n\"web.co\",\n\"com\",\n\"coop\",\n\"cr\",\n\"ac.cr\",\n\"co.cr\",\n\"ed.cr\",\n\"fi.cr\",\n\"go.cr\",\n\"or.cr\",\n\"sa.cr\",\n\"cu\",\n\"com.cu\",\n\"edu.cu\",\n\"org.cu\",\n\"net.cu\",\n\"gov.cu\",\n\"inf.cu\",\n\"cv\",\n\"com.cv\",\n\"edu.cv\",\n\"int.cv\",\n\"nome.cv\",\n\"org.cv\",\n\"cw\",\n\"com.cw\",\n\"edu.cw\",\n\"net.cw\",\n\"org.cw\",\n\"cx\",\n\"gov.cx\",\n\"cy\",\n\"ac.cy\",\n\"biz.cy\",\n\"com.cy\",\n\"ekloges.cy\",\n\"gov.cy\",\n\"ltd.cy\",\n\"mil.cy\",\n\"net.cy\",\n\"org.cy\",\n\"press.cy\",\n\"pro.cy\",\n\"tm.cy\",\n\"cz\",\n\"de\",\n\"dj\",\n\"dk\",\n\"dm\",\n\"com.dm\",\n\"net.dm\",\n\"org.dm\",\n\"edu.dm\",\n\"gov.dm\",\n\"do\",\n\"art.do\",\n\"com.do\",\n\"edu.do\",\n\"gob.do\",\n\"gov.do\",\n\"mil.do\",\n\"net.do\",\n\"org.do\",\n\"sld.do\",\n\"web.do\",\n\"dz\",\n\"art.dz\",\n\"asso.dz\",\n\"com.dz\",\n\"edu.dz\",\n\"gov.dz\",\n\"org.dz\",\n\"net.dz\",\n\"pol.dz\",\n\"soc.dz\",\n\"tm.dz\",\n\"ec\",\n\"com.ec\",\n\"info.ec\",\n\"net.ec\",\n\"fin.ec\",\n\"k12.ec\",\n\"med.ec\",\n\"pro.ec\",\n\"org.ec\",\n\"edu.ec\",\n\"gov.ec\",\n\"gob.ec\",\n\"mil.ec\",\n\"edu\",\n\"ee\",\n\"edu.ee\",\n\"gov.ee\",\n\"riik.ee\",\n\"lib.ee\",\n\"med.ee\",\n\"com.ee\",\n\"pri.ee\",\n\"aip.ee\",\n\"org.ee\",\n\"fie.ee\",\n\"eg\",\n\"com.eg\",\n\"edu.eg\",\n\"eun.eg\",\n\"gov.eg\",\n\"mil.eg\",\n\"name.eg\",\n\"net.eg\",\n\"org.eg\",\n\"sci.eg\",\n\"*.er\",\n\"es\",\n\"com.es\",\n\"nom.es\",\n\"org.es\",\n\"gob.es\",\n\"edu.es\",\n\"et\",\n\"com.et\",\n\"gov.et\",\n\"org.et\",\n\"edu.et\",\n\"biz.et\",\n\"name.et\",\n\"info.et\",\n\"net.et\",\n\"eu\",\n\"fi\",\n\"aland.fi\",\n\"fj\",\n\"ac.fj\",\n\"biz.fj\",\n\"com.fj\",\n\"gov.fj\",\n\"info.fj\",\n\"mil.fj\",\n\"name.fj\",\n\"net.fj\",\n\"org.fj\",\n\"pro.fj\",\n\"*.fk\",\n\"com.fm\",\n\"edu.fm\",\n\"net.fm\",\n\"org.fm\",\n\"fm\",\n\"fo\",\n\"fr\",\n\"asso.fr\",\n\"com.fr\",\n\"gouv.fr\",\n\"nom.fr\",\n\"prd.fr\",\n\"tm.fr\",\n\"aeroport.fr\",\n\"avocat.fr\",\n\"avoues.fr\",\n\"cci.fr\",\n\"chambagri.fr\",\n\"chirurgiens-dentistes.fr\",\n\"experts-comptables.fr\",\n\"geometre-expert.fr\",\n\"greta.fr\",\n\"huissier-justice.fr\",\n\"medecin.fr\",\n\"notaires.fr\",\n\"pharmacien.fr\",\n\"port.fr\",\n\"veterinaire.fr\",\n\"ga\",\n\"gb\",\n\"edu.gd\",\n\"gov.gd\",\n\"gd\",\n\"ge\",\n\"com.ge\",\n\"edu.ge\",\n\"gov.ge\",\n\"org.ge\",\n\"mil.ge\",\n\"net.ge\",\n\"pvt.ge\",\n\"gf\",\n\"gg\",\n\"co.gg\",\n\"net.gg\",\n\"org.gg\",\n\"gh\",\n\"com.gh\",\n\"edu.gh\",\n\"gov.gh\",\n\"org.gh\",\n\"mil.gh\",\n\"gi\",\n\"com.gi\",\n\"ltd.gi\",\n\"gov.gi\",\n\"mod.gi\",\n\"edu.gi\",\n\"org.gi\",\n\"gl\",\n\"co.gl\",\n\"com.gl\",\n\"edu.gl\",\n\"net.gl\",\n\"org.gl\",\n\"gm\",\n\"gn\",\n\"ac.gn\",\n\"com.gn\",\n\"edu.gn\",\n\"gov.gn\",\n\"org.gn\",\n\"net.gn\",\n\"gov\",\n\"gp\",\n\"com.gp\",\n\"net.gp\",\n\"mobi.gp\",\n\"edu.gp\",\n\"org.gp\",\n\"asso.gp\",\n\"gq\",\n\"gr\",\n\"com.gr\",\n\"edu.gr\",\n\"net.gr\",\n\"org.gr\",\n\"gov.gr\",\n\"gs\",\n\"gt\",\n\"com.gt\",\n\"edu.gt\",\n\"gob.gt\",\n\"ind.gt\",\n\"mil.gt\",\n\"net.gt\",\n\"org.gt\",\n\"gu\",\n\"com.gu\",\n\"edu.gu\",\n\"gov.gu\",\n\"guam.gu\",\n\"info.gu\",\n\"net.gu\",\n\"org.gu\",\n\"web.gu\",\n\"gw\",\n\"gy\",\n\"co.gy\",\n\"com.gy\",\n\"edu.gy\",\n\"gov.gy\",\n\"net.gy\",\n\"org.gy\",\n\"hk\",\n\"com.hk\",\n\"edu.hk\",\n\"gov.hk\",\n\"idv.hk\",\n\"net.hk\",\n\"org.hk\",\n\"\u516C\u53F8.hk\",\n\"\u6559\u80B2.hk\",\n\"\u654E\u80B2.hk\",\n\"\u653F\u5E9C.hk\",\n\"\u500B\u4EBA.hk\",\n\"\u4E2A\uFFFD\uFFFD.hk\",\n\"\u7B87\u4EBA.hk\",\n\"\u7DB2\u7EDC.hk\",\n\"\u7F51\u7EDC.hk\",\n\"\u7EC4\u7E54.hk\",\n\"\u7DB2\u7D61.hk\",\n\"\u7F51\u7D61.hk\",\n\"\u7EC4\u7EC7.hk\",\n\"\u7D44\u7E54.hk\",\n\"\u7D44\u7EC7.hk\",\n\"hm\",\n\"hn\",\n\"com.hn\",\n\"edu.hn\",\n\"org.hn\",\n\"net.hn\",\n\"mil.hn\",\n\"gob.hn\",\n\"hr\",\n\"iz.hr\",\n\"from.hr\",\n\"name.hr\",\n\"com.hr\",\n\"ht\",\n\"com.ht\",\n\"shop.ht\",\n\"firm.ht\",\n\"info.ht\",\n\"adult.ht\",\n\"net.ht\",\n\"pro.ht\",\n\"org.ht\",\n\"med.ht\",\n\"art.ht\",\n\"coop.ht\",\n\"pol.ht\",\n\"asso.ht\",\n\"edu.ht\",\n\"rel.ht\",\n\"gouv.ht\",\n\"perso.ht\",\n\"hu\",\n\"co.hu\",\n\"info.hu\",\n\"org.hu\",\n\"priv.hu\",\n\"sport.hu\",\n\"tm.hu\",\n\"2000.hu\",\n\"agrar.hu\",\n\"bolt.hu\",\n\"casino.hu\",\n\"city.hu\",\n\"erotica.hu\",\n\"erotika.hu\",\n\"film.hu\",\n\"forum.hu\",\n\"games.hu\",\n\"hotel.hu\",\n\"ingatlan.hu\",\n\"jogasz.hu\",\n\"konyvelo.hu\",\n\"lakas.hu\",\n\"media.hu\",\n\"news.hu\",\n\"reklam.hu\",\n\"sex.hu\",\n\"shop.hu\",\n\"suli.hu\",\n\"szex.hu\",\n\"tozsde.hu\",\n\"utazas.hu\",\n\"video.hu\",\n\"id\",\n\"ac.id\",\n\"biz.id\",\n\"co.id\",\n\"desa.id\",\n\"go.id\",\n\"mil.id\",\n\"my.id\",\n\"net.id\",\n\"or.id\",\n\"ponpes.id\",\n\"sch.id\",\n\"web.id\",\n\"ie\",\n\"gov.ie\",\n\"il\",\n\"ac.il\",\n\"co.il\",\n\"gov.il\",\n\"idf.il\",\n\"k12.il\",\n\"muni.il\",\n\"net.il\",\n\"org.il\",\n\"im\",\n\"ac.im\",\n\"co.im\",\n\"com.im\",\n\"ltd.co.im\",\n\"net.im\",\n\"org.im\",\n\"plc.co.im\",\n\"tt.im\",\n\"tv.im\",\n\"in\",\n\"co.in\",\n\"firm.in\",\n\"net.in\",\n\"org.in\",\n\"gen.in\",\n\"ind.in\",\n\"nic.in\",\n\"ac.in\",\n\"edu.in\",\n\"res.in\",\n\"gov.in\",\n\"mil.in\",\n\"info\",\n\"int\",\n\"eu.int\",\n\"io\",\n\"com.io\",\n\"iq\",\n\"gov.iq\",\n\"edu.iq\",\n\"mil.iq\",\n\"com.iq\",\n\"org.iq\",\n\"net.iq\",\n\"ir\",\n\"ac.ir\",\n\"co.ir\",\n\"gov.ir\",\n\"id.ir\",\n\"net.ir\",\n\"org.ir\",\n\"sch.ir\",\n\"\u0627\u06CC\u0631\u0627\u0646.ir\",\n\"\u0627\u064A\u0631\u0627\u0646.ir\",\n\"is\",\n\"net.is\",\n\"com.is\",\n\"edu.is\",\n\"gov.is\",\n\"org.is\",\n\"int.is\",\n\"it\",\n\"gov.it\",\n\"edu.it\",\n\"abr.it\",\n\"abruzzo.it\",\n\"aosta-valley.it\",\n\"aostavalley.it\",\n\"bas.it\",\n\"basilicata.it\",\n\"cal.it\",\n\"calabria.it\",\n\"cam.it\",\n\"campania.it\",\n\"emilia-romagna.it\",\n\"emiliaromagna.it\",\n\"emr.it\",\n\"friuli-v-giulia.it\",\n\"friuli-ve-giulia.it\",\n\"friuli-vegiulia.it\",\n\"friuli-venezia-giulia.it\",\n\"friuli-veneziagiulia.it\",\n\"friuli-vgiulia.it\",\n\"friuliv-giulia.it\",\n\"friulive-giulia.it\",\n\"friulivegiulia.it\",\n\"friulivenezia-giulia.it\",\n\"friuliveneziagiulia.it\",\n\"friulivgiulia.it\",\n\"fvg.it\",\n\"laz.it\",\n\"lazio.it\",\n\"lig.it\",\n\"liguria.it\",\n\"lom.it\",\n\"lombardia.it\",\n\"lombardy.it\",\n\"lucania.it\",\n\"mar.it\",\n\"marche.it\",\n\"mol.it\",\n\"molise.it\",\n\"piedmont.it\",\n\"piemonte.it\",\n\"pmn.it\",\n\"pug.it\",\n\"puglia.it\",\n\"sar.it\",\n\"sardegna.it\",\n\"sardinia.it\",\n\"sic.it\",\n\"sicilia.it\",\n\"sicily.it\",\n\"taa.it\",\n\"tos.it\",\n\"toscana.it\",\n\"trentin-sud-tirol.it\",\n\"trentin-s\u00FCd-tirol.it\",\n\"trentin-sudtirol.it\",\n\"trentin-s\u00FCdtirol.it\",\n\"trentin-sued-tirol.it\",\n\"trentin-suedtirol.it\",\n\"trentino-a-adige.it\",\n\"trentino-aadige.it\",\n\"trentino-alto-adige.it\",\n\"trentino-altoadige.it\",\n\"trentino-s-tirol.it\",\n\"trentino-stirol.it\",\n\"trentino-sud-tirol.it\",\n\"trentino-s\u00FCd-tirol.it\",\n\"trentino-sudtirol.it\",\n\"trentino-s\u00FCdtirol.it\",\n\"trentino-sued-tirol.it\",\n\"trentino-suedtirol.it\",\n\"trentino.it\",\n\"trentinoa-adige.it\",\n\"trentinoaadige.it\",\n\"trentinoalto-adige.it\",\n\"trentinoaltoadige.it\",\n\"trentinos-tirol.it\",\n\"trentinostirol.it\",\n\"trentinosud-tirol.it\",\n\"trentinos\u00FCd-tirol.it\",\n\"trentinosudtirol.it\",\n\"trentinos\u00FCdtirol.it\",\n\"trentinosued-tirol.it\",\n\"trentinosuedtirol.it\",\n\"trentinsud-tirol.it\",\n\"trentins\u00FCd-tirol.it\",\n\"trentinsudtirol.it\",\n\"trentins\u00FCdtirol.it\",\n\"trentinsued-tirol.it\",\n\"trentinsuedtirol.it\",\n\"tuscany.it\",\n\"umb.it\",\n\"umbria.it\",\n\"val-d-aosta.it\",\n\"val-daosta.it\",\n\"vald-aosta.it\",\n\"valdaosta.it\",\n\"valle-aosta.it\",\n\"valle-d-aosta.it\",\n\"valle-daosta.it\",\n\"valleaosta.it\",\n\"valled-aosta.it\",\n\"valledaosta.it\",\n\"vallee-aoste.it\",\n\"vall\u00E9e-aoste.it\",\n\"vallee-d-aoste.it\",\n\"vall\u00E9e-d-aoste.it\",\n\"valleeaoste.it\",\n\"vall\u00E9eaoste.it\",\n\"valleedaoste.it\",\n\"vall\u00E9edaoste.it\",\n\"vao.it\",\n\"vda.it\",\n\"ven.it\",\n\"veneto.it\",\n\"ag.it\",\n\"agrigento.it\",\n\"al.it\",\n\"alessandria.it\",\n\"alto-adige.it\",\n\"altoadige.it\",\n\"an.it\",\n\"ancona.it\",\n\"andria-barletta-trani.it\",\n\"andria-trani-barletta.it\",\n\"andriabarlettatrani.it\",\n\"andriatranibarletta.it\",\n\"ao.it\",\n\"aosta.it\",\n\"aoste.it\",\n\"ap.it\",\n\"aq.it\",\n\"aquila.it\",\n\"ar.it\",\n\"arezzo.it\",\n\"ascoli-piceno.it\",\n\"ascolipiceno.it\",\n\"asti.it\",\n\"at.it\",\n\"av.it\",\n\"avellino.it\",\n\"ba.it\",\n\"balsan-sudtirol.it\",\n\"balsan-s\u00FCdtirol.it\",\n\"balsan-suedtirol.it\",\n\"balsan.it\",\n\"bari.it\",\n\"barletta-trani-andria.it\",\n\"barlettatraniandria.it\",\n\"belluno.it\",\n\"benevento.it\",\n\"bergamo.it\",\n\"bg.it\",\n\"bi.it\",\n\"biella.it\",\n\"bl.it\",\n\"bn.it\",\n\"bo.it\",\n\"bologna.it\",\n\"bolzano-altoadige.it\",\n\"bolzano.it\",\n\"bozen-sudtirol.it\",\n\"bozen-s\u00FCdtirol.it\",\n\"bozen-suedtirol.it\",\n\"bozen.it\",\n\"br.it\",\n\"brescia.it\",\n\"brindisi.it\",\n\"bs.it\",\n\"bt.it\",\n\"bulsan-sudtirol.it\",\n\"bulsan-s\u00FCdtirol.it\",\n\"bulsan-suedtirol.it\",\n\"bulsan.it\",\n\"bz.it\",\n\"ca.it\",\n\"cagliari.it\",\n\"caltanissetta.it\",\n\"campidano-medio.it\",\n\"campidanomedio.it\",\n\"campobasso.it\",\n\"carbonia-iglesias.it\",\n\"carboniaiglesias.it\",\n\"carrara-massa.it\",\n\"carraramassa.it\",\n\"caserta.it\",\n\"catania.it\",\n\"catanzaro.it\",\n\"cb.it\",\n\"ce.it\",\n\"cesena-forli.it\",\n\"cesena-forl\u00EC.it\",\n\"cesenaforli.it\",\n\"cesenaforl\u00EC.it\",\n\"ch.it\",\n\"chieti.it\",\n\"ci.it\",\n\"cl.it\",\n\"cn.it\",\n\"co.it\",\n\"como.it\",\n\"cosenza.it\",\n\"cr.it\",\n\"cremona.it\",\n\"crotone.it\",\n\"cs.it\",\n\"ct.it\",\n\"cuneo.it\",\n\"cz.it\",\n\"dell-ogliastra.it\",\n\"dellogliastra.it\",\n\"en.it\",\n\"enna.it\",\n\"fc.it\",\n\"fe.it\",\n\"fermo.it\",\n\"ferrara.it\",\n\"fg.it\",\n\"fi.it\",\n\"firenze.it\",\n\"florence.it\",\n\"fm.it\",\n\"foggia.it\",\n\"forli-cesena.it\",\n\"forl\u00EC-cesena.it\",\n\"forlicesena.it\",\n\"forl\u00ECcesena.it\",\n\"fr.it\",\n\"frosinone.it\",\n\"ge.it\",\n\"genoa.it\",\n\"genova.it\",\n\"go.it\",\n\"gorizia.it\",\n\"gr.it\",\n\"grosseto.it\",\n\"iglesias-carbonia.it\",\n\"iglesiascarbonia.it\",\n\"im.it\",\n\"imperia.it\",\n\"is.it\",\n\"isernia.it\",\n\"kr.it\",\n\"la-spezia.it\",\n\"laquila.it\",\n\"laspezia.it\",\n\"latina.it\",\n\"lc.it\",\n\"le.it\",\n\"lecce.it\",\n\"lecco.it\",\n\"li.it\",\n\"livorno.it\",\n\"lo.it\",\n\"lodi.it\",\n\"lt.it\",\n\"lu.it\",\n\"lucca.it\",\n\"macerata.it\",\n\"mantova.it\",\n\"massa-carrara.it\",\n\"massacarrara.it\",\n\"matera.it\",\n\"mb.it\",\n\"mc.it\",\n\"me.it\",\n\"medio-campidano.it\",\n\"mediocampidano.it\",\n\"messina.it\",\n\"mi.it\",\n\"milan.it\",\n\"milano.it\",\n\"mn.it\",\n\"mo.it\",\n\"modena.it\",\n\"monza-brianza.it\",\n\"monza-e-della-brianza.it\",\n\"monza.it\",\n\"monzabrianza.it\",\n\"monzaebrianza.it\",\n\"monzaedellabrianza.it\",\n\"ms.it\",\n\"mt.it\",\n\"na.it\",\n\"naples.it\",\n\"napoli.it\",\n\"no.it\",\n\"novara.it\",\n\"nu.it\",\n\"nuoro.it\",\n\"og.it\",\n\"ogliastra.it\",\n\"olbia-tempio.it\",\n\"olbiatempio.it\",\n\"or.it\",\n\"oristano.it\",\n\"ot.it\",\n\"pa.it\",\n\"padova.it\",\n\"padua.it\",\n\"palermo.it\",\n\"parma.it\",\n\"pavia.it\",\n\"pc.it\",\n\"pd.it\",\n\"pe.it\",\n\"perugia.it\",\n\"pesaro-urbino.it\",\n\"pesarourbino.it\",\n\"pescara.it\",\n\"pg.it\",\n\"pi.it\",\n\"piacenza.it\",\n\"pisa.it\",\n\"pistoia.it\",\n\"pn.it\",\n\"po.it\",\n\"pordenone.it\",\n\"potenza.it\",\n\"pr.it\",\n\"prato.it\",\n\"pt.it\",\n\"pu.it\",\n\"pv.it\",\n\"pz.it\",\n\"ra.it\",\n\"ragusa.it\",\n\"ravenna.it\",\n\"rc.it\",\n\"re.it\",\n\"reggio-calabria.it\",\n\"reggio-emilia.it\",\n\"reggiocalabria.it\",\n\"reggioemilia.it\",\n\"rg.it\",\n\"ri.it\",\n\"rieti.it\",\n\"rimini.it\",\n\"rm.it\",\n\"rn.it\",\n\"ro.it\",\n\"roma.it\",\n\"rome.it\",\n\"rovigo.it\",\n\"sa.it\",\n\"salerno.it\",\n\"sassari.it\",\n\"savona.it\",\n\"si.it\",\n\"siena.it\",\n\"siracusa.it\",\n\"so.it\",\n\"sondrio.it\",\n\"sp.it\",\n\"sr.it\",\n\"ss.it\",\n\"suedtirol.it\",\n\"s\u00FCdtirol.it\",\n\"sv.it\",\n\"ta.it\",\n\"taranto.it\",\n\"te.it\",\n\"tempio-olbia.it\",\n\"tempioolbia.it\",\n\"teramo.it\",\n\"terni.it\",\n\"tn.it\",\n\"to.it\",\n\"torino.it\",\n\"tp.it\",\n\"tr.it\",\n\"trani-andria-barletta.it\",\n\"trani-barletta-andria.it\",\n\"traniandriabarletta.it\",\n\"tranibarlettaandria.it\",\n\"trapani.it\",\n\"trento.it\",\n\"treviso.it\",\n\"trieste.it\",\n\"ts.it\",\n\"turin.it\",\n\"tv.it\",\n\"ud.it\",\n\"udine.it\",\n\"urbino-pesaro.it\",\n\"urbinopesaro.it\",\n\"va.it\",\n\"varese.it\",\n\"vb.it\",\n\"vc.it\",\n\"ve.it\",\n\"venezia.it\",\n\"venice.it\",\n\"verbania.it\",\n\"vercelli.it\",\n\"verona.it\",\n\"vi.it\",\n\"vibo-valentia.it\",\n\"vibovalentia.it\",\n\"vicenza.it\",\n\"viterbo.it\",\n\"vr.it\",\n\"vs.it\",\n\"vt.it\",\n\"vv.it\",\n\"je\",\n\"co.je\",\n\"net.je\",\n\"org.je\",\n\"*.jm\",\n\"jo\",\n\"com.jo\",\n\"org.jo\",\n\"net.jo\",\n\"edu.jo\",\n\"sch.jo\",\n\"gov.jo\",\n\"mil.jo\",\n\"name.jo\",\n\"jobs\",\n\"jp\",\n\"ac.jp\",\n\"ad.jp\",\n\"co.jp\",\n\"ed.jp\",\n\"go.jp\",\n\"gr.jp\",\n\"lg.jp\",\n\"ne.jp\",\n\"or.jp\",\n\"aichi.jp\",\n\"akita.jp\",\n\"aomori.jp\",\n\"chiba.jp\",\n\"ehime.jp\",\n\"fukui.jp\",\n\"fukuoka.jp\",\n\"fukushima.jp\",\n\"gifu.jp\",\n\"gunma.jp\",\n\"hiroshima.jp\",\n\"hokkaido.jp\",\n\"hyogo.jp\",\n\"ibaraki.jp\",\n\"ishikawa.jp\",\n\"iwate.jp\",\n\"kagawa.jp\",\n\"kagoshima.jp\",\n\"kanagawa.jp\",\n\"kochi.jp\",\n\"kumamoto.jp\",\n\"kyoto.jp\",\n\"mie.jp\",\n\"miyagi.jp\",\n\"miyazaki.jp\",\n\"nagano.jp\",\n\"nagasaki.jp\",\n\"nara.jp\",\n\"niigata.jp\",\n\"oita.jp\",\n\"okayama.jp\",\n\"okinawa.jp\",\n\"osaka.jp\",\n\"saga.jp\",\n\"saitama.jp\",\n\"shiga.jp\",\n\"shimane.jp\",\n\"shizuoka.jp\",\n\"tochigi.jp\",\n\"tokushima.jp\",\n\"tokyo.jp\",\n\"tottori.jp\",\n\"toyama.jp\",\n\"wakayama.jp\",\n\"yamagata.jp\",\n\"yamaguchi.jp\",\n\"yamanashi.jp\",\n\"\u6803\u6728.jp\",\n\"\u611B\u77E5.jp\",\n\"\u611B\u5A9B.jp\",\n\"\u5175\u5EAB.jp\",\n\"\u718A\u672C.jp\",\n\"\u8328\u57CE.jp\",\n\"\u5317\u6D77\u9053.jp\",\n\"\u5343\u8449.jp\",\n\"\u548C\u6B4C\u5C71.jp\",\n\"\u9577\u5D0E.jp\",\n\"\u9577\u91CE.jp\",\n\"\u65B0\u6F5F.jp\",\n\"\u9752\u68EE.jp\",\n\"\u9759\u5CA1.jp\",\n\"\u6771\u4EAC.jp\",\n\"\u77F3\u5DDD.jp\",\n\"\u57FC\u7389.jp\",\n\"\u4E09\u91CD.jp\",\n\"\u4EAC\u90FD.jp\",\n\"\u4F50\u8CC0.jp\",\n\"\u5927\u5206.jp\",\n\"\u5927\u962A.jp\",\n\"\u5948\u826F.jp\",\n\"\u5BAE\u57CE.jp\",\n\"\u5BAE\u5D0E.jp\",\n\"\u5BCC\u5C71.jp\",\n\"\u5C71\u53E3.jp\",\n\"\u5C71\u5F62.jp\",\n\"\u5C71\u68A8.jp\",\n\"\u5CA9\u624B.jp\",\n\"\u5C90\u961C.jp\",\n\"\u5CA1\u5C71.jp\",\n\"\u5CF6\u6839.jp\",\n\"\u5E83\u5CF6.jp\",\n\"\u5FB3\u5CF6.jp\",\n\"\u6C96\u7E04.jp\",\n\"\u6ECB\u8CC0.jp\",\n\"\u795E\u5948\u5DDD.jp\",\n\"\u798F\u4E95.jp\",\n\"\u798F\u5CA1.jp\",\n\"\u798F\u5CF6.jp\",\n\"\u79CB\u7530.jp\",\n\"\u7FA4\u99AC.jp\",\n\"\u9999\u5DDD.jp\",\n\"\u9AD8\u77E5.jp\",\n\"\u9CE5\u53D6.jp\",\n\"\u9E7F\u5150\u5CF6.jp\",\n\"*.kawasaki.jp\",\n\"*.kitakyushu.jp\",\n\"*.kobe.jp\",\n\"*.nagoya.jp\",\n\"*.sapporo.jp\",\n\"*.sendai.jp\",\n\"*.yokohama.jp\",\n\"!city.kawasaki.jp\",\n\"!city.kitakyushu.jp\",\n\"!city.kobe.jp\",\n\"!city.nagoya.jp\",\n\"!city.sapporo.jp\",\n\"!city.sendai.jp\",\n\"!city.yokohama.jp\",\n\"aisai.aichi.jp\",\n\"ama.aichi.jp\",\n\"anjo.aichi.jp\",\n\"asuke.aichi.jp\",\n\"chiryu.aichi.jp\",\n\"chita.aichi.jp\",\n\"fuso.aichi.jp\",\n\"gamagori.aichi.jp\",\n\"handa.aichi.jp\",\n\"hazu.aichi.jp\",\n\"hekinan.aichi.jp\",\n\"higashiura.aichi.jp\",\n\"ichinomiya.aichi.jp\",\n\"inazawa.aichi.jp\",\n\"inuyama.aichi.jp\",\n\"isshiki.aichi.jp\",\n\"iwakura.aichi.jp\",\n\"kanie.aichi.jp\",\n\"kariya.aichi.jp\",\n\"kasugai.aichi.jp\",\n\"kira.aichi.jp\",\n\"kiyosu.aichi.jp\",\n\"komaki.aichi.jp\",\n\"konan.aichi.jp\",\n\"kota.aichi.jp\",\n\"mihama.aichi.jp\",\n\"miyoshi.aichi.jp\",\n\"nishio.aichi.jp\",\n\"nisshin.aichi.jp\",\n\"obu.aichi.jp\",\n\"oguchi.aichi.jp\",\n\"oharu.aichi.jp\",\n\"okazaki.aichi.jp\",\n\"owariasahi.aichi.jp\",\n\"seto.aichi.jp\",\n\"shikatsu.aichi.jp\",\n\"shinshiro.aichi.jp\",\n\"shitara.aichi.jp\",\n\"tahara.aichi.jp\",\n\"takahama.aichi.jp\",\n\"tobishima.aichi.jp\",\n\"toei.aichi.jp\",\n\"togo.aichi.jp\",\n\"tokai.aichi.jp\",\n\"tokoname.aichi.jp\",\n\"toyoake.aichi.jp\",\n\"toyohashi.aichi.jp\",\n\"toyokawa.aichi.jp\",\n\"toyone.aichi.jp\",\n\"toyota.aichi.jp\",\n\"tsushima.aichi.jp\",\n\"yatomi.aichi.jp\",\n\"akita.akita.jp\",\n\"daisen.akita.jp\",\n\"fujisato.akita.jp\",\n\"gojome.akita.jp\",\n\"hachirogata.akita.jp\",\n\"happou.akita.jp\",\n\"higashinaruse.akita.jp\",\n\"honjo.akita.jp\",\n\"honjyo.akita.jp\",\n\"ikawa.akita.jp\",\n\"kamikoani.akita.jp\",\n\"kamioka.akita.jp\",\n\"katagami.akita.jp\",\n\"kazuno.akita.jp\",\n\"kitaakita.akita.jp\",\n\"kosaka.akita.jp\",\n\"kyowa.akita.jp\",\n\"misato.akita.jp\",\n\"mitane.akita.jp\",\n\"moriyoshi.akita.jp\",\n\"nikaho.akita.jp\",\n\"noshiro.akita.jp\",\n\"odate.akita.jp\",\n\"oga.akita.jp\",\n\"ogata.akita.jp\",\n\"semboku.akita.jp\",\n\"yokote.akita.jp\",\n\"yurihonjo.akita.jp\",\n\"aomori.aomori.jp\",\n\"gonohe.aomori.jp\",\n\"hachinohe.aomori.jp\",\n\"hashikami.aomori.jp\",\n\"hiranai.aomori.jp\",\n\"hirosaki.aomori.jp\",\n\"itayanagi.aomori.jp\",\n\"kuroishi.aomori.jp\",\n\"misawa.aomori.jp\",\n\"mutsu.aomori.jp\",\n\"nakadomari.aomori.jp\",\n\"noheji.aomori.jp\",\n\"oirase.aomori.jp\",\n\"owani.aomori.jp\",\n\"rokunohe.aomori.jp\",\n\"sannohe.aomori.jp\",\n\"shichinohe.aomori.jp\",\n\"shingo.aomori.jp\",\n\"takko.aomori.jp\",\n\"towada.aomori.jp\",\n\"tsugaru.aomori.jp\",\n\"tsuruta.aomori.jp\",\n\"abiko.chiba.jp\",\n\"asahi.chiba.jp\",\n\"chonan.chiba.jp\",\n\"chosei.chiba.jp\",\n\"choshi.chiba.jp\",\n\"chuo.chiba.jp\",\n\"funabashi.chiba.jp\",\n\"futtsu.chiba.jp\",\n\"hanamigawa.chiba.jp\",\n\"ichihara.chiba.jp\",\n\"ichikawa.chiba.jp\",\n\"ichinomiya.chiba.jp\",\n\"inzai.chiba.jp\",\n\"isumi.chiba.jp\",\n\"kamagaya.chiba.jp\",\n\"kamogawa.chiba.jp\",\n\"kashiwa.chiba.jp\",\n\"katori.chiba.jp\",\n\"katsuura.chiba.jp\",\n\"kimitsu.chiba.jp\",\n\"kisarazu.chiba.jp\",\n\"kozaki.chiba.jp\",\n\"kujukuri.chiba.jp\",\n\"kyonan.chiba.jp\",\n\"matsudo.chiba.jp\",\n\"midori.chiba.jp\",\n\"mihama.chiba.jp\",\n\"minamiboso.chiba.jp\",\n\"mobara.chiba.jp\",\n\"mutsuzawa.chiba.jp\",\n\"nagara.chiba.jp\",\n\"nagareyama.chiba.jp\",\n\"narashino.chiba.jp\",\n\"narita.chiba.jp\",\n\"noda.chiba.jp\",\n\"oamishirasato.chiba.jp\",\n\"omigawa.chiba.jp\",\n\"onjuku.chiba.jp\",\n\"otaki.chiba.jp\",\n\"sakae.chiba.jp\",\n\"sakura.chiba.jp\",\n\"shimofusa.chiba.jp\",\n\"shirako.chiba.jp\",\n\"shiroi.chiba.jp\",\n\"shisui.chiba.jp\",\n\"sodegaura.chiba.jp\",\n\"sosa.chiba.jp\",\n\"tako.chiba.jp\",\n\"tateyama.chiba.jp\",\n\"togane.chiba.jp\",\n\"tohnosho.chiba.jp\",\n\"tomisato.chiba.jp\",\n\"urayasu.chiba.jp\",\n\"yachimata.chiba.jp\",\n\"yachiyo.chiba.jp\",\n\"yokaichiba.chiba.jp\",\n\"yokoshibahikari.chiba.jp\",\n\"yotsukaido.chiba.jp\",\n\"ainan.ehime.jp\",\n\"honai.ehime.jp\",\n\"ikata.ehime.jp\",\n\"imabari.ehime.jp\",\n\"iyo.ehime.jp\",\n\"kamijima.ehime.jp\",\n\"kihoku.ehime.jp\",\n\"kumakogen.ehime.jp\",\n\"masaki.ehime.jp\",\n\"matsuno.ehime.jp\",\n\"matsuyama.ehime.jp\",\n\"namikata.ehime.jp\",\n\"niihama.ehime.jp\",\n\"ozu.ehime.jp\",\n\"saijo.ehime.jp\",\n\"seiyo.ehime.jp\",\n\"shikokuchuo.ehime.jp\",\n\"tobe.ehime.jp\",\n\"toon.ehime.jp\",\n\"uchiko.ehime.jp\",\n\"uwajima.ehime.jp\",\n\"yawatahama.ehime.jp\",\n\"echizen.fukui.jp\",\n\"eiheiji.fukui.jp\",\n\"fukui.fukui.jp\",\n\"ikeda.fukui.jp\",\n\"katsuyama.fukui.jp\",\n\"mihama.fukui.jp\",\n\"minamiechizen.fukui.jp\",\n\"obama.fukui.jp\",\n\"ohi.fukui.jp\",\n\"ono.fukui.jp\",\n\"sabae.fukui.jp\",\n\"sakai.fukui.jp\",\n\"takahama.fukui.jp\",\n\"tsuruga.fukui.jp\",\n\"wakasa.fukui.jp\",\n\"ashiya.fukuoka.jp\",\n\"buzen.fukuoka.jp\",\n\"chikugo.fukuoka.jp\",\n\"chikuho.fukuoka.jp\",\n\"chikujo.fukuoka.jp\",\n\"chikushino.fukuoka.jp\",\n\"chikuzen.fukuoka.jp\",\n\"chuo.fukuoka.jp\",\n\"dazaifu.fukuoka.jp\",\n\"fukuchi.fukuoka.jp\",\n\"hakata.fukuoka.jp\",\n\"higashi.fukuoka.jp\",\n\"hirokawa.fukuoka.jp\",\n\"hisayama.fukuoka.jp\",\n\"iizuka.fukuoka.jp\",\n\"inatsuki.fukuoka.jp\",\n\"kaho.fukuoka.jp\",\n\"kasuga.fukuoka.jp\",\n\"kasuya.fukuoka.jp\",\n\"kawara.fukuoka.jp\",\n\"keisen.fukuoka.jp\",\n\"koga.fukuoka.jp\",\n\"kurate.fukuoka.jp\",\n\"kurogi.fukuoka.jp\",\n\"kurume.fukuoka.jp\",\n\"minami.fukuoka.jp\",\n\"miyako.fukuoka.jp\",\n\"miyama.fukuoka.jp\",\n\"miyawaka.fukuoka.jp\",\n\"mizumaki.fukuoka.jp\",\n\"munakata.fukuoka.jp\",\n\"nakagawa.fukuoka.jp\",\n\"nakama.fukuoka.jp\",\n\"nishi.fukuoka.jp\",\n\"nogata.fukuoka.jp\",\n\"ogori.fukuoka.jp\",\n\"okagaki.fukuoka.jp\",\n\"okawa.fukuoka.jp\",\n\"oki.fukuoka.jp\",\n\"omuta.fukuoka.jp\",\n\"onga.fukuoka.jp\",\n\"onojo.fukuoka.jp\",\n\"oto.fukuoka.jp\",\n\"saigawa.fukuoka.jp\",\n\"sasaguri.fukuoka.jp\",\n\"shingu.fukuoka.jp\",\n\"shinyoshitomi.fukuoka.jp\",\n\"shonai.fukuoka.jp\",\n\"soeda.fukuoka.jp\",\n\"sue.fukuoka.jp\",\n\"tachiarai.fukuoka.jp\",\n\"tagawa.fukuoka.jp\",\n\"takata.fukuoka.jp\",\n\"toho.fukuoka.jp\",\n\"toyotsu.fukuoka.jp\",\n\"tsuiki.fukuoka.jp\",\n\"ukiha.fukuoka.jp\",\n\"umi.fukuoka.jp\",\n\"usui.fukuoka.jp\",\n\"yamada.fukuoka.jp\",\n\"yame.fukuoka.jp\",\n\"yanagawa.fukuoka.jp\",\n\"yukuhashi.fukuoka.jp\",\n\"aizubange.fukushima.jp\",\n\"aizumisato.fukushima.jp\",\n\"aizuwakamatsu.fukushima.jp\",\n\"asakawa.fukushima.jp\",\n\"bandai.fukushima.jp\",\n\"date.fukushima.jp\",\n\"fukushima.fukushima.jp\",\n\"furudono.fukushima.jp\",\n\"futaba.fukushima.jp\",\n\"hanawa.fukushima.jp\",\n\"higashi.fukushima.jp\",\n\"hirata.fukushima.jp\",\n\"hirono.fukushima.jp\",\n\"iitate.fukushima.jp\",\n\"inawashiro.fukushima.jp\",\n\"ishikawa.fukushima.jp\",\n\"iwaki.fukushima.jp\",\n\"izumizaki.fukushima.jp\",\n\"kagamiishi.fukushima.jp\",\n\"kaneyama.fukushima.jp\",\n\"kawamata.fukushima.jp\",\n\"kitakata.fukushima.jp\",\n\"kitashiobara.fukushima.jp\",\n\"koori.fukushima.jp\",\n\"koriyama.fukushima.jp\",\n\"kunimi.fukushima.jp\",\n\"miharu.fukushima.jp\",\n\"mishima.fukushima.jp\",\n\"namie.fukushima.jp\",\n\"nango.fukushima.jp\",\n\"nishiaizu.fukushima.jp\",\n\"nishigo.fukushima.jp\",\n\"okuma.fukushima.jp\",\n\"omotego.fukushima.jp\",\n\"ono.fukushima.jp\",\n\"otama.fukushima.jp\",\n\"samegawa.fukushima.jp\",\n\"shimogo.fukushima.jp\",\n\"shirakawa.fukushima.jp\",\n\"showa.fukushima.jp\",\n\"soma.fukushima.jp\",\n\"sukagawa.fukushima.jp\",\n\"taishin.fukushima.jp\",\n\"tamakawa.fukushima.jp\",\n\"tanagura.fukushima.jp\",\n\"tenei.fukushima.jp\",\n\"yabuki.fukushima.jp\",\n\"yamato.fukushima.jp\",\n\"yamatsuri.fukushima.jp\",\n\"yanaizu.fukushima.jp\",\n\"yugawa.fukushima.jp\",\n\"anpachi.gifu.jp\",\n\"ena.gifu.jp\",\n\"gifu.gifu.jp\",\n\"ginan.gifu.jp\",\n\"godo.gifu.jp\",\n\"gujo.gifu.jp\",\n\"hashima.gifu.jp\",\n\"hichiso.gifu.jp\",\n\"hida.gifu.jp\",\n\"higashishirakawa.gifu.jp\",\n\"ibigawa.gifu.jp\",\n\"ikeda.gifu.jp\",\n\"kakamigahara.gifu.jp\",\n\"kani.gifu.jp\",\n\"kasahara.gifu.jp\",\n\"kasamatsu.gifu.jp\",\n\"kawaue.gifu.jp\",\n\"kitagata.gifu.jp\",\n\"mino.gifu.jp\",\n\"minokamo.gifu.jp\",\n\"mitake.gifu.jp\",\n\"mizunami.gifu.jp\",\n\"motosu.gifu.jp\",\n\"nakatsugawa.gifu.jp\",\n\"ogaki.gifu.jp\",\n\"sakahogi.gifu.jp\",\n\"seki.gifu.jp\",\n\"sekigahara.gifu.jp\",\n\"shirakawa.gifu.jp\",\n\"tajimi.gifu.jp\",\n\"takayama.gifu.jp\",\n\"tarui.gifu.jp\",\n\"toki.gifu.jp\",\n\"tomika.gifu.jp\",\n\"wanouchi.gifu.jp\",\n\"yamagata.gifu.jp\",\n\"yaotsu.gifu.jp\",\n\"yoro.gifu.jp\",\n\"annaka.gunma.jp\",\n\"chiyoda.gunma.jp\",\n\"fujioka.gunma.jp\",\n\"higashiagatsuma.gunma.jp\",\n\"isesaki.gunma.jp\",\n\"itakura.gunma.jp\",\n\"kanna.gunma.jp\",\n\"kanra.gunma.jp\",\n\"katashina.gunma.jp\",\n\"kawaba.gunma.jp\",\n\"kiryu.gunma.jp\",\n\"kusatsu.gunma.jp\",\n\"maebashi.gunma.jp\",\n\"meiwa.gunma.jp\",\n\"midori.gunma.jp\",\n\"minakami.gunma.jp\",\n\"naganohara.gunma.jp\",\n\"nakanojo.gunma.jp\",\n\"nanmoku.gunma.jp\",\n\"numata.gunma.jp\",\n\"oizumi.gunma.jp\",\n\"ora.gunma.jp\",\n\"ota.gunma.jp\",\n\"shibukawa.gunma.jp\",\n\"shimonita.gunma.jp\",\n\"shinto.gunma.jp\",\n\"showa.gunma.jp\",\n\"takasaki.gunma.jp\",\n\"takayama.gunma.jp\",\n\"tamamura.gunma.jp\",\n\"tatebayashi.gunma.jp\",\n\"tomioka.gunma.jp\",\n\"tsukiyono.gunma.jp\",\n\"tsumagoi.gunma.jp\",\n\"ueno.gunma.jp\",\n\"yoshioka.gunma.jp\",\n\"asaminami.hiroshima.jp\",\n\"daiwa.hiroshima.jp\",\n\"etajima.hiroshima.jp\",\n\"fuchu.hiroshima.jp\",\n\"fukuyama.hiroshima.jp\",\n\"hatsukaichi.hiroshima.jp\",\n\"higashihiroshima.hiroshima.jp\",\n\"hongo.hiroshima.jp\",\n\"jinsekikogen.hiroshima.jp\",\n\"kaita.hiroshima.jp\",\n\"kui.hiroshima.jp\",\n\"kumano.hiroshima.jp\",\n\"kure.hiroshima.jp\",\n\"mihara.hiroshima.jp\",\n\"miyoshi.hiroshima.jp\",\n\"naka.hiroshima.jp\",\n\"onomichi.hiroshima.jp\",\n\"osakikamijima.hiroshima.jp\",\n\"otake.hiroshima.jp\",\n\"saka.hiroshima.jp\",\n\"sera.hiroshima.jp\",\n\"seranishi.hiroshima.jp\",\n\"shinichi.hiroshima.jp\",\n\"shobara.hiroshima.jp\",\n\"takehara.hiroshima.jp\",\n\"abashiri.hokkaido.jp\",\n\"abira.hokkaido.jp\",\n\"aibetsu.hokkaido.jp\",\n\"akabira.hokkaido.jp\",\n\"akkeshi.hokkaido.jp\",\n\"asahikawa.hokkaido.jp\",\n\"ashibetsu.hokkaido.jp\",\n\"ashoro.hokkaido.jp\",\n\"assabu.hokkaido.jp\",\n\"atsuma.hokkaido.jp\",\n\"bibai.hokkaido.jp\",\n\"biei.hokkaido.jp\",\n\"bifuka.hokkaido.jp\",\n\"bihoro.hokkaido.jp\",\n\"biratori.hokkaido.jp\",\n\"chippubetsu.hokkaido.jp\",\n\"chitose.hokkaido.jp\",\n\"date.hokkaido.jp\",\n\"ebetsu.hokkaido.jp\",\n\"embetsu.hokkaido.jp\",\n\"eniwa.hokkaido.jp\",\n\"erimo.hokkaido.jp\",\n\"esan.hokkaido.jp\",\n\"esashi.hokkaido.jp\",\n\"fukagawa.hokkaido.jp\",\n\"fukushima.hokkaido.jp\",\n\"furano.hokkaido.jp\",\n\"furubira.hokkaido.jp\",\n\"haboro.hokkaido.jp\",\n\"hakodate.hokkaido.jp\",\n\"hamatonbetsu.hokkaido.jp\",\n\"hidaka.hokkaido.jp\",\n\"higashikagura.hokkaido.jp\",\n\"higashikawa.hokkaido.jp\",\n\"hiroo.hokkaido.jp\",\n\"hokuryu.hokkaido.jp\",\n\"hokuto.hokkaido.jp\",\n\"honbetsu.hokkaido.jp\",\n\"horokanai.hokkaido.jp\",\n\"horonobe.hokkaido.jp\",\n\"ikeda.hokkaido.jp\",\n\"imakane.hokkaido.jp\",\n\"ishikari.hokkaido.jp\",\n\"iwamizawa.hokkaido.jp\",\n\"iwanai.hokkaido.jp\",\n\"kamifurano.hokkaido.jp\",\n\"kamikawa.hokkaido.jp\",\n\"kamishihoro.hokkaido.jp\",\n\"kamisunagawa.hokkaido.jp\",\n\"kamoenai.hokkaido.jp\",\n\"kayabe.hokkaido.jp\",\n\"kembuchi.hokkaido.jp\",\n\"kikonai.hokkaido.jp\",\n\"kimobetsu.hokkaido.jp\",\n\"kitahiroshima.hokkaido.jp\",\n\"kitami.hokkaido.jp\",\n\"kiyosato.hokkaido.jp\",\n\"koshimizu.hokkaido.jp\",\n\"kunneppu.hokkaido.jp\",\n\"kuriyama.hokkaido.jp\",\n\"kuromatsunai.hokkaido.jp\",\n\"kushiro.hokkaido.jp\",\n\"kutchan.hokkaido.jp\",\n\"kyowa.hokkaido.jp\",\n\"mashike.hokkaido.jp\",\n\"matsumae.hokkaido.jp\",\n\"mikasa.hokkaido.jp\",\n\"minamifurano.hokkaido.jp\",\n\"mombetsu.hokkaido.jp\",\n\"moseushi.hokkaido.jp\",\n\"mukawa.hokkaido.jp\",\n\"muroran.hokkaido.jp\",\n\"naie.hokkaido.jp\",\n\"nakagawa.hokkaido.jp\",\n\"nakasatsunai.hokkaido.jp\",\n\"nakatombetsu.hokkaido.jp\",\n\"nanae.hokkaido.jp\",\n\"nanporo.hokkaido.jp\",\n\"nayoro.hokkaido.jp\",\n\"nemuro.hokkaido.jp\",\n\"niikappu.hokkaido.jp\",\n\"niki.hokkaido.jp\",\n\"nishiokoppe.hokkaido.jp\",\n\"noboribetsu.hokkaido.jp\",\n\"numata.hokkaido.jp\",\n\"obihiro.hokkaido.jp\",\n\"obira.hokkaido.jp\",\n\"oketo.hokkaido.jp\",\n\"okoppe.hokkaido.jp\",\n\"otaru.hokkaido.jp\",\n\"otobe.hokkaido.jp\",\n\"otofuke.hokkaido.jp\",\n\"otoineppu.hokkaido.jp\",\n\"oumu.hokkaido.jp\",\n\"ozora.hokkaido.jp\",\n\"pippu.hokkaido.jp\",\n\"rankoshi.hokkaido.jp\",\n\"rebun.hokkaido.jp\",\n\"rikubetsu.hokkaido.jp\",\n\"rishiri.hokkaido.jp\",\n\"rishirifuji.hokkaido.jp\",\n\"saroma.hokkaido.jp\",\n\"sarufutsu.hokkaido.jp\",\n\"shakotan.hokkaido.jp\",\n\"shari.hokkaido.jp\",\n\"shibecha.hokkaido.jp\",\n\"shibetsu.hokkaido.jp\",\n\"shikabe.hokkaido.jp\",\n\"shikaoi.hokkaido.jp\",\n\"shimamaki.hokkaido.jp\",\n\"shimizu.hokkaido.jp\",\n\"shimokawa.hokkaido.jp\",\n\"shinshinotsu.hokkaido.jp\",\n\"shintoku.hokkaido.jp\",\n\"shiranuka.hokkaido.jp\",\n\"shiraoi.hokkaido.jp\",\n\"shiriuchi.hokkaido.jp\",\n\"sobetsu.hokkaido.jp\",\n\"sunagawa.hokkaido.jp\",\n\"taiki.hokkaido.jp\",\n\"takasu.hokkaido.jp\",\n\"takikawa.hokkaido.jp\",\n\"takinoue.hokkaido.jp\",\n\"teshikaga.hokkaido.jp\",\n\"tobetsu.hokkaido.jp\",\n\"tohma.hokkaido.jp\",\n\"tomakomai.hokkaido.jp\",\n\"tomari.hokkaido.jp\",\n\"toya.hokkaido.jp\",\n\"toyako.hokkaido.jp\",\n\"toyotomi.hokkaido.jp\",\n\"toyoura.hokkaido.jp\",\n\"tsubetsu.hokkaido.jp\",\n\"tsukigata.hokkaido.jp\",\n\"urakawa.hokkaido.jp\",\n\"urausu.hokkaido.jp\",\n\"uryu.hokkaido.jp\",\n\"utashinai.hokkaido.jp\",\n\"wakkanai.hokkaido.jp\",\n\"wassamu.hokkaido.jp\",\n\"yakumo.hokkaido.jp\",\n\"yoichi.hokkaido.jp\",\n\"aioi.hyogo.jp\",\n\"akashi.hyogo.jp\",\n\"ako.hyogo.jp\",\n\"amagasaki.hyogo.jp\",\n\"aogaki.hyogo.jp\",\n\"asago.hyogo.jp\",\n\"ashiya.hyogo.jp\",\n\"awaji.hyogo.jp\",\n\"fukusaki.hyogo.jp\",\n\"goshiki.hyogo.jp\",\n\"harima.hyogo.jp\",\n\"himeji.hyogo.jp\",\n\"ichikawa.hyogo.jp\",\n\"inagawa.hyogo.jp\",\n\"itami.hyogo.jp\",\n\"kakogawa.hyogo.jp\",\n\"kamigori.hyogo.jp\",\n\"kamikawa.hyogo.jp\",\n\"kasai.hyogo.jp\",\n\"kasuga.hyogo.jp\",\n\"kawanishi.hyogo.jp\",\n\"miki.hyogo.jp\",\n\"minamiawaji.hyogo.jp\",\n\"nishinomiya.hyogo.jp\",\n\"nishiwaki.hyogo.jp\",\n\"ono.hyogo.jp\",\n\"sanda.hyogo.jp\",\n\"sannan.hyogo.jp\",\n\"sasayama.hyogo.jp\",\n\"sayo.hyogo.jp\",\n\"shingu.hyogo.jp\",\n\"shinonsen.hyogo.jp\",\n\"shiso.hyogo.jp\",\n\"sumoto.hyogo.jp\",\n\"taishi.hyogo.jp\",\n\"taka.hyogo.jp\",\n\"takarazuka.hyogo.jp\",\n\"takasago.hyogo.jp\",\n\"takino.hyogo.jp\",\n\"tamba.hyogo.jp\",\n\"tatsuno.hyogo.jp\",\n\"toyooka.hyogo.jp\",\n\"yabu.hyogo.jp\",\n\"yashiro.hyogo.jp\",\n\"yoka.hyogo.jp\",\n\"yokawa.hyogo.jp\",\n\"ami.ibaraki.jp\",\n\"asahi.ibaraki.jp\",\n\"bando.ibaraki.jp\",\n\"chikusei.ibaraki.jp\",\n\"daigo.ibaraki.jp\",\n\"fujishiro.ibaraki.jp\",\n\"hitachi.ibaraki.jp\",\n\"hitachinaka.ibaraki.jp\",\n\"hitachiomiya.ibaraki.jp\",\n\"hitachiota.ibaraki.jp\",\n\"ibaraki.ibaraki.jp\",\n\"ina.ibaraki.jp\",\n\"inashiki.ibaraki.jp\",\n\"itako.ibaraki.jp\",\n\"iwama.ibaraki.jp\",\n\"joso.ibaraki.jp\",\n\"kamisu.ibaraki.jp\",\n\"kasama.ibaraki.jp\",\n\"kashima.ibaraki.jp\",\n\"kasumigaura.ibaraki.jp\",\n\"koga.ibaraki.jp\",\n\"miho.ibaraki.jp\",\n\"mito.ibaraki.jp\",\n\"moriya.ibaraki.jp\",\n\"naka.ibaraki.jp\",\n\"namegata.ibaraki.jp\",\n\"oarai.ibaraki.jp\",\n\"ogawa.ibaraki.jp\",\n\"omitama.ibaraki.jp\",\n\"ryugasaki.ibaraki.jp\",\n\"sakai.ibaraki.jp\",\n\"sakuragawa.ibaraki.jp\",\n\"shimodate.ibaraki.jp\",\n\"shimotsuma.ibaraki.jp\",\n\"shirosato.ibaraki.jp\",\n\"sowa.ibaraki.jp\",\n\"suifu.ibaraki.jp\",\n\"takahagi.ibaraki.jp\",\n\"tamatsukuri.ibaraki.jp\",\n\"tokai.ibaraki.jp\",\n\"tomobe.ibaraki.jp\",\n\"tone.ibaraki.jp\",\n\"toride.ibaraki.jp\",\n\"tsuchiura.ibaraki.jp\",\n\"tsukuba.ibaraki.jp\",\n\"uchihara.ibaraki.jp\",\n\"ushiku.ibaraki.jp\",\n\"yachiyo.ibaraki.jp\",\n\"yamagata.ibaraki.jp\",\n\"yawara.ibaraki.jp\",\n\"yuki.ibaraki.jp\",\n\"anamizu.ishikawa.jp\",\n\"hakui.ishikawa.jp\",\n\"hakusan.ishikawa.jp\",\n\"kaga.ishikawa.jp\",\n\"kahoku.ishikawa.jp\",\n\"kanazawa.ishikawa.jp\",\n\"kawakita.ishikawa.jp\",\n\"komatsu.ishikawa.jp\",\n\"nakanoto.ishikawa.jp\",\n\"nanao.ishikawa.jp\",\n\"nomi.ishikawa.jp\",\n\"nonoichi.ishikawa.jp\",\n\"noto.ishikawa.jp\",\n\"shika.ishikawa.jp\",\n\"suzu.ishikawa.jp\",\n\"tsubata.ishikawa.jp\",\n\"tsurugi.ishikawa.jp\",\n\"uchinada.ishikawa.jp\",\n\"wajima.ishikawa.jp\",\n\"fudai.iwate.jp\",\n\"fujisawa.iwate.jp\",\n\"hanamaki.iwate.jp\",\n\"hiraizumi.iwate.jp\",\n\"hirono.iwate.jp\",\n\"ichinohe.iwate.jp\",\n\"ichinoseki.iwate.jp\",\n\"iwaizumi.iwate.jp\",\n\"iwate.iwate.jp\",\n\"joboji.iwate.jp\",\n\"kamaishi.iwate.jp\",\n\"kanegasaki.iwate.jp\",\n\"karumai.iwate.jp\",\n\"kawai.iwate.jp\",\n\"kitakami.iwate.jp\",\n\"kuji.iwate.jp\",\n\"kunohe.iwate.jp\",\n\"kuzumaki.iwate.jp\",\n\"miyako.iwate.jp\",\n\"mizusawa.iwate.jp\",\n\"morioka.iwate.jp\",\n\"ninohe.iwate.jp\",\n\"noda.iwate.jp\",\n\"ofunato.iwate.jp\",\n\"oshu.iwate.jp\",\n\"otsuchi.iwate.jp\",\n\"rikuzentakata.iwate.jp\",\n\"shiwa.iwate.jp\",\n\"shizukuishi.iwate.jp\",\n\"sumita.iwate.jp\",\n\"tanohata.iwate.jp\",\n\"tono.iwate.jp\",\n\"yahaba.iwate.jp\",\n\"yamada.iwate.jp\",\n\"ayagawa.kagawa.jp\",\n\"higashikagawa.kagawa.jp\",\n\"kanonji.kagawa.jp\",\n\"kotohira.kagawa.jp\",\n\"manno.kagawa.jp\",\n\"marugame.kagawa.jp\",\n\"mitoyo.kagawa.jp\",\n\"naoshima.kagawa.jp\",\n\"sanuki.kagawa.jp\",\n\"tadotsu.kagawa.jp\",\n\"takamatsu.kagawa.jp\",\n\"tonosho.kagawa.jp\",\n\"uchinomi.kagawa.jp\",\n\"utazu.kagawa.jp\",\n\"zentsuji.kagawa.jp\",\n\"akune.kagoshima.jp\",\n\"amami.kagoshima.jp\",\n\"hioki.kagoshima.jp\",\n\"isa.kagoshima.jp\",\n\"isen.kagoshima.jp\",\n\"izumi.kagoshima.jp\",\n\"kagoshima.kagoshima.jp\",\n\"kanoya.kagoshima.jp\",\n\"kawanabe.kagoshima.jp\",\n\"kinko.kagoshima.jp\",\n\"kouyama.kagoshima.jp\",\n\"makurazaki.kagoshima.jp\",\n\"matsumoto.kagoshima.jp\",\n\"minamitane.kagoshima.jp\",\n\"nakatane.kagoshima.jp\",\n\"nishinoomote.kagoshima.jp\",\n\"satsumasendai.kagoshima.jp\",\n\"soo.kagoshima.jp\",\n\"tarumizu.kagoshima.jp\",\n\"yusui.kagoshima.jp\",\n\"aikawa.kanagawa.jp\",\n\"atsugi.kanagawa.jp\",\n\"ayase.kanagawa.jp\",\n\"chigasaki.kanagawa.jp\",\n\"ebina.kanagawa.jp\",\n\"fujisawa.kanagawa.jp\",\n\"hadano.kanagawa.jp\",\n\"hakone.kanagawa.jp\",\n\"hiratsuka.kanagawa.jp\",\n\"isehara.kanagawa.jp\",\n\"kaisei.kanagawa.jp\",\n\"kamakura.kanagawa.jp\",\n\"kiyokawa.kanagawa.jp\",\n\"matsuda.kanagawa.jp\",\n\"minamiashigara.kanagawa.jp\",\n\"miura.kanagawa.jp\",\n\"nakai.kanagawa.jp\",\n\"ninomiya.kanagawa.jp\",\n\"odawara.kanagawa.jp\",\n\"oi.kanagawa.jp\",\n\"oiso.kanagawa.jp\",\n\"sagamihara.kanagawa.jp\",\n\"samukawa.kanagawa.jp\",\n\"tsukui.kanagawa.jp\",\n\"yamakita.kanagawa.jp\",\n\"yamato.kanagawa.jp\",\n\"yokosuka.kanagawa.jp\",\n\"yugawara.kanagawa.jp\",\n\"zama.kanagawa.jp\",\n\"zushi.kanagawa.jp\",\n\"aki.kochi.jp\",\n\"geisei.kochi.jp\",\n\"hidaka.kochi.jp\",\n\"higashitsuno.kochi.jp\",\n\"ino.kochi.jp\",\n\"kagami.kochi.jp\",\n\"kami.kochi.jp\",\n\"kitagawa.kochi.jp\",\n\"kochi.kochi.jp\",\n\"mihara.kochi.jp\",\n\"motoyama.kochi.jp\",\n\"muroto.kochi.jp\",\n\"nahari.kochi.jp\",\n\"nakamura.kochi.jp\",\n\"nankoku.kochi.jp\",\n\"nishitosa.kochi.jp\",\n\"niyodogawa.kochi.jp\",\n\"ochi.kochi.jp\",\n\"okawa.kochi.jp\",\n\"otoyo.kochi.jp\",\n\"otsuki.kochi.jp\",\n\"sakawa.kochi.jp\",\n\"sukumo.kochi.jp\",\n\"susaki.kochi.jp\",\n\"tosa.kochi.jp\",\n\"tosashimizu.kochi.jp\",\n\"toyo.kochi.jp\",\n\"tsuno.kochi.jp\",\n\"umaji.kochi.jp\",\n\"yasuda.kochi.jp\",\n\"yusuhara.kochi.jp\",\n\"amakusa.kumamoto.jp\",\n\"arao.kumamoto.jp\",\n\"aso.kumamoto.jp\",\n\"choyo.kumamoto.jp\",\n\"gyokuto.kumamoto.jp\",\n\"kamiamakusa.kumamoto.jp\",\n\"kikuchi.kumamoto.jp\",\n\"kumamoto.kumamoto.jp\",\n\"mashiki.kumamoto.jp\",\n\"mifune.kumamoto.jp\",\n\"minamata.kumamoto.jp\",\n\"minamioguni.kumamoto.jp\",\n\"nagasu.kumamoto.jp\",\n\"nishihara.kumamoto.jp\",\n\"oguni.kumamoto.jp\",\n\"ozu.kumamoto.jp\",\n\"sumoto.kumamoto.jp\",\n\"takamori.kumamoto.jp\",\n\"uki.kumamoto.jp\",\n\"uto.kumamoto.jp\",\n\"yamaga.kumamoto.jp\",\n\"yamato.kumamoto.jp\",\n\"yatsushiro.kumamoto.jp\",\n\"ayabe.kyoto.jp\",\n\"fukuchiyama.kyoto.jp\",\n\"higashiyama.kyoto.jp\",\n\"ide.kyoto.jp\",\n\"ine.kyoto.jp\",\n\"joyo.kyoto.jp\",\n\"kameoka.kyoto.jp\",\n\"kamo.kyoto.jp\",\n\"kita.kyoto.jp\",\n\"kizu.kyoto.jp\",\n\"kumiyama.kyoto.jp\",\n\"kyotamba.kyoto.jp\",\n\"kyotanabe.kyoto.jp\",\n\"kyotango.kyoto.jp\",\n\"maizuru.kyoto.jp\",\n\"minami.kyoto.jp\",\n\"minamiyamashiro.kyoto.jp\",\n\"miyazu.kyoto.jp\",\n\"muko.kyoto.jp\",\n\"nagaokakyo.kyoto.jp\",\n\"nakagyo.kyoto.jp\",\n\"nantan.kyoto.jp\",\n\"oyamazaki.kyoto.jp\",\n\"sakyo.kyoto.jp\",\n\"seika.kyoto.jp\",\n\"tanabe.kyoto.jp\",\n\"uji.kyoto.jp\",\n\"ujitawara.kyoto.jp\",\n\"wazuka.kyoto.jp\",\n\"yamashina.kyoto.jp\",\n\"yawata.kyoto.jp\",\n\"asahi.mie.jp\",\n\"inabe.mie.jp\",\n\"ise.mie.jp\",\n\"kameyama.mie.jp\",\n\"kawagoe.mie.jp\",\n\"kiho.mie.jp\",\n\"kisosaki.mie.jp\",\n\"kiwa.mie.jp\",\n\"komono.mie.jp\",\n\"kumano.mie.jp\",\n\"kuwana.mie.jp\",\n\"matsusaka.mie.jp\",\n\"meiwa.mie.jp\",\n\"mihama.mie.jp\",\n\"minamiise.mie.jp\",\n\"misugi.mie.jp\",\n\"miyama.mie.jp\",\n\"nabari.mie.jp\",\n\"shima.mie.jp\",\n\"suzuka.mie.jp\",\n\"tado.mie.jp\",\n\"taiki.mie.jp\",\n\"taki.mie.jp\",\n\"tamaki.mie.jp\",\n\"toba.mie.jp\",\n\"tsu.mie.jp\",\n\"udono.mie.jp\",\n\"ureshino.mie.jp\",\n\"watarai.mie.jp\",\n\"yokkaichi.mie.jp\",\n\"furukawa.miyagi.jp\",\n\"higashimatsushima.miyagi.jp\",\n\"ishinomaki.miyagi.jp\",\n\"iwanuma.miyagi.jp\",\n\"kakuda.miyagi.jp\",\n\"kami.miyagi.jp\",\n\"kawasaki.miyagi.jp\",\n\"marumori.miyagi.jp\",\n\"matsushima.miyagi.jp\",\n\"minamisanriku.miyagi.jp\",\n\"misato.miyagi.jp\",\n\"murata.miyagi.jp\",\n\"natori.miyagi.jp\",\n\"ogawara.miyagi.jp\",\n\"ohira.miyagi.jp\",\n\"onagawa.miyagi.jp\",\n\"osaki.miyagi.jp\",\n\"rifu.miyagi.jp\",\n\"semine.miyagi.jp\",\n\"shibata.miyagi.jp\",\n\"shichikashuku.miyagi.jp\",\n\"shikama.miyagi.jp\",\n\"shiogama.miyagi.jp\",\n\"shiroishi.miyagi.jp\",\n\"tagajo.miyagi.jp\",\n\"taiwa.miyagi.jp\",\n\"tome.miyagi.jp\",\n\"tomiya.miyagi.jp\",\n\"wakuya.miyagi.jp\",\n\"watari.miyagi.jp\",\n\"yamamoto.miyagi.jp\",\n\"zao.miyagi.jp\",\n\"aya.miyazaki.jp\",\n\"ebino.miyazaki.jp\",\n\"gokase.miyazaki.jp\",\n\"hyuga.miyazaki.jp\",\n\"kadogawa.miyazaki.jp\",\n\"kawaminami.miyazaki.jp\",\n\"kijo.miyazaki.jp\",\n\"kitagawa.miyazaki.jp\",\n\"kitakata.miyazaki.jp\",\n\"kitaura.miyazaki.jp\",\n\"kobayashi.miyazaki.jp\",\n\"kunitomi.miyazaki.jp\",\n\"kushima.miyazaki.jp\",\n\"mimata.miyazaki.jp\",\n\"miyakonojo.miyazaki.jp\",\n\"miyazaki.miyazaki.jp\",\n\"morotsuka.miyazaki.jp\",\n\"nichinan.miyazaki.jp\",\n\"nishimera.miyazaki.jp\",\n\"nobeoka.miyazaki.jp\",\n\"saito.miyazaki.jp\",\n\"shiiba.miyazaki.jp\",\n\"shintomi.miyazaki.jp\",\n\"takaharu.miyazaki.jp\",\n\"takanabe.miyazaki.jp\",\n\"takazaki.miyazaki.jp\",\n\"tsuno.miyazaki.jp\",\n\"achi.nagano.jp\",\n\"agematsu.nagano.jp\",\n\"anan.nagano.jp\",\n\"aoki.nagano.jp\",\n\"asahi.nagano.jp\",\n\"azumino.nagano.jp\",\n\"chikuhoku.nagano.jp\",\n\"chikuma.nagano.jp\",\n\"chino.nagano.jp\",\n\"fujimi.nagano.jp\",\n\"hakuba.nagano.jp\",\n\"hara.nagano.jp\",\n\"hiraya.nagano.jp\",\n\"iida.nagano.jp\",\n\"iijima.nagano.jp\",\n\"iiyama.nagano.jp\",\n\"iizuna.nagano.jp\",\n\"ikeda.nagano.jp\",\n\"ikusaka.nagano.jp\",\n\"ina.nagano.jp\",\n\"karuizawa.nagano.jp\",\n\"kawakami.nagano.jp\",\n\"kiso.nagano.jp\",\n\"kisofukushima.nagano.jp\",\n\"kitaaiki.nagano.jp\",\n\"komagane.nagano.jp\",\n\"komoro.nagano.jp\",\n\"matsukawa.nagano.jp\",\n\"matsumoto.nagano.jp\",\n\"miasa.nagano.jp\",\n\"minamiaiki.nagano.jp\",\n\"minamimaki.nagano.jp\",\n\"minamiminowa.nagano.jp\",\n\"minowa.nagano.jp\",\n\"miyada.nagano.jp\",\n\"miyota.nagano.jp\",\n\"mochizuki.nagano.jp\",\n\"nagano.nagano.jp\",\n\"nagawa.nagano.jp\",\n\"nagiso.nagano.jp\",\n\"nakagawa.nagano.jp\",\n\"nakano.nagano.jp\",\n\"nozawaonsen.nagano.jp\",\n\"obuse.nagano.jp\",\n\"ogawa.nagano.jp\",\n\"okaya.nagano.jp\",\n\"omachi.nagano.jp\",\n\"omi.nagano.jp\",\n\"ookuwa.nagano.jp\",\n\"ooshika.nagano.jp\",\n\"otaki.nagano.jp\",\n\"otari.nagano.jp\",\n\"sakae.nagano.jp\",\n\"sakaki.nagano.jp\",\n\"saku.nagano.jp\",\n\"sakuho.nagano.jp\",\n\"shimosuwa.nagano.jp\",\n\"shinanomachi.nagano.jp\",\n\"shiojiri.nagano.jp\",\n\"suwa.nagano.jp\",\n\"suzaka.nagano.jp\",\n\"takagi.nagano.jp\",\n\"takamori.nagano.jp\",\n\"takayama.nagano.jp\",\n\"tateshina.nagano.jp\",\n\"tatsuno.nagano.jp\",\n\"togakushi.nagano.jp\",\n\"togura.nagano.jp\",\n\"tomi.nagano.jp\",\n\"ueda.nagano.jp\",\n\"wada.nagano.jp\",\n\"yamagata.nagano.jp\",\n\"yamanouchi.nagano.jp\",\n\"yasaka.nagano.jp\",\n\"yasuoka.nagano.jp\",\n\"chijiwa.nagasaki.jp\",\n\"futsu.nagasaki.jp\",\n\"goto.nagasaki.jp\",\n\"hasami.nagasaki.jp\",\n\"hirado.nagasaki.jp\",\n\"iki.nagasaki.jp\",\n\"isahaya.nagasaki.jp\",\n\"kawatana.nagasaki.jp\",\n\"kuchinotsu.nagasaki.jp\",\n\"matsuura.nagasaki.jp\",\n\"nagasaki.nagasaki.jp\",\n\"obama.nagasaki.jp\",\n\"omura.nagasaki.jp\",\n\"oseto.nagasaki.jp\",\n\"saikai.nagasaki.jp\",\n\"sasebo.nagasaki.jp\",\n\"seihi.nagasaki.jp\",\n\"shimabara.nagasaki.jp\",\n\"shinkamigoto.nagasaki.jp\",\n\"togitsu.nagasaki.jp\",\n\"tsushima.nagasaki.jp\",\n\"unzen.nagasaki.jp\",\n\"ando.nara.jp\",\n\"gose.nara.jp\",\n\"heguri.nara.jp\",\n\"higashiyoshino.nara.jp\",\n\"ikaruga.nara.jp\",\n\"ikoma.nara.jp\",\n\"kamikitayama.nara.jp\",\n\"kanmaki.nara.jp\",\n\"kashiba.nara.jp\",\n\"kashihara.nara.jp\",\n\"katsuragi.nara.jp\",\n\"kawai.nara.jp\",\n\"kawakami.nara.jp\",\n\"kawanishi.nara.jp\",\n\"koryo.nara.jp\",\n\"kurotaki.nara.jp\",\n\"mitsue.nara.jp\",\n\"miyake.nara.jp\",\n\"nara.nara.jp\",\n\"nosegawa.nara.jp\",\n\"oji.nara.jp\",\n\"ouda.nara.jp\",\n\"oyodo.nara.jp\",\n\"sakurai.nara.jp\",\n\"sango.nara.jp\",\n\"shimoichi.nara.jp\",\n\"shimokitayama.nara.jp\",\n\"shinjo.nara.jp\",\n\"soni.nara.jp\",\n\"takatori.nara.jp\",\n\"tawaramoto.nara.jp\",\n\"tenkawa.nara.jp\",\n\"tenri.nara.jp\",\n\"uda.nara.jp\",\n\"yamatokoriyama.nara.jp\",\n\"yamatotakada.nara.jp\",\n\"yamazoe.nara.jp\",\n\"yoshino.nara.jp\",\n\"aga.niigata.jp\",\n\"agano.niigata.jp\",\n\"gosen.niigata.jp\",\n\"itoigawa.niigata.jp\",\n\"izumozaki.niigata.jp\",\n\"joetsu.niigata.jp\",\n\"kamo.niigata.jp\",\n\"kariwa.niigata.jp\",\n\"kashiwazaki.niigata.jp\",\n\"minamiuonuma.niigata.jp\",\n\"mitsuke.niigata.jp\",\n\"muika.niigata.jp\",\n\"murakami.niigata.jp\",\n\"myoko.niigata.jp\",\n\"nagaoka.niigata.jp\",\n\"niigata.niigata.jp\",\n\"ojiya.niigata.jp\",\n\"omi.niigata.jp\",\n\"sado.niigata.jp\",\n\"sanjo.niigata.jp\",\n\"seiro.niigata.jp\",\n\"seirou.niigata.jp\",\n\"sekikawa.niigata.jp\",\n\"shibata.niigata.jp\",\n\"tagami.niigata.jp\",\n\"tainai.niigata.jp\",\n\"tochio.niigata.jp\",\n\"tokamachi.niigata.jp\",\n\"tsubame.niigata.jp\",\n\"tsunan.niigata.jp\",\n\"uonuma.niigata.jp\",\n\"yahiko.niigata.jp\",\n\"yoita.niigata.jp\",\n\"yuzawa.niigata.jp\",\n\"beppu.oita.jp\",\n\"bungoono.oita.jp\",\n\"bungotakada.oita.jp\",\n\"hasama.oita.jp\",\n\"hiji.oita.jp\",\n\"himeshima.oita.jp\",\n\"hita.oita.jp\",\n\"kamitsue.oita.jp\",\n\"kokonoe.oita.jp\",\n\"kuju.oita.jp\",\n\"kunisaki.oita.jp\",\n\"kusu.oita.jp\",\n\"oita.oita.jp\",\n\"saiki.oita.jp\",\n\"taketa.oita.jp\",\n\"tsukumi.oita.jp\",\n\"usa.oita.jp\",\n\"usuki.oita.jp\",\n\"yufu.oita.jp\",\n\"akaiwa.okayama.jp\",\n\"asakuchi.okayama.jp\",\n\"bizen.okayama.jp\",\n\"hayashima.okayama.jp\",\n\"ibara.okayama.jp\",\n\"kagamino.okayama.jp\",\n\"kasaoka.okayama.jp\",\n\"kibichuo.okayama.jp\",\n\"kumenan.okayama.jp\",\n\"kurashiki.okayama.jp\",\n\"maniwa.okayama.jp\",\n\"misaki.okayama.jp\",\n\"nagi.okayama.jp\",\n\"niimi.okayama.jp\",\n\"nishiawakura.okayama.jp\",\n\"okayama.okayama.jp\",\n\"satosho.okayama.jp\",\n\"setouchi.okayama.jp\",\n\"shinjo.okayama.jp\",\n\"shoo.okayama.jp\",\n\"soja.okayama.jp\",\n\"takahashi.okayama.jp\",\n\"tamano.okayama.jp\",\n\"tsuyama.okayama.jp\",\n\"wake.okayama.jp\",\n\"yakage.okayama.jp\",\n\"aguni.okinawa.jp\",\n\"ginowan.okinawa.jp\",\n\"ginoza.okinawa.jp\",\n\"gushikami.okinawa.jp\",\n\"haebaru.okinawa.jp\",\n\"higashi.okinawa.jp\",\n\"hirara.okinawa.jp\",\n\"iheya.okinawa.jp\",\n\"ishigaki.okinawa.jp\",\n\"ishikawa.okinawa.jp\",\n\"itoman.okinawa.jp\",\n\"izena.okinawa.jp\",\n\"kadena.okinawa.jp\",\n\"kin.okinawa.jp\",\n\"kitadaito.okinawa.jp\",\n\"kitanakagusuku.okinawa.jp\",\n\"kumejima.okinawa.jp\",\n\"kunigami.okinawa.jp\",\n\"minamidaito.okinawa.jp\",\n\"motobu.okinawa.jp\",\n\"nago.okinawa.jp\",\n\"naha.okinawa.jp\",\n\"nakagusuku.okinawa.jp\",\n\"nakijin.okinawa.jp\",\n\"nanjo.okinawa.jp\",\n\"nishihara.okinawa.jp\",\n\"ogimi.okinawa.jp\",\n\"okinawa.okinawa.jp\",\n\"onna.okinawa.jp\",\n\"shimoji.okinawa.jp\",\n\"taketomi.okinawa.jp\",\n\"tarama.okinawa.jp\",\n\"tokashiki.okinawa.jp\",\n\"tomigusuku.okinawa.jp\",\n\"tonaki.okinawa.jp\",\n\"urasoe.okinawa.jp\",\n\"uruma.okinawa.jp\",\n\"yaese.okinawa.jp\",\n\"yomitan.okinawa.jp\",\n\"yonabaru.okinawa.jp\",\n\"yonaguni.okinawa.jp\",\n\"zamami.okinawa.jp\",\n\"abeno.osaka.jp\",\n\"chihayaakasaka.osaka.jp\",\n\"chuo.osaka.jp\",\n\"daito.osaka.jp\",\n\"fujiidera.osaka.jp\",\n\"habikino.osaka.jp\",\n\"hannan.osaka.jp\",\n\"higashiosaka.osaka.jp\",\n\"higashisumiyoshi.osaka.jp\",\n\"higashiyodogawa.osaka.jp\",\n\"hirakata.osaka.jp\",\n\"ibaraki.osaka.jp\",\n\"ikeda.osaka.jp\",\n\"izumi.osaka.jp\",\n\"izumiotsu.osaka.jp\",\n\"izumisano.osaka.jp\",\n\"kadoma.osaka.jp\",\n\"kaizuka.osaka.jp\",\n\"kanan.osaka.jp\",\n\"kashiwara.osaka.jp\",\n\"katano.osaka.jp\",\n\"kawachinagano.osaka.jp\",\n\"kishiwada.osaka.jp\",\n\"kita.osaka.jp\",\n\"kumatori.osaka.jp\",\n\"matsubara.osaka.jp\",\n\"minato.osaka.jp\",\n\"minoh.osaka.jp\",\n\"misaki.osaka.jp\",\n\"moriguchi.osaka.jp\",\n\"neyagawa.osaka.jp\",\n\"nishi.osaka.jp\",\n\"nose.osaka.jp\",\n\"osakasayama.osaka.jp\",\n\"sakai.osaka.jp\",\n\"sayama.osaka.jp\",\n\"sennan.osaka.jp\",\n\"settsu.osaka.jp\",\n\"shijonawate.osaka.jp\",\n\"shimamoto.osaka.jp\",\n\"suita.osaka.jp\",\n\"tadaoka.osaka.jp\",\n\"taishi.osaka.jp\",\n\"tajiri.osaka.jp\",\n\"takaishi.osaka.jp\",\n\"takatsuki.osaka.jp\",\n\"tondabayashi.osaka.jp\",\n\"toyonaka.osaka.jp\",\n\"toyono.osaka.jp\",\n\"yao.osaka.jp\",\n\"ariake.saga.jp\",\n\"arita.saga.jp\",\n\"fukudomi.saga.jp\",\n\"genkai.saga.jp\",\n\"hamatama.saga.jp\",\n\"hizen.saga.jp\",\n\"imari.saga.jp\",\n\"kamimine.saga.jp\",\n\"kanzaki.saga.jp\",\n\"karatsu.saga.jp\",\n\"kashima.saga.jp\",\n\"kitagata.saga.jp\",\n\"kitahata.saga.jp\",\n\"kiyama.saga.jp\",\n\"kouhoku.saga.jp\",\n\"kyuragi.saga.jp\",\n\"nishiarita.saga.jp\",\n\"ogi.saga.jp\",\n\"omachi.saga.jp\",\n\"ouchi.saga.jp\",\n\"saga.saga.jp\",\n\"shiroishi.saga.jp\",\n\"taku.saga.jp\",\n\"tara.saga.jp\",\n\"tosu.saga.jp\",\n\"yoshinogari.saga.jp\",\n\"arakawa.saitama.jp\",\n\"asaka.saitama.jp\",\n\"chichibu.saitama.jp\",\n\"fujimi.saitama.jp\",\n\"fujimino.saitama.jp\",\n\"fukaya.saitama.jp\",\n\"hanno.saitama.jp\",\n\"hanyu.saitama.jp\",\n\"hasuda.saitama.jp\",\n\"hatogaya.saitama.jp\",\n\"hatoyama.saitama.jp\",\n\"hidaka.saitama.jp\",\n\"higashichichibu.saitama.jp\",\n\"higashimatsuyama.saitama.jp\",\n\"honjo.saitama.jp\",\n\"ina.saitama.jp\",\n\"iruma.saitama.jp\",\n\"iwatsuki.saitama.jp\",\n\"kamiizumi.saitama.jp\",\n\"kamikawa.saitama.jp\",\n\"kamisato.saitama.jp\",\n\"kasukabe.saitama.jp\",\n\"kawagoe.saitama.jp\",\n\"kawaguchi.saitama.jp\",\n\"kawajima.saitama.jp\",\n\"kazo.saitama.jp\",\n\"kitamoto.saitama.jp\",\n\"koshigaya.saitama.jp\",\n\"kounosu.saitama.jp\",\n\"kuki.saitama.jp\",\n\"kumagaya.saitama.jp\",\n\"matsubushi.saitama.jp\",\n\"minano.saitama.jp\",\n\"misato.saitama.jp\",\n\"miyashiro.saitama.jp\",\n\"miyoshi.saitama.jp\",\n\"moroyama.saitama.jp\",\n\"nagatoro.saitama.jp\",\n\"namegawa.saitama.jp\",\n\"niiza.saitama.jp\",\n\"ogano.saitama.jp\",\n\"ogawa.saitama.jp\",\n\"ogose.saitama.jp\",\n\"okegawa.saitama.jp\",\n\"omiya.saitama.jp\",\n\"otaki.saitama.jp\",\n\"ranzan.saitama.jp\",\n\"ryokami.saitama.jp\",\n\"saitama.saitama.jp\",\n\"sakado.saitama.jp\",\n\"satte.saitama.jp\",\n\"sayama.saitama.jp\",\n\"shiki.saitama.jp\",\n\"shiraoka.saitama.jp\",\n\"soka.saitama.jp\",\n\"sugito.saitama.jp\",\n\"toda.saitama.jp\",\n\"tokigawa.saitama.jp\",\n\"tokorozawa.saitama.jp\",\n\"tsurugashima.saitama.jp\",\n\"urawa.saitama.jp\",\n\"warabi.saitama.jp\",\n\"yashio.saitama.jp\",\n\"yokoze.saitama.jp\",\n\"yono.saitama.jp\",\n\"yorii.saitama.jp\",\n\"yoshida.saitama.jp\",\n\"yoshikawa.saitama.jp\",\n\"yoshimi.saitama.jp\",\n\"aisho.shiga.jp\",\n\"gamo.shiga.jp\",\n\"higashiomi.shiga.jp\",\n\"hikone.shiga.jp\",\n\"koka.shiga.jp\",\n\"konan.shiga.jp\",\n\"kosei.shiga.jp\",\n\"koto.shiga.jp\",\n\"kusatsu.shiga.jp\",\n\"maibara.shiga.jp\",\n\"moriyama.shiga.jp\",\n\"nagahama.shiga.jp\",\n\"nishiazai.shiga.jp\",\n\"notogawa.shiga.jp\",\n\"omihachiman.shiga.jp\",\n\"otsu.shiga.jp\",\n\"ritto.shiga.jp\",\n\"ryuoh.shiga.jp\",\n\"takashima.shiga.jp\",\n\"takatsuki.shiga.jp\",\n\"torahime.shiga.jp\",\n\"toyosato.shiga.jp\",\n\"yasu.shiga.jp\",\n\"akagi.shimane.jp\",\n\"ama.shimane.jp\",\n\"gotsu.shimane.jp\",\n\"hamada.shimane.jp\",\n\"higashiizumo.shimane.jp\",\n\"hikawa.shimane.jp\",\n\"hikimi.shimane.jp\",\n\"izumo.shimane.jp\",\n\"kakinoki.shimane.jp\",\n\"masuda.shimane.jp\",\n\"matsue.shimane.jp\",\n\"misato.shimane.jp\",\n\"nishinoshima.shimane.jp\",\n\"ohda.shimane.jp\",\n\"okinoshima.shimane.jp\",\n\"okuizumo.shimane.jp\",\n\"shimane.shimane.jp\",\n\"tamayu.shimane.jp\",\n\"tsuwano.shimane.jp\",\n\"unnan.shimane.jp\",\n\"yakumo.shimane.jp\",\n\"yasugi.shimane.jp\",\n\"yatsuka.shimane.jp\",\n\"arai.shizuoka.jp\",\n\"atami.shizuoka.jp\",\n\"fuji.shizuoka.jp\",\n\"fujieda.shizuoka.jp\",\n\"fujikawa.shizuoka.jp\",\n\"fujinomiya.shizuoka.jp\",\n\"fukuroi.shizuoka.jp\",\n\"gotemba.shizuoka.jp\",\n\"haibara.shizuoka.jp\",\n\"hamamatsu.shizuoka.jp\",\n\"higashiizu.shizuoka.jp\",\n\"ito.shizuoka.jp\",\n\"iwata.shizuoka.jp\",\n\"izu.shizuoka.jp\",\n\"izunokuni.shizuoka.jp\",\n\"kakegawa.shizuoka.jp\",\n\"kannami.shizuoka.jp\",\n\"kawanehon.shizuoka.jp\",\n\"kawazu.shizuoka.jp\",\n\"kikugawa.shizuoka.jp\",\n\"kosai.shizuoka.jp\",\n\"makinohara.shizuoka.jp\",\n\"matsuzaki.shizuoka.jp\",\n\"minamiizu.shizuoka.jp\",\n\"mishima.shizuoka.jp\",\n\"morimachi.shizuoka.jp\",\n\"nishiizu.shizuoka.jp\",\n\"numazu.shizuoka.jp\",\n\"omaezaki.shizuoka.jp\",\n\"shimada.shizuoka.jp\",\n\"shimizu.shizuoka.jp\",\n\"shimoda.shizuoka.jp\",\n\"shizuoka.shizuoka.jp\",\n\"susono.shizuoka.jp\",\n\"yaizu.shizuoka.jp\",\n\"yoshida.shizuoka.jp\",\n\"ashikaga.tochigi.jp\",\n\"bato.tochigi.jp\",\n\"haga.tochigi.jp\",\n\"ichikai.tochigi.jp\",\n\"iwafune.tochigi.jp\",\n\"kaminokawa.tochigi.jp\",\n\"kanuma.tochigi.jp\",\n\"karasuyama.tochigi.jp\",\n\"kuroiso.tochigi.jp\",\n\"mashiko.tochigi.jp\",\n\"mibu.tochigi.jp\",\n\"moka.tochigi.jp\",\n\"motegi.tochigi.jp\",\n\"nasu.tochigi.jp\",\n\"nasushiobara.tochigi.jp\",\n\"nikko.tochigi.jp\",\n\"nishikata.tochigi.jp\",\n\"nogi.tochigi.jp\",\n\"ohira.tochigi.jp\",\n\"ohtawara.tochigi.jp\",\n\"oyama.tochigi.jp\",\n\"sakura.tochigi.jp\",\n\"sano.tochigi.jp\",\n\"shimotsuke.tochigi.jp\",\n\"shioya.tochigi.jp\",\n\"takanezawa.tochigi.jp\",\n\"tochigi.tochigi.jp\",\n\"tsuga.tochigi.jp\",\n\"ujiie.tochigi.jp\",\n\"utsunomiya.tochigi.jp\",\n\"yaita.tochigi.jp\",\n\"aizumi.tokushima.jp\",\n\"anan.tokushima.jp\",\n\"ichiba.tokushima.jp\",\n\"itano.tokushima.jp\",\n\"kainan.tokushima.jp\",\n\"komatsushima.tokushima.jp\",\n\"matsushige.tokushima.jp\",\n\"mima.tokushima.jp\",\n\"minami.tokushima.jp\",\n\"miyoshi.tokushima.jp\",\n\"mugi.tokushima.jp\",\n\"nakagawa.tokushima.jp\",\n\"naruto.tokushima.jp\",\n\"sanagochi.tokushima.jp\",\n\"shishikui.tokushima.jp\",\n\"tokushima.tokushima.jp\",\n\"wajiki.tokushima.jp\",\n\"adachi.tokyo.jp\",\n\"akiruno.tokyo.jp\",\n\"akishima.tokyo.jp\",\n\"aogashima.tokyo.jp\",\n\"arakawa.tokyo.jp\",\n\"bunkyo.tokyo.jp\",\n\"chiyoda.tokyo.jp\",\n\"chofu.tokyo.jp\",\n\"chuo.tokyo.jp\",\n\"edogawa.tokyo.jp\",\n\"fuchu.tokyo.jp\",\n\"fussa.tokyo.jp\",\n\"hachijo.tokyo.jp\",\n\"hachioji.tokyo.jp\",\n\"hamura.tokyo.jp\",\n\"higashikurume.tokyo.jp\",\n\"higashimurayama.tokyo.jp\",\n\"higashiyamato.tokyo.jp\",\n\"hino.tokyo.jp\",\n\"hinode.tokyo.jp\",\n\"hinohara.tokyo.jp\",\n\"inagi.tokyo.jp\",\n\"itabashi.tokyo.jp\",\n\"katsushika.tokyo.jp\",\n\"kita.tokyo.jp\",\n\"kiyose.tokyo.jp\",\n\"kodaira.tokyo.jp\",\n\"koganei.tokyo.jp\",\n\"kokubunji.tokyo.jp\",\n\"komae.tokyo.jp\",\n\"koto.tokyo.jp\",\n\"kouzushima.tokyo.jp\",\n\"kunitachi.tokyo.jp\",\n\"machida.tokyo.jp\",\n\"meguro.tokyo.jp\",\n\"minato.tokyo.jp\",\n\"mitaka.tokyo.jp\",\n\"mizuho.tokyo.jp\",\n\"musashimurayama.tokyo.jp\",\n\"musashino.tokyo.jp\",\n\"nakano.tokyo.jp\",\n\"nerima.tokyo.jp\",\n\"ogasawara.tokyo.jp\",\n\"okutama.tokyo.jp\",\n\"ome.tokyo.jp\",\n\"oshima.tokyo.jp\",\n\"ota.tokyo.jp\",\n\"setagaya.tokyo.jp\",\n\"shibuya.tokyo.jp\",\n\"shinagawa.tokyo.jp\",\n\"shinjuku.tokyo.jp\",\n\"suginami.tokyo.jp\",\n\"sumida.tokyo.jp\",\n\"tachikawa.tokyo.jp\",\n\"taito.tokyo.jp\",\n\"tama.tokyo.jp\",\n\"toshima.tokyo.jp\",\n\"chizu.tottori.jp\",\n\"hino.tottori.jp\",\n\"kawahara.tottori.jp\",\n\"koge.tottori.jp\",\n\"kotoura.tottori.jp\",\n\"misasa.tottori.jp\",\n\"nanbu.tottori.jp\",\n\"nichinan.tottori.jp\",\n\"sakaiminato.tottori.jp\",\n\"tottori.tottori.jp\",\n\"wakasa.tottori.jp\",\n\"yazu.tottori.jp\",\n\"yonago.tottori.jp\",\n\"asahi.toyama.jp\",\n\"fuchu.toyama.jp\",\n\"fukumitsu.toyama.jp\",\n\"funahashi.toyama.jp\",\n\"himi.toyama.jp\",\n\"imizu.toyama.jp\",\n\"inami.toyama.jp\",\n\"johana.toyama.jp\",\n\"kamiichi.toyama.jp\",\n\"kurobe.toyama.jp\",\n\"nakaniikawa.toyama.jp\",\n\"namerikawa.toyama.jp\",\n\"nanto.toyama.jp\",\n\"nyuzen.toyama.jp\",\n\"oyabe.toyama.jp\",\n\"taira.toyama.jp\",\n\"takaoka.toyama.jp\",\n\"tateyama.toyama.jp\",\n\"toga.toyama.jp\",\n\"tonami.toyama.jp\",\n\"toyama.toyama.jp\",\n\"unazuki.toyama.jp\",\n\"uozu.toyama.jp\",\n\"yamada.toyama.jp\",\n\"arida.wakayama.jp\",\n\"aridagawa.wakayama.jp\",\n\"gobo.wakayama.jp\",\n\"hashimoto.wakayama.jp\",\n\"hidaka.wakayama.jp\",\n\"hirogawa.wakayama.jp\",\n\"inami.wakayama.jp\",\n\"iwade.wakayama.jp\",\n\"kainan.wakayama.jp\",\n\"kamitonda.wakayama.jp\",\n\"katsuragi.wakayama.jp\",\n\"kimino.wakayama.jp\",\n\"kinokawa.wakayama.jp\",\n\"kitayama.wakayama.jp\",\n\"koya.wakayama.jp\",\n\"koza.wakayama.jp\",\n\"kozagawa.wakayama.jp\",\n\"kudoyama.wakayama.jp\",\n\"kushimoto.wakayama.jp\",\n\"mihama.wakayama.jp\",\n\"misato.wakayama.jp\",\n\"nachikatsuura.wakayama.jp\",\n\"shingu.wakayama.jp\",\n\"shirahama.wakayama.jp\",\n\"taiji.wakayama.jp\",\n\"tanabe.wakayama.jp\",\n\"wakayama.wakayama.jp\",\n\"yuasa.wakayama.jp\",\n\"yura.wakayama.jp\",\n\"asahi.yamagata.jp\",\n\"funagata.yamagata.jp\",\n\"higashine.yamagata.jp\",\n\"iide.yamagata.jp\",\n\"kahoku.yamagata.jp\",\n\"kaminoyama.yamagata.jp\",\n\"kaneyama.yamagata.jp\",\n\"kawanishi.yamagata.jp\",\n\"mamurogawa.yamagata.jp\",\n\"mikawa.yamagata.jp\",\n\"murayama.yamagata.jp\",\n\"nagai.yamagata.jp\",\n\"nakayama.yamagata.jp\",\n\"nanyo.yamagata.jp\",\n\"nishikawa.yamagata.jp\",\n\"obanazawa.yamagata.jp\",\n\"oe.yamagata.jp\",\n\"oguni.yamagata.jp\",\n\"ohkura.yamagata.jp\",\n\"oishida.yamagata.jp\",\n\"sagae.yamagata.jp\",\n\"sakata.yamagata.jp\",\n\"sakegawa.yamagata.jp\",\n\"shinjo.yamagata.jp\",\n\"shirataka.yamagata.jp\",\n\"shonai.yamagata.jp\",\n\"takahata.yamagata.jp\",\n\"tendo.yamagata.jp\",\n\"tozawa.yamagata.jp\",\n\"tsuruoka.yamagata.jp\",\n\"yamagata.yamagata.jp\",\n\"yamanobe.yamagata.jp\",\n\"yonezawa.yamagata.jp\",\n\"yuza.yamagata.jp\",\n\"abu.yamaguchi.jp\",\n\"hagi.yamaguchi.jp\",\n\"hikari.yamaguchi.jp\",\n\"hofu.yamaguchi.jp\",\n\"iwakuni.yamaguchi.jp\",\n\"kudamatsu.yamaguchi.jp\",\n\"mitou.yamaguchi.jp\",\n\"nagato.yamaguchi.jp\",\n\"oshima.yamaguchi.jp\",\n\"shimonoseki.yamaguchi.jp\",\n\"shunan.yamaguchi.jp\",\n\"tabuse.yamaguchi.jp\",\n\"tokuyama.yamaguchi.jp\",\n\"toyota.yamaguchi.jp\",\n\"ube.yamaguchi.jp\",\n\"yuu.yamaguchi.jp\",\n\"chuo.yamanashi.jp\",\n\"doshi.yamanashi.jp\",\n\"fuefuki.yamanashi.jp\",\n\"fujikawa.yamanashi.jp\",\n\"fujikawaguchiko.yamanashi.jp\",\n\"fujiyoshida.yamanashi.jp\",\n\"hayakawa.yamanashi.jp\",\n\"hokuto.yamanashi.jp\",\n\"ichikawamisato.yamanashi.jp\",\n\"kai.yamanashi.jp\",\n\"kofu.yamanashi.jp\",\n\"koshu.yamanashi.jp\",\n\"kosuge.yamanashi.jp\",\n\"minami-alps.yamanashi.jp\",\n\"minobu.yamanashi.jp\",\n\"nakamichi.yamanashi.jp\",\n\"nanbu.yamanashi.jp\",\n\"narusawa.yamanashi.jp\",\n\"nirasaki.yamanashi.jp\",\n\"nishikatsura.yamanashi.jp\",\n\"oshino.yamanashi.jp\",\n\"otsuki.yamanashi.jp\",\n\"showa.yamanashi.jp\",\n\"tabayama.yamanashi.jp\",\n\"tsuru.yamanashi.jp\",\n\"uenohara.yamanashi.jp\",\n\"yamanakako.yamanashi.jp\",\n\"yamanashi.yamanashi.jp\",\n\"ke\",\n\"ac.ke\",\n\"co.ke\",\n\"go.ke\",\n\"info.ke\",\n\"me.ke\",\n\"mobi.ke\",\n\"ne.ke\",\n\"or.ke\",\n\"sc.ke\",\n\"kg\",\n\"org.kg\",\n\"net.kg\",\n\"com.kg\",\n\"edu.kg\",\n\"gov.kg\",\n\"mil.kg\",\n\"*.kh\",\n\"ki\",\n\"edu.ki\",\n\"biz.ki\",\n\"net.ki\",\n\"org.ki\",\n\"gov.ki\",\n\"info.ki\",\n\"com.ki\",\n\"km\",\n\"org.km\",\n\"nom.km\",\n\"gov.km\",\n\"prd.km\",\n\"tm.km\",\n\"edu.km\",\n\"mil.km\",\n\"ass.km\",\n\"com.km\",\n\"coop.km\",\n\"asso.km\",\n\"presse.km\",\n\"medecin.km\",\n\"notaires.km\",\n\"pharmaciens.km\",\n\"veterinaire.km\",\n\"gouv.km\",\n\"kn\",\n\"net.kn\",\n\"org.kn\",\n\"edu.kn\",\n\"gov.kn\",\n\"kp\",\n\"com.kp\",\n\"edu.kp\",\n\"gov.kp\",\n\"org.kp\",\n\"rep.kp\",\n\"tra.kp\",\n\"kr\",\n\"ac.kr\",\n\"co.kr\",\n\"es.kr\",\n\"go.kr\",\n\"hs.kr\",\n\"kg.kr\",\n\"mil.kr\",\n\"ms.kr\",\n\"ne.kr\",\n\"or.kr\",\n\"pe.kr\",\n\"re.kr\",\n\"sc.kr\",\n\"busan.kr\",\n\"chungbuk.kr\",\n\"chungnam.kr\",\n\"daegu.kr\",\n\"daejeon.kr\",\n\"gangwon.kr\",\n\"gwangju.kr\",\n\"gyeongbuk.kr\",\n\"gyeonggi.kr\",\n\"gyeongnam.kr\",\n\"incheon.kr\",\n\"jeju.kr\",\n\"jeonbuk.kr\",\n\"jeonnam.kr\",\n\"seoul.kr\",\n\"ulsan.kr\",\n\"kw\",\n\"com.kw\",\n\"edu.kw\",\n\"emb.kw\",\n\"gov.kw\",\n\"ind.kw\",\n\"net.kw\",\n\"org.kw\",\n\"ky\",\n\"com.ky\",\n\"edu.ky\",\n\"net.ky\",\n\"org.ky\",\n\"kz\",\n\"org.kz\",\n\"edu.kz\",\n\"net.kz\",\n\"gov.kz\",\n\"mil.kz\",\n\"com.kz\",\n\"la\",\n\"int.la\",\n\"net.la\",\n\"info.la\",\n\"edu.la\",\n\"gov.la\",\n\"per.la\",\n\"com.la\",\n\"org.la\",\n\"lb\",\n\"com.lb\",\n\"edu.lb\",\n\"gov.lb\",\n\"net.lb\",\n\"org.lb\",\n\"lc\",\n\"com.lc\",\n\"net.lc\",\n\"co.lc\",\n\"org.lc\",\n\"edu.lc\",\n\"gov.lc\",\n\"li\",\n\"lk\",\n\"gov.lk\",\n\"sch.lk\",\n\"net.lk\",\n\"int.lk\",\n\"com.lk\",\n\"org.lk\",\n\"edu.lk\",\n\"ngo.lk\",\n\"soc.lk\",\n\"web.lk\",\n\"ltd.lk\",\n\"assn.lk\",\n\"grp.lk\",\n\"hotel.lk\",\n\"ac.lk\",\n\"lr\",\n\"com.lr\",\n\"edu.lr\",\n\"gov.lr\",\n\"org.lr\",\n\"net.lr\",\n\"ls\",\n\"ac.ls\",\n\"biz.ls\",\n\"co.ls\",\n\"edu.ls\",\n\"gov.ls\",\n\"info.ls\",\n\"net.ls\",\n\"org.ls\",\n\"sc.ls\",\n\"lt\",\n\"gov.lt\",\n\"lu\",\n\"lv\",\n\"com.lv\",\n\"edu.lv\",\n\"gov.lv\",\n\"org.lv\",\n\"mil.lv\",\n\"id.lv\",\n\"net.lv\",\n\"asn.lv\",\n\"conf.lv\",\n\"ly\",\n\"com.ly\",\n\"net.ly\",\n\"gov.ly\",\n\"plc.ly\",\n\"edu.ly\",\n\"sch.ly\",\n\"med.ly\",\n\"org.ly\",\n\"id.ly\",\n\"ma\",\n\"co.ma\",\n\"net.ma\",\n\"gov.ma\",\n\"org.ma\",\n\"ac.ma\",\n\"press.ma\",\n\"mc\",\n\"tm.mc\",\n\"asso.mc\",\n\"md\",\n\"me\",\n\"co.me\",\n\"net.me\",\n\"org.me\",\n\"edu.me\",\n\"ac.me\",\n\"gov.me\",\n\"its.me\",\n\"priv.me\",\n\"mg\",\n\"org.mg\",\n\"nom.mg\",\n\"gov.mg\",\n\"prd.mg\",\n\"tm.mg\",\n\"edu.mg\",\n\"mil.mg\",\n\"com.mg\",\n\"co.mg\",\n\"mh\",\n\"mil\",\n\"mk\",\n\"com.mk\",\n\"org.mk\",\n\"net.mk\",\n\"edu.mk\",\n\"gov.mk\",\n\"inf.mk\",\n\"name.mk\",\n\"ml\",\n\"com.ml\",\n\"edu.ml\",\n\"gouv.ml\",\n\"gov.ml\",\n\"net.ml\",\n\"org.ml\",\n\"presse.ml\",\n\"*.mm\",\n\"mn\",\n\"gov.mn\",\n\"edu.mn\",\n\"org.mn\",\n\"mo\",\n\"com.mo\",\n\"net.mo\",\n\"org.mo\",\n\"edu.mo\",\n\"gov.mo\",\n\"mobi\",\n\"mp\",\n\"mq\",\n\"mr\",\n\"gov.mr\",\n\"ms\",\n\"com.ms\",\n\"edu.ms\",\n\"gov.ms\",\n\"net.ms\",\n\"org.ms\",\n\"mt\",\n\"com.mt\",\n\"edu.mt\",\n\"net.mt\",\n\"org.mt\",\n\"mu\",\n\"com.mu\",\n\"net.mu\",\n\"org.mu\",\n\"gov.mu\",\n\"ac.mu\",\n\"co.mu\",\n\"or.mu\",\n\"museum\",\n\"academy.museum\",\n\"agriculture.museum\",\n\"air.museum\",\n\"airguard.museum\",\n\"alabama.museum\",\n\"alaska.museum\",\n\"amber.museum\",\n\"ambulance.museum\",\n\"american.museum\",\n\"americana.museum\",\n\"americanantiques.museum\",\n\"americanart.museum\",\n\"amsterdam.museum\",\n\"and.museum\",\n\"annefrank.museum\",\n\"anthro.museum\",\n\"anthropology.museum\",\n\"antiques.museum\",\n\"aquarium.museum\",\n\"arboretum.museum\",\n\"archaeological.museum\",\n\"archaeology.museum\",\n\"architecture.museum\",\n\"art.museum\",\n\"artanddesign.museum\",\n\"artcenter.museum\",\n\"artdeco.museum\",\n\"arteducation.museum\",\n\"artgallery.museum\",\n\"arts.museum\",\n\"artsandcrafts.museum\",\n\"asmatart.museum\",\n\"assassination.museum\",\n\"assisi.museum\",\n\"association.museum\",\n\"astronomy.museum\",\n\"atlanta.museum\",\n\"austin.museum\",\n\"australia.museum\",\n\"automotive.museum\",\n\"aviation.museum\",\n\"axis.museum\",\n\"badajoz.museum\",\n\"baghdad.museum\",\n\"bahn.museum\",\n\"bale.museum\",\n\"baltimore.museum\",\n\"barcelona.museum\",\n\"baseball.museum\",\n\"basel.museum\",\n\"baths.museum\",\n\"bauern.museum\",\n\"beauxarts.museum\",\n\"beeldengeluid.museum\",\n\"bellevue.museum\",\n\"bergbau.museum\",\n\"berkeley.museum\",\n\"berlin.museum\",\n\"bern.museum\",\n\"bible.museum\",\n\"bilbao.museum\",\n\"bill.museum\",\n\"birdart.museum\",\n\"birthplace.museum\",\n\"bonn.museum\",\n\"boston.museum\",\n\"botanical.museum\",\n\"botanicalgarden.museum\",\n\"botanicgarden.museum\",\n\"botany.museum\",\n\"brandywinevalley.museum\",\n\"brasil.museum\",\n\"bristol.museum\",\n\"british.museum\",\n\"britishcolumbia.museum\",\n\"broadcast.museum\",\n\"brunel.museum\",\n\"brussel.museum\",\n\"brussels.museum\",\n\"bruxelles.museum\",\n\"building.museum\",\n\"burghof.museum\",\n\"bus.museum\",\n\"bushey.museum\",\n\"cadaques.museum\",\n\"california.museum\",\n\"cambridge.museum\",\n\"can.museum\",\n\"canada.museum\",\n\"capebreton.museum\",\n\"carrier.museum\",\n\"cartoonart.museum\",\n\"casadelamoneda.museum\",\n\"castle.museum\",\n\"castres.museum\",\n\"celtic.museum\",\n\"center.museum\",\n\"chattanooga.museum\",\n\"cheltenham.museum\",\n\"chesapeakebay.museum\",\n\"chicago.museum\",\n\"children.museum\",\n\"childrens.museum\",\n\"childrensgarden.museum\",\n\"chiropractic.museum\",\n\"chocolate.museum\",\n\"christiansburg.museum\",\n\"cincinnati.museum\",\n\"cinema.museum\",\n\"circus.museum\",\n\"civilisation.museum\",\n\"civilization.museum\",\n\"civilwar.museum\",\n\"clinton.museum\",\n\"clock.museum\",\n\"coal.museum\",\n\"coastaldefence.museum\",\n\"cody.museum\",\n\"coldwar.museum\",\n\"collection.museum\",\n\"colonialwilliamsburg.museum\",\n\"coloradoplateau.museum\",\n\"columbia.museum\",\n\"columbus.museum\",\n\"communication.museum\",\n\"communications.museum\",\n\"community.museum\",\n\"computer.museum\",\n\"computerhistory.museum\",\n\"comunica\u00E7\u00F5es.museum\",\n\"contemporary.museum\",\n\"contemporaryart.museum\",\n\"convent.museum\",\n\"copenhagen.museum\",\n\"corporation.museum\",\n\"correios-e-telecomunica\u00E7\u00F5es.museum\",\n\"corvette.museum\",\n\"costume.museum\",\n\"countryestate.museum\",\n\"county.museum\",\n\"crafts.museum\",\n\"cranbrook.museum\",\n\"creation.museum\",\n\"cultural.museum\",\n\"culturalcenter.museum\",\n\"culture.museum\",\n\"cyber.museum\",\n\"cymru.museum\",\n\"dali.museum\",\n\"dallas.museum\",\n\"database.museum\",\n\"ddr.museum\",\n\"decorativearts.museum\",\n\"delaware.museum\",\n\"delmenhorst.museum\",\n\"denmark.museum\",\n\"depot.museum\",\n\"design.museum\",\n\"detroit.museum\",\n\"dinosaur.museum\",\n\"discovery.museum\",\n\"dolls.museum\",\n\"donostia.museum\",\n\"durham.museum\",\n\"eastafrica.museum\",\n\"eastcoast.museum\",\n\"education.museum\",\n\"educational.museum\",\n\"egyptian.museum\",\n\"eisenbahn.museum\",\n\"elburg.museum\",\n\"elvendrell.museum\",\n\"embroidery.museum\",\n\"encyclopedic.museum\",\n\"england.museum\",\n\"entomology.museum\",\n\"environment.museum\",\n\"environmentalconservation.museum\",\n\"epilepsy.museum\",\n\"essex.museum\",\n\"estate.museum\",\n\"ethnology.museum\",\n\"exeter.museum\",\n\"exhibition.museum\",\n\"family.museum\",\n\"farm.museum\",\n\"farmequipment.museum\",\n\"farmers.museum\",\n\"farmstead.museum\",\n\"field.museum\",\n\"figueres.museum\",\n\"filatelia.museum\",\n\"film.museum\",\n\"fineart.museum\",\n\"finearts.museum\",\n\"finland.museum\",\n\"flanders.museum\",\n\"florida.museum\",\n\"force.museum\",\n\"fortmissoula.museum\",\n\"fortworth.museum\",\n\"foundation.museum\",\n\"francaise.museum\",\n\"frankfurt.museum\",\n\"franziskaner.museum\",\n\"freemasonry.museum\",\n\"freiburg.museum\",\n\"fribourg.museum\",\n\"frog.museum\",\n\"fundacio.museum\",\n\"furniture.museum\",\n\"gallery.museum\",\n\"garden.museum\",\n\"gateway.museum\",\n\"geelvinck.museum\",\n\"gemological.museum\",\n\"geology.museum\",\n\"georgia.museum\",\n\"giessen.museum\",\n\"glas.museum\",\n\"glass.museum\",\n\"gorge.museum\",\n\"grandrapids.museum\",\n\"graz.museum\",\n\"guernsey.museum\",\n\"halloffame.museum\",\n\"hamburg.museum\",\n\"handson.museum\",\n\"harvestcelebration.museum\",\n\"hawaii.museum\",\n\"health.museum\",\n\"heimatunduhren.museum\",\n\"hellas.museum\",\n\"helsinki.museum\",\n\"hembygdsforbund.museum\",\n\"heritage.museum\",\n\"histoire.museum\",\n\"historical.museum\",\n\"historicalsociety.museum\",\n\"historichouses.museum\",\n\"historisch.museum\",\n\"historisches.museum\",\n\"history.museum\",\n\"historyofscience.museum\",\n\"horology.museum\",\n\"house.museum\",\n\"humanities.museum\",\n\"illustration.museum\",\n\"imageandsound.museum\",\n\"indian.museum\",\n\"indiana.museum\",\n\"indianapolis.museum\",\n\"indianmarket.museum\",\n\"intelligence.museum\",\n\"interactive.museum\",\n\"iraq.museum\",\n\"iron.museum\",\n\"isleofman.museum\",\n\"jamison.museum\",\n\"jefferson.museum\",\n\"jerusalem.museum\",\n\"jewelry.museum\",\n\"jewish.museum\",\n\"jewishart.museum\",\n\"jfk.museum\",\n\"journalism.museum\",\n\"judaica.museum\",\n\"judygarland.museum\",\n\"juedisches.museum\",\n\"juif.museum\",\n\"karate.museum\",\n\"karikatur.museum\",\n\"kids.museum\",\n\"koebenhavn.museum\",\n\"koeln.museum\",\n\"kunst.museum\",\n\"kunstsammlung.museum\",\n\"kunstunddesign.museum\",\n\"labor.museum\",\n\"labour.museum\",\n\"lajolla.museum\",\n\"lancashire.museum\",\n\"landes.museum\",\n\"lans.museum\",\n\"l\u00E4ns.museum\",\n\"larsson.museum\",\n\"lewismiller.museum\",\n\"lincoln.museum\",\n\"linz.museum\",\n\"living.museum\",\n\"livinghistory.museum\",\n\"localhistory.museum\",\n\"london.museum\",\n\"losangeles.museum\",\n\"louvre.museum\",\n\"loyalist.museum\",\n\"lucerne.museum\",\n\"luxembourg.museum\",\n\"luzern.museum\",\n\"mad.museum\",\n\"madrid.museum\",\n\"mallorca.museum\",\n\"manchester.museum\",\n\"mansion.museum\",\n\"mansions.museum\",\n\"manx.museum\",\n\"marburg.museum\",\n\"maritime.museum\",\n\"maritimo.museum\",\n\"maryland.museum\",\n\"marylhurst.museum\",\n\"media.museum\",\n\"medical.museum\",\n\"medizinhistorisches.museum\",\n\"meeres.museum\",\n\"memorial.museum\",\n\"mesaverde.museum\",\n\"michigan.museum\",\n\"midatlantic.museum\",\n\"military.museum\",\n\"mill.museum\",\n\"miners.museum\",\n\"mining.museum\",\n\"minnesota.museum\",\n\"missile.museum\",\n\"missoula.museum\",\n\"modern.museum\",\n\"moma.museum\",\n\"money.museum\",\n\"monmouth.museum\",\n\"monticello.museum\",\n\"montreal.museum\",\n\"moscow.museum\",\n\"motorcycle.museum\",\n\"muenchen.museum\",\n\"muenster.museum\",\n\"mulhouse.museum\",\n\"muncie.museum\",\n\"museet.museum\",\n\"museumcenter.museum\",\n\"museumvereniging.museum\",\n\"music.museum\",\n\"national.museum\",\n\"nationalfirearms.museum\",\n\"nationalheritage.museum\",\n\"nativeamerican.museum\",\n\"naturalhistory.museum\",\n\"naturalhistorymuseum.museum\",\n\"naturalsciences.museum\",\n\"nature.museum\",\n\"naturhistorisches.museum\",\n\"natuurwetenschappen.museum\",\n\"naumburg.museum\",\n\"naval.museum\",\n\"nebraska.museum\",\n\"neues.museum\",\n\"newhampshire.museum\",\n\"newjersey.museum\",\n\"newmexico.museum\",\n\"newport.museum\",\n\"newspaper.museum\",\n\"newyork.museum\",\n\"niepce.museum\",\n\"norfolk.museum\",\n\"north.museum\",\n\"nrw.museum\",\n\"nyc.museum\",\n\"nyny.museum\",\n\"oceanographic.museum\",\n\"oceanographique.museum\",\n\"omaha.museum\",\n\"online.museum\",\n\"ontario.museum\",\n\"openair.museum\",\n\"oregon.museum\",\n\"oregontrail.museum\",\n\"otago.museum\",\n\"oxford.museum\",\n\"pacific.museum\",\n\"paderborn.museum\",\n\"palace.museum\",\n\"paleo.museum\",\n\"palmsprings.museum\",\n\"panama.museum\",\n\"paris.museum\",\n\"pasadena.museum\",\n\"pharmacy.museum\",\n\"philadelphia.museum\",\n\"philadelphiaarea.museum\",\n\"philately.museum\",\n\"phoenix.museum\",\n\"photography.museum\",\n\"pilots.museum\",\n\"pittsburgh.museum\",\n\"planetarium.museum\",\n\"plantation.museum\",\n\"plants.museum\",\n\"plaza.museum\",\n\"portal.museum\",\n\"portland.museum\",\n\"portlligat.museum\",\n\"posts-and-telecommunications.museum\",\n\"preservation.museum\",\n\"presidio.museum\",\n\"press.museum\",\n\"project.museum\",\n\"public.museum\",\n\"pubol.museum\",\n\"quebec.museum\",\n\"railroad.museum\",\n\"railway.museum\",\n\"research.museum\",\n\"resistance.museum\",\n\"riodejaneiro.museum\",\n\"rochester.museum\",\n\"rockart.museum\",\n\"roma.museum\",\n\"russia.museum\",\n\"saintlouis.museum\",\n\"salem.museum\",\n\"salvadordali.museum\",\n\"salzburg.museum\",\n\"sandiego.museum\",\n\"sanfrancisco.museum\",\n\"santabarbara.museum\",\n\"santacruz.museum\",\n\"santafe.museum\",\n\"saskatchewan.museum\",\n\"satx.museum\",\n\"savannahga.museum\",\n\"schlesisches.museum\",\n\"schoenbrunn.museum\",\n\"schokoladen.museum\",\n\"school.museum\",\n\"schweiz.museum\",\n\"science.museum\",\n\"scienceandhistory.museum\",\n\"scienceandindustry.museum\",\n\"sciencecenter.museum\",\n\"sciencecenters.museum\",\n\"science-fiction.museum\",\n\"sciencehistory.museum\",\n\"sciences.museum\",\n\"sciencesnaturelles.museum\",\n\"scotland.museum\",\n\"seaport.museum\",\n\"settlement.museum\",\n\"settlers.museum\",\n\"shell.museum\",\n\"sherbrooke.museum\",\n\"sibenik.museum\",\n\"silk.museum\",\n\"ski.museum\",\n\"skole.museum\",\n\"society.museum\",\n\"sologne.museum\",\n\"soundandvision.museum\",\n\"southcarolina.museum\",\n\"southwest.museum\",\n\"space.museum\",\n\"spy.museum\",\n\"square.museum\",\n\"stadt.museum\",\n\"stalbans.museum\",\n\"starnberg.museum\",\n\"state.museum\",\n\"stateofdelaware.museum\",\n\"station.museum\",\n\"steam.museum\",\n\"steiermark.museum\",\n\"stjohn.museum\",\n\"stockholm.museum\",\n\"stpetersburg.museum\",\n\"stuttgart.museum\",\n\"suisse.museum\",\n\"surgeonshall.museum\",\n\"surrey.museum\",\n\"svizzera.museum\",\n\"sweden.museum\",\n\"sydney.museum\",\n\"tank.museum\",\n\"tcm.museum\",\n\"technology.museum\",\n\"telekommunikation.museum\",\n\"television.museum\",\n\"texas.museum\",\n\"textile.museum\",\n\"theater.museum\",\n\"time.museum\",\n\"timekeeping.museum\",\n\"topology.museum\",\n\"torino.museum\",\n\"touch.museum\",\n\"town.museum\",\n\"transport.museum\",\n\"tree.museum\",\n\"trolley.museum\",\n\"trust.museum\",\n\"trustee.museum\",\n\"uhren.museum\",\n\"ulm.museum\",\n\"undersea.museum\",\n\"university.museum\",\n\"usa.museum\",\n\"usantiques.museum\",\n\"usarts.museum\",\n\"uscountryestate.museum\",\n\"usculture.museum\",\n\"usdecorativearts.museum\",\n\"usgarden.museum\",\n\"ushistory.museum\",\n\"ushuaia.museum\",\n\"uslivinghistory.museum\",\n\"utah.museum\",\n\"uvic.museum\",\n\"valley.museum\",\n\"vantaa.museum\",\n\"versailles.museum\",\n\"viking.museum\",\n\"village.museum\",\n\"virginia.museum\",\n\"virtual.museum\",\n\"virtuel.museum\",\n\"vlaanderen.museum\",\n\"volkenkunde.museum\",\n\"wales.museum\",\n\"wallonie.museum\",\n\"war.museum\",\n\"washingtondc.museum\",\n\"watchandclock.museum\",\n\"watch-and-clock.museum\",\n\"western.museum\",\n\"westfalen.museum\",\n\"whaling.museum\",\n\"wildlife.museum\",\n\"williamsburg.museum\",\n\"windmill.museum\",\n\"workshop.museum\",\n\"york.museum\",\n\"yorkshire.museum\",\n\"yosemite.museum\",\n\"youth.museum\",\n\"zoological.museum\",\n\"zoology.museum\",\n\"\u05D9\u05E8\u05D5\u05E9\u05DC\u05D9\u05DD.museum\",\n\"\u0438\u043A\u043E\u043C.museum\",\n\"mv\",\n\"aero.mv\",\n\"biz.mv\",\n\"com.mv\",\n\"coop.mv\",\n\"edu.mv\",\n\"gov.mv\",\n\"info.mv\",\n\"int.mv\",\n\"mil.mv\",\n\"museum.mv\",\n\"name.mv\",\n\"net.mv\",\n\"org.mv\",\n\"pro.mv\",\n\"mw\",\n\"ac.mw\",\n\"biz.mw\",\n\"co.mw\",\n\"com.mw\",\n\"coop.mw\",\n\"edu.mw\",\n\"gov.mw\",\n\"int.mw\",\n\"museum.mw\",\n\"net.mw\",\n\"org.mw\",\n\"mx\",\n\"com.mx\",\n\"org.mx\",\n\"gob.mx\",\n\"edu.mx\",\n\"net.mx\",\n\"my\",\n\"biz.my\",\n\"com.my\",\n\"edu.my\",\n\"gov.my\",\n\"mil.my\",\n\"name.my\",\n\"net.my\",\n\"org.my\",\n\"mz\",\n\"ac.mz\",\n\"adv.mz\",\n\"co.mz\",\n\"edu.mz\",\n\"gov.mz\",\n\"mil.mz\",\n\"net.mz\",\n\"org.mz\",\n\"na\",\n\"info.na\",\n\"pro.na\",\n\"name.na\",\n\"school.na\",\n\"or.na\",\n\"dr.na\",\n\"us.na\",\n\"mx.na\",\n\"ca.na\",\n\"in.na\",\n\"cc.na\",\n\"tv.na\",\n\"ws.na\",\n\"mobi.na\",\n\"co.na\",\n\"com.na\",\n\"org.na\",\n\"name\",\n\"nc\",\n\"asso.nc\",\n\"nom.nc\",\n\"ne\",\n\"net\",\n\"nf\",\n\"com.nf\",\n\"net.nf\",\n\"per.nf\",\n\"rec.nf\",\n\"web.nf\",\n\"arts.nf\",\n\"firm.nf\",\n\"info.nf\",\n\"other.nf\",\n\"store.nf\",\n\"ng\",\n\"com.ng\",\n\"edu.ng\",\n\"gov.ng\",\n\"i.ng\",\n\"mil.ng\",\n\"mobi.ng\",\n\"name.ng\",\n\"net.ng\",\n\"org.ng\",\n\"sch.ng\",\n\"ni\",\n\"ac.ni\",\n\"biz.ni\",\n\"co.ni\",\n\"com.ni\",\n\"edu.ni\",\n\"gob.ni\",\n\"in.ni\",\n\"info.ni\",\n\"int.ni\",\n\"mil.ni\",\n\"net.ni\",\n\"nom.ni\",\n\"org.ni\",\n\"web.ni\",\n\"nl\",\n\"no\",\n\"fhs.no\",\n\"vgs.no\",\n\"fylkesbibl.no\",\n\"folkebibl.no\",\n\"museum.no\",\n\"idrett.no\",\n\"priv.no\",\n\"mil.no\",\n\"stat.no\",\n\"dep.no\",\n\"kommune.no\",\n\"herad.no\",\n\"aa.no\",\n\"ah.no\",\n\"bu.no\",\n\"fm.no\",\n\"hl.no\",\n\"hm.no\",\n\"jan-mayen.no\",\n\"mr.no\",\n\"nl.no\",\n\"nt.no\",\n\"of.no\",\n\"ol.no\",\n\"oslo.no\",\n\"rl.no\",\n\"sf.no\",\n\"st.no\",\n\"svalbard.no\",\n\"tm.no\",\n\"tr.no\",\n\"va.no\",\n\"vf.no\",\n\"gs.aa.no\",\n\"gs.ah.no\",\n\"gs.bu.no\",\n\"gs.fm.no\",\n\"gs.hl.no\",\n\"gs.hm.no\",\n\"gs.jan-mayen.no\",\n\"gs.mr.no\",\n\"gs.nl.no\",\n\"gs.nt.no\",\n\"gs.of.no\",\n\"gs.ol.no\",\n\"gs.oslo.no\",\n\"gs.rl.no\",\n\"gs.sf.no\",\n\"gs.st.no\",\n\"gs.svalbard.no\",\n\"gs.tm.no\",\n\"gs.tr.no\",\n\"gs.va.no\",\n\"gs.vf.no\",\n\"akrehamn.no\",\n\"\u00E5krehamn.no\",\n\"algard.no\",\n\"\u00E5lg\u00E5rd.no\",\n\"arna.no\",\n\"brumunddal.no\",\n\"bryne.no\",\n\"bronnoysund.no\",\n\"br\u00F8nn\u00F8ysund.no\",\n\"drobak.no\",\n\"dr\u00F8bak.no\",\n\"egersund.no\",\n\"fetsund.no\",\n\"floro.no\",\n\"flor\u00F8.no\",\n\"fredrikstad.no\",\n\"hokksund.no\",\n\"honefoss.no\",\n\"h\u00F8nefoss.no\",\n\"jessheim.no\",\n\"jorpeland.no\",\n\"j\u00F8rpeland.no\",\n\"kirkenes.no\",\n\"kopervik.no\",\n\"krokstadelva.no\",\n\"langevag.no\",\n\"langev\u00E5g.no\",\n\"leirvik.no\",\n\"mjondalen.no\",\n\"mj\u00F8ndalen.no\",\n\"mo-i-rana.no\",\n\"mosjoen.no\",\n\"mosj\u00F8en.no\",\n\"nesoddtangen.no\",\n\"orkanger.no\",\n\"osoyro.no\",\n\"os\u00F8yro.no\",\n\"raholt.no\",\n\"r\u00E5holt.no\",\n\"sandnessjoen.no\",\n\"sandnessj\u00F8en.no\",\n\"skedsmokorset.no\",\n\"slattum.no\",\n\"spjelkavik.no\",\n\"stathelle.no\",\n\"stavern.no\",\n\"stjordalshalsen.no\",\n\"stj\u00F8rdalshalsen.no\",\n\"tananger.no\",\n\"tranby.no\",\n\"vossevangen.no\",\n\"afjord.no\",\n\"\u00E5fjord.no\",\n\"agdenes.no\",\n\"al.no\",\n\"\u00E5l.no\",\n\"alesund.no\",\n\"\u00E5lesund.no\",\n\"alstahaug.no\",\n\"alta.no\",\n\"\u00E1lt\u00E1.no\",\n\"alaheadju.no\",\n\"\u00E1laheadju.no\",\n\"alvdal.no\",\n\"amli.no\",\n\"\u00E5mli.no\",\n\"amot.no\",\n\"\u00E5mot.no\",\n\"andebu.no\",\n\"andoy.no\",\n\"and\u00F8y.no\",\n\"andasuolo.no\",\n\"ardal.no\",\n\"\u00E5rdal.no\",\n\"aremark.no\",\n\"arendal.no\",\n\"\u00E5s.no\",\n\"aseral.no\",\n\"\u00E5seral.no\",\n\"asker.no\",\n\"askim.no\",\n\"askvoll.no\",\n\"askoy.no\",\n\"ask\u00F8y.no\",\n\"asnes.no\",\n\"\u00E5snes.no\",\n\"audnedaln.no\",\n\"aukra.no\",\n\"aure.no\",\n\"aurland.no\",\n\"aurskog-holand.no\",\n\"aurskog-h\u00F8land.no\",\n\"austevoll.no\",\n\"austrheim.no\",\n\"averoy.no\",\n\"aver\u00F8y.no\",\n\"balestrand.no\",\n\"ballangen.no\",\n\"balat.no\",\n\"b\u00E1l\u00E1t.no\",\n\"balsfjord.no\",\n\"bahccavuotna.no\",\n\"b\u00E1hccavuotna.no\",\n\"bamble.no\",\n\"bardu.no\",\n\"beardu.no\",\n\"beiarn.no\",\n\"bajddar.no\",\n\"b\u00E1jddar.no\",\n\"baidar.no\",\n\"b\u00E1id\u00E1r.no\",\n\"berg.no\",\n\"bergen.no\",\n\"berlevag.no\",\n\"berlev\u00E5g.no\",\n\"bearalvahki.no\",\n\"bearalv\u00E1hki.no\",\n\"bindal.no\",\n\"birkenes.no\",\n\"bjarkoy.no\",\n\"bjark\u00F8y.no\",\n\"bjerkreim.no\",\n\"bjugn.no\",\n\"bodo.no\",\n\"bod\u00F8.no\",\n\"badaddja.no\",\n\"b\u00E5d\u00E5ddj\u00E5.no\",\n\"budejju.no\",\n\"bokn.no\",\n\"bremanger.no\",\n\"bronnoy.no\",\n\"br\u00F8nn\u00F8y.no\",\n\"bygland.no\",\n\"bykle.no\",\n\"barum.no\",\n\"b\u00E6rum.no\",\n\"bo.telemark.no\",\n\"b\u00F8.telemark.no\",\n\"bo.nordland.no\",\n\"b\u00F8.nordland.no\",\n\"bievat.no\",\n\"biev\u00E1t.no\",\n\"bomlo.no\",\n\"b\u00F8mlo.no\",\n\"batsfjord.no\",\n\"b\u00E5tsfjord.no\",\n\"bahcavuotna.no\",\n\"b\u00E1hcavuotna.no\",\n\"dovre.no\",\n\"drammen.no\",\n\"drangedal.no\",\n\"dyroy.no\",\n\"dyr\u00F8y.no\",\n\"donna.no\",\n\"d\u00F8nna.no\",\n\"eid.no\",\n\"eidfjord.no\",\n\"eidsberg.no\",\n\"eidskog.no\",\n\"eidsvoll.no\",\n\"eigersund.no\",\n\"elverum.no\",\n\"enebakk.no\",\n\"engerdal.no\",\n\"etne.no\",\n\"etnedal.no\",\n\"evenes.no\",\n\"evenassi.no\",\n\"even\u00E1\u0161\u0161i.no\",\n\"evje-og-hornnes.no\",\n\"farsund.no\",\n\"fauske.no\",\n\"fuossko.no\",\n\"fuoisku.no\",\n\"fedje.no\",\n\"fet.no\",\n\"finnoy.no\",\n\"finn\u00F8y.no\",\n\"fitjar.no\",\n\"fjaler.no\",\n\"fjell.no\",\n\"flakstad.no\",\n\"flatanger.no\",\n\"flekkefjord.no\",\n\"flesberg.no\",\n\"flora.no\",\n\"fla.no\",\n\"fl\u00E5.no\",\n\"folldal.no\",\n\"forsand.no\",\n\"fosnes.no\",\n\"frei.no\",\n\"frogn.no\",\n\"froland.no\",\n\"frosta.no\",\n\"frana.no\",\n\"fr\u00E6na.no\",\n\"froya.no\",\n\"fr\u00F8ya.no\",\n\"fusa.no\",\n\"fyresdal.no\",\n\"forde.no\",\n\"f\u00F8rde.no\",\n\"gamvik.no\",\n\"gangaviika.no\",\n\"g\u00E1\u014Bgaviika.no\",\n\"gaular.no\",\n\"gausdal.no\",\n\"gildeskal.no\",\n\"gildesk\u00E5l.no\",\n\"giske.no\",\n\"gjemnes.no\",\n\"gjerdrum.no\",\n\"gjerstad.no\",\n\"gjesdal.no\",\n\"gjovik.no\",\n\"gj\u00F8vik.no\",\n\"gloppen.no\",\n\"gol.no\",\n\"gran.no\",\n\"grane.no\",\n\"granvin.no\",\n\"gratangen.no\",\n\"grimstad.no\",\n\"grong.no\",\n\"kraanghke.no\",\n\"kr\u00E5anghke.no\",\n\"grue.no\",\n\"gulen.no\",\n\"hadsel.no\",\n\"halden.no\",\n\"halsa.no\",\n\"hamar.no\",\n\"hamaroy.no\",\n\"habmer.no\",\n\"h\u00E1bmer.no\",\n\"hapmir.no\",\n\"h\u00E1pmir.no\",\n\"hammerfest.no\",\n\"hammarfeasta.no\",\n\"h\u00E1mm\u00E1rfeasta.no\",\n\"haram.no\",\n\"hareid.no\",\n\"harstad.no\",\n\"hasvik.no\",\n\"aknoluokta.no\",\n\"\u00E1k\u014Boluokta.no\",\n\"hattfjelldal.no\",\n\"aarborte.no\",\n\"haugesund.no\",\n\"hemne.no\",\n\"hemnes.no\",\n\"hemsedal.no\",\n\"heroy.more-og-romsdal.no\",\n\"her\u00F8y.m\u00F8re-og-romsdal.no\",\n\"heroy.nordland.no\",\n\"her\u00F8y.nordland.no\",\n\"hitra.no\",\n\"hjartdal.no\",\n\"hjelmeland.no\",\n\"hobol.no\",\n\"hob\u00F8l.no\",\n\"hof.no\",\n\"hol.no\",\n\"hole.no\",\n\"holmestrand.no\",\n\"holtalen.no\",\n\"holt\u00E5len.no\",\n\"hornindal.no\",\n\"horten.no\",\n\"hurdal.no\",\n\"hurum.no\",\n\"hvaler.no\",\n\"hyllestad.no\",\n\"hagebostad.no\",\n\"h\u00E6gebostad.no\",\n\"hoyanger.no\",\n\"h\u00F8yanger.no\",\n\"hoylandet.no\",\n\"h\u00F8ylandet.no\",\n\"ha.no\",\n\"h\u00E5.no\",\n\"ibestad.no\",\n\"inderoy.no\",\n\"inder\u00F8y.no\",\n\"iveland.no\",\n\"jevnaker.no\",\n\"jondal.no\",\n\"jolster.no\",\n\"j\u00F8lster.no\",\n\"karasjok.no\",\n\"karasjohka.no\",\n\"k\u00E1r\u00E1\u0161johka.no\",\n\"karlsoy.no\",\n\"galsa.no\",\n\"g\u00E1ls\u00E1.no\",\n\"karmoy.no\",\n\"karm\u00F8y.no\",\n\"kautokeino.no\",\n\"guovdageaidnu.no\",\n\"klepp.no\",\n\"klabu.no\",\n\"kl\u00E6bu.no\",\n\"kongsberg.no\",\n\"kongsvinger.no\",\n\"kragero.no\",\n\"krager\u00F8.no\",\n\"kristiansand.no\",\n\"kristiansund.no\",\n\"krodsherad.no\",\n\"kr\u00F8dsherad.no\",\n\"kvalsund.no\",\n\"rahkkeravju.no\",\n\"r\u00E1hkker\u00E1vju.no\",\n\"kvam.no\",\n\"kvinesdal.no\",\n\"kvinnherad.no\",\n\"kviteseid.no\",\n\"kvitsoy.no\",\n\"kvits\u00F8y.no\",\n\"kvafjord.no\",\n\"kv\u00E6fjord.no\",\n\"giehtavuoatna.no\",\n\"kvanangen.no\",\n\"kv\u00E6nangen.no\",\n\"navuotna.no\",\n\"n\u00E1vuotna.no\",\n\"kafjord.no\",\n\"k\u00E5fjord.no\",\n\"gaivuotna.no\",\n\"g\u00E1ivuotna.no\",\n\"larvik.no\",\n\"lavangen.no\",\n\"lavagis.no\",\n\"loabat.no\",\n\"loab\u00E1t.no\",\n\"lebesby.no\",\n\"davvesiida.no\",\n\"leikanger.no\",\n\"leirfjord.no\",\n\"leka.no\",\n\"leksvik.no\",\n\"lenvik.no\",\n\"leangaviika.no\",\n\"lea\u014Bgaviika.no\",\n\"lesja.no\",\n\"levanger.no\",\n\"lier.no\",\n\"lierne.no\",\n\"lillehammer.no\",\n\"lillesand.no\",\n\"lindesnes.no\",\n\"lindas.no\",\n\"lind\u00E5s.no\",\n\"lom.no\",\n\"loppa.no\",\n\"lahppi.no\",\n\"l\u00E1hppi.no\",\n\"lund.no\",\n\"lunner.no\",\n\"luroy.no\",\n\"lur\u00F8y.no\",\n\"luster.no\",\n\"lyngdal.no\",\n\"lyngen.no\",\n\"ivgu.no\",\n\"lardal.no\",\n\"lerdal.no\",\n\"l\u00E6rdal.no\",\n\"lodingen.no\",\n\"l\u00F8dingen.no\",\n\"lorenskog.no\",\n\"l\u00F8renskog.no\",\n\"loten.no\",\n\"l\u00F8ten.no\",\n\"malvik.no\",\n\"masoy.no\",\n\"m\u00E5s\u00F8y.no\",\n\"muosat.no\",\n\"muos\u00E1t.no\",\n\"mandal.no\",\n\"marker.no\",\n\"marnardal.no\",\n\"masfjorden.no\",\n\"meland.no\",\n\"meldal.no\",\n\"melhus.no\",\n\"meloy.no\",\n\"mel\u00F8y.no\",\n\"meraker.no\",\n\"mer\u00E5ker.no\",\n\"moareke.no\",\n\"mo\u00E5reke.no\",\n\"midsund.no\",\n\"midtre-gauldal.no\",\n\"modalen.no\",\n\"modum.no\",\n\"molde.no\",\n\"moskenes.no\",\n\"moss.no\",\n\"mosvik.no\",\n\"malselv.no\",\n\"m\u00E5lselv.no\",\n\"malatvuopmi.no\",\n\"m\u00E1latvuopmi.no\",\n\"namdalseid.no\",\n\"aejrie.no\",\n\"namsos.no\",\n\"namsskogan.no\",\n\"naamesjevuemie.no\",\n\"n\u00E5\u00E5mesjevuemie.no\",\n\"laakesvuemie.no\",\n\"nannestad.no\",\n\"narvik.no\",\n\"narviika.no\",\n\"naustdal.no\",\n\"nedre-eiker.no\",\n\"nes.akershus.no\",\n\"nes.buskerud.no\",\n\"nesna.no\",\n\"nesodden.no\",\n\"nesseby.no\",\n\"unjarga.no\",\n\"unj\u00E1rga.no\",\n\"nesset.no\",\n\"nissedal.no\",\n\"nittedal.no\",\n\"nord-aurdal.no\",\n\"nord-fron.no\",\n\"nord-odal.no\",\n\"norddal.no\",\n\"nordkapp.no\",\n\"davvenjarga.no\",\n\"davvenj\u00E1rga.no\",\n\"nordre-land.no\",\n\"nordreisa.no\",\n\"raisa.no\",\n\"r\u00E1isa.no\",\n\"nore-og-uvdal.no\",\n\"notodden.no\",\n\"naroy.no\",\n\"n\u00E6r\u00F8y.no\",\n\"notteroy.no\",\n\"n\u00F8tter\u00F8y.no\",\n\"odda.no\",\n\"oksnes.no\",\n\"\u00F8ksnes.no\",\n\"oppdal.no\",\n\"oppegard.no\",\n\"oppeg\u00E5rd.no\",\n\"orkdal.no\",\n\"orland.no\",\n\"\u00F8rland.no\",\n\"orskog.no\",\n\"\u00F8rskog.no\",\n\"orsta.no\",\n\"\u00F8rsta.no\",\n\"os.hedmark.no\",\n\"os.hordaland.no\",\n\"osen.no\",\n\"osteroy.no\",\n\"oster\u00F8y.no\",\n\"ostre-toten.no\",\n\"\u00F8stre-toten.no\",\n\"overhalla.no\",\n\"ovre-eiker.no\",\n\"\u00F8vre-eiker.no\",\n\"oyer.no\",\n\"\u00F8yer.no\",\n\"oygarden.no\",\n\"\u00F8ygarden.no\",\n\"oystre-slidre.no\",\n\"\u00F8ystre-slidre.no\",\n\"porsanger.no\",\n\"porsangu.no\",\n\"pors\u00E1\u014Bgu.no\",\n\"porsgrunn.no\",\n\"radoy.no\",\n\"rad\u00F8y.no\",\n\"rakkestad.no\",\n\"rana.no\",\n\"ruovat.no\",\n\"randaberg.no\",\n\"rauma.no\",\n\"rendalen.no\",\n\"rennebu.no\",\n\"rennesoy.no\",\n\"rennes\u00F8y.no\",\n\"rindal.no\",\n\"ringebu.no\",\n\"ringerike.no\",\n\"ringsaker.no\",\n\"rissa.no\",\n\"risor.no\",\n\"ris\u00F8r.no\",\n\"roan.no\",\n\"rollag.no\",\n\"rygge.no\",\n\"ralingen.no\",\n\"r\u00E6lingen.no\",\n\"rodoy.no\",\n\"r\u00F8d\u00F8y.no\",\n\"romskog.no\",\n\"r\u00F8mskog.no\",\n\"roros.no\",\n\"r\u00F8ros.no\",\n\"rost.no\",\n\"r\u00F8st.no\",\n\"royken.no\",\n\"r\u00F8yken.no\",\n\"royrvik.no\",\n\"r\u00F8yrvik.no\",\n\"rade.no\",\n\"r\u00E5de.no\",\n\"salangen.no\",\n\"siellak.no\",\n\"saltdal.no\",\n\"salat.no\",\n\"s\u00E1l\u00E1t.no\",\n\"s\u00E1lat.no\",\n\"samnanger.no\",\n\"sande.more-og-romsdal.no\",\n\"sande.m\u00F8re-og-romsdal.no\",\n\"sande.vestfold.no\",\n\"sandefjord.no\",\n\"sandnes.no\",\n\"sandoy.no\",\n\"sand\u00F8y.no\",\n\"sarpsborg.no\",\n\"sauda.no\",\n\"sauherad.no\",\n\"sel.no\",\n\"selbu.no\",\n\"selje.no\",\n\"seljord.no\",\n\"sigdal.no\",\n\"siljan.no\",\n\"sirdal.no\",\n\"skaun.no\",\n\"skedsmo.no\",\n\"ski.no\",\n\"skien.no\",\n\"skiptvet.no\",\n\"skjervoy.no\",\n\"skjerv\u00F8y.no\",\n\"skierva.no\",\n\"skierv\u00E1.no\",\n\"skjak.no\",\n\"skj\u00E5k.no\",\n\"skodje.no\",\n\"skanland.no\",\n\"sk\u00E5nland.no\",\n\"skanit.no\",\n\"sk\u00E1nit.no\",\n\"smola.no\",\n\"sm\u00F8la.no\",\n\"snillfjord.no\",\n\"snasa.no\",\n\"sn\u00E5sa.no\",\n\"snoasa.no\",\n\"snaase.no\",\n\"sn\u00E5ase.no\",\n\"sogndal.no\",\n\"sokndal.no\",\n\"sola.no\",\n\"solund.no\",\n\"songdalen.no\",\n\"sortland.no\",\n\"spydeberg.no\",\n\"stange.no\",\n\"stavanger.no\",\n\"steigen.no\",\n\"steinkjer.no\",\n\"stjordal.no\",\n\"stj\u00F8rdal.no\",\n\"stokke.no\",\n\"stor-elvdal.no\",\n\"stord.no\",\n\"stordal.no\",\n\"storfjord.no\",\n\"omasvuotna.no\",\n\"strand.no\",\n\"stranda.no\",\n\"stryn.no\",\n\"sula.no\",\n\"suldal.no\",\n\"sund.no\",\n\"sunndal.no\",\n\"surnadal.no\",\n\"sveio.no\",\n\"svelvik.no\",\n\"sykkylven.no\",\n\"sogne.no\",\n\"s\u00F8gne.no\",\n\"somna.no\",\n\"s\u00F8mna.no\",\n\"sondre-land.no\",\n\"s\u00F8ndre-land.no\",\n\"sor-aurdal.no\",\n\"s\u00F8r-aurdal.no\",\n\"sor-fron.no\",\n\"s\u00F8r-fron.no\",\n\"sor-odal.no\",\n\"s\u00F8r-odal.no\",\n\"sor-varanger.no\",\n\"s\u00F8r-varanger.no\",\n\"matta-varjjat.no\",\n\"m\u00E1tta-v\u00E1rjjat.no\",\n\"sorfold.no\",\n\"s\u00F8rfold.no\",\n\"sorreisa.no\",\n\"s\u00F8rreisa.no\",\n\"sorum.no\",\n\"s\u00F8rum.no\",\n\"tana.no\",\n\"deatnu.no\",\n\"time.no\",\n\"tingvoll.no\",\n\"tinn.no\",\n\"tjeldsund.no\",\n\"dielddanuorri.no\",\n\"tjome.no\",\n\"tj\u00F8me.no\",\n\"tokke.no\",\n\"tolga.no\",\n\"torsken.no\",\n\"tranoy.no\",\n\"tran\u00F8y.no\",\n\"tromso.no\",\n\"troms\u00F8.no\",\n\"tromsa.no\",\n\"romsa.no\",\n\"trondheim.no\",\n\"troandin.no\",\n\"trysil.no\",\n\"trana.no\",\n\"tr\u00E6na.no\",\n\"trogstad.no\",\n\"tr\u00F8gstad.no\",\n\"tvedestrand.no\",\n\"tydal.no\",\n\"tynset.no\",\n\"tysfjord.no\",\n\"divtasvuodna.no\",\n\"divttasvuotna.no\",\n\"tysnes.no\",\n\"tysvar.no\",\n\"tysv\u00E6r.no\",\n\"tonsberg.no\",\n\"t\u00F8nsberg.no\",\n\"ullensaker.no\",\n\"ullensvang.no\",\n\"ulvik.no\",\n\"utsira.no\",\n\"vadso.no\",\n\"vads\u00F8.no\",\n\"cahcesuolo.no\",\n\"\u010D\u00E1hcesuolo.no\",\n\"vaksdal.no\",\n\"valle.no\",\n\"vang.no\",\n\"vanylven.no\",\n\"vardo.no\",\n\"vard\u00F8.no\",\n\"varggat.no\",\n\"v\u00E1rgg\u00E1t.no\",\n\"vefsn.no\",\n\"vaapste.no\",\n\"vega.no\",\n\"vegarshei.no\",\n\"veg\u00E5rshei.no\",\n\"vennesla.no\",\n\"verdal.no\",\n\"verran.no\",\n\"vestby.no\",\n\"vestnes.no\",\n\"vestre-slidre.no\",\n\"vestre-toten.no\",\n\"vestvagoy.no\",\n\"vestv\u00E5g\u00F8y.no\",\n\"vevelstad.no\",\n\"vik.no\",\n\"vikna.no\",\n\"vindafjord.no\",\n\"volda.no\",\n\"voss.no\",\n\"varoy.no\",\n\"v\u00E6r\u00F8y.no\",\n\"vagan.no\",\n\"v\u00E5gan.no\",\n\"voagat.no\",\n\"vagsoy.no\",\n\"v\u00E5gs\u00F8y.no\",\n\"vaga.no\",\n\"v\u00E5g\u00E5.no\",\n\"valer.ostfold.no\",\n\"v\u00E5ler.\u00F8stfold.no\",\n\"valer.hedmark.no\",\n\"v\u00E5ler.hedmark.no\",\n\"*.np\",\n\"nr\",\n\"biz.nr\",\n\"info.nr\",\n\"gov.nr\",\n\"edu.nr\",\n\"org.nr\",\n\"net.nr\",\n\"com.nr\",\n\"nu\",\n\"nz\",\n\"ac.nz\",\n\"co.nz\",\n\"cri.nz\",\n\"geek.nz\",\n\"gen.nz\",\n\"govt.nz\",\n\"health.nz\",\n\"iwi.nz\",\n\"kiwi.nz\",\n\"maori.nz\",\n\"mil.nz\",\n\"m\u0101ori.nz\",\n\"net.nz\",\n\"org.nz\",\n\"parliament.nz\",\n\"school.nz\",\n\"om\",\n\"co.om\",\n\"com.om\",\n\"edu.om\",\n\"gov.om\",\n\"med.om\",\n\"museum.om\",\n\"net.om\",\n\"org.om\",\n\"pro.om\",\n\"onion\",\n\"org\",\n\"pa\",\n\"ac.pa\",\n\"gob.pa\",\n\"com.pa\",\n\"org.pa\",\n\"sld.pa\",\n\"edu.pa\",\n\"net.pa\",\n\"ing.pa\",\n\"abo.pa\",\n\"med.pa\",\n\"nom.pa\",\n\"pe\",\n\"edu.pe\",\n\"gob.pe\",\n\"nom.pe\",\n\"mil.pe\",\n\"org.pe\",\n\"com.pe\",\n\"net.pe\",\n\"pf\",\n\"com.pf\",\n\"org.pf\",\n\"edu.pf\",\n\"*.pg\",\n\"ph\",\n\"com.ph\",\n\"net.ph\",\n\"org.ph\",\n\"gov.ph\",\n\"edu.ph\",\n\"ngo.ph\",\n\"mil.ph\",\n\"i.ph\",\n\"pk\",\n\"com.pk\",\n\"net.pk\",\n\"edu.pk\",\n\"org.pk\",\n\"fam.pk\",\n\"biz.pk\",\n\"web.pk\",\n\"gov.pk\",\n\"gob.pk\",\n\"gok.pk\",\n\"gon.pk\",\n\"gop.pk\",\n\"gos.pk\",\n\"info.pk\",\n\"pl\",\n\"com.pl\",\n\"net.pl\",\n\"org.pl\",\n\"aid.pl\",\n\"agro.pl\",\n\"atm.pl\",\n\"auto.pl\",\n\"biz.pl\",\n\"edu.pl\",\n\"gmina.pl\",\n\"gsm.pl\",\n\"info.pl\",\n\"mail.pl\",\n\"miasta.pl\",\n\"media.pl\",\n\"mil.pl\",\n\"nieruchomosci.pl\",\n\"nom.pl\",\n\"pc.pl\",\n\"powiat.pl\",\n\"priv.pl\",\n\"realestate.pl\",\n\"rel.pl\",\n\"sex.pl\",\n\"shop.pl\",\n\"sklep.pl\",\n\"sos.pl\",\n\"szkola.pl\",\n\"targi.pl\",\n\"tm.pl\",\n\"tourism.pl\",\n\"travel.pl\",\n\"turystyka.pl\",\n\"gov.pl\",\n\"ap.gov.pl\",\n\"ic.gov.pl\",\n\"is.gov.pl\",\n\"us.gov.pl\",\n\"kmpsp.gov.pl\",\n\"kppsp.gov.pl\",\n\"kwpsp.gov.pl\",\n\"psp.gov.pl\",\n\"wskr.gov.pl\",\n\"kwp.gov.pl\",\n\"mw.gov.pl\",\n\"ug.gov.pl\",\n\"um.gov.pl\",\n\"umig.gov.pl\",\n\"ugim.gov.pl\",\n\"upow.gov.pl\",\n\"uw.gov.pl\",\n\"starostwo.gov.pl\",\n\"pa.gov.pl\",\n\"po.gov.pl\",\n\"psse.gov.pl\",\n\"pup.gov.pl\",\n\"rzgw.gov.pl\",\n\"sa.gov.pl\",\n\"so.gov.pl\",\n\"sr.gov.pl\",\n\"wsa.gov.pl\",\n\"sko.gov.pl\",\n\"uzs.gov.pl\",\n\"wiih.gov.pl\",\n\"winb.gov.pl\",\n\"pinb.gov.pl\",\n\"wios.gov.pl\",\n\"witd.gov.pl\",\n\"wzmiuw.gov.pl\",\n\"piw.gov.pl\",\n\"wiw.gov.pl\",\n\"griw.gov.pl\",\n\"wif.gov.pl\",\n\"oum.gov.pl\",\n\"sdn.gov.pl\",\n\"zp.gov.pl\",\n\"uppo.gov.pl\",\n\"mup.gov.pl\",\n\"wuoz.gov.pl\",\n\"konsulat.gov.pl\",\n\"oirm.gov.pl\",\n\"augustow.pl\",\n\"babia-gora.pl\",\n\"bedzin.pl\",\n\"beskidy.pl\",\n\"bialowieza.pl\",\n\"bialystok.pl\",\n\"bielawa.pl\",\n\"bieszczady.pl\",\n\"boleslawiec.pl\",\n\"bydgoszcz.pl\",\n\"bytom.pl\",\n\"cieszyn.pl\",\n\"czeladz.pl\",\n\"czest.pl\",\n\"dlugoleka.pl\",\n\"elblag.pl\",\n\"elk.pl\",\n\"glogow.pl\",\n\"gniezno.pl\",\n\"gorlice.pl\",\n\"grajewo.pl\",\n\"ilawa.pl\",\n\"jaworzno.pl\",\n\"jelenia-gora.pl\",\n\"jgora.pl\",\n\"kalisz.pl\",\n\"kazimierz-dolny.pl\",\n\"karpacz.pl\",\n\"kartuzy.pl\",\n\"kaszuby.pl\",\n\"katowice.pl\",\n\"kepno.pl\",\n\"ketrzyn.pl\",\n\"klodzko.pl\",\n\"kobierzyce.pl\",\n\"kolobrzeg.pl\",\n\"konin.pl\",\n\"konskowola.pl\",\n\"kutno.pl\",\n\"lapy.pl\",\n\"lebork.pl\",\n\"legnica.pl\",\n\"lezajsk.pl\",\n\"limanowa.pl\",\n\"lomza.pl\",\n\"lowicz.pl\",\n\"lubin.pl\",\n\"lukow.pl\",\n\"malbork.pl\",\n\"malopolska.pl\",\n\"mazowsze.pl\",\n\"mazury.pl\",\n\"mielec.pl\",\n\"mielno.pl\",\n\"mragowo.pl\",\n\"naklo.pl\",\n\"nowaruda.pl\",\n\"nysa.pl\",\n\"olawa.pl\",\n\"olecko.pl\",\n\"olkusz.pl\",\n\"olsztyn.pl\",\n\"opoczno.pl\",\n\"opole.pl\",\n\"ostroda.pl\",\n\"ostroleka.pl\",\n\"ostrowiec.pl\",\n\"ostrowwlkp.pl\",\n\"pila.pl\",\n\"pisz.pl\",\n\"podhale.pl\",\n\"podlasie.pl\",\n\"polkowice.pl\",\n\"pomorze.pl\",\n\"pomorskie.pl\",\n\"prochowice.pl\",\n\"pruszkow.pl\",\n\"przeworsk.pl\",\n\"pulawy.pl\",\n\"radom.pl\",\n\"rawa-maz.pl\",\n\"rybnik.pl\",\n\"rzeszow.pl\",\n\"sanok.pl\",\n\"sejny.pl\",\n\"slask.pl\",\n\"slupsk.pl\",\n\"sosnowiec.pl\",\n\"stalowa-wola.pl\",\n\"skoczow.pl\",\n\"starachowice.pl\",\n\"stargard.pl\",\n\"suwalki.pl\",\n\"swidnica.pl\",\n\"swiebodzin.pl\",\n\"swinoujscie.pl\",\n\"szczecin.pl\",\n\"szczytno.pl\",\n\"tarnobrzeg.pl\",\n\"tgory.pl\",\n\"turek.pl\",\n\"tychy.pl\",\n\"ustka.pl\",\n\"walbrzych.pl\",\n\"warmia.pl\",\n\"warszawa.pl\",\n\"waw.pl\",\n\"wegrow.pl\",\n\"wielun.pl\",\n\"wlocl.pl\",\n\"wloclawek.pl\",\n\"wodzislaw.pl\",\n\"wolomin.pl\",\n\"wroclaw.pl\",\n\"zachpomor.pl\",\n\"zagan.pl\",\n\"zarow.pl\",\n\"zgora.pl\",\n\"zgorzelec.pl\",\n\"pm\",\n\"pn\",\n\"gov.pn\",\n\"co.pn\",\n\"org.pn\",\n\"edu.pn\",\n\"net.pn\",\n\"post\",\n\"pr\",\n\"com.pr\",\n\"net.pr\",\n\"org.pr\",\n\"gov.pr\",\n\"edu.pr\",\n\"isla.pr\",\n\"pro.pr\",\n\"biz.pr\",\n\"info.pr\",\n\"name.pr\",\n\"est.pr\",\n\"prof.pr\",\n\"ac.pr\",\n\"pro\",\n\"aaa.pro\",\n\"aca.pro\",\n\"acct.pro\",\n\"avocat.pro\",\n\"bar.pro\",\n\"cpa.pro\",\n\"eng.pro\",\n\"jur.pro\",\n\"law.pro\",\n\"med.pro\",\n\"recht.pro\",\n\"ps\",\n\"edu.ps\",\n\"gov.ps\",\n\"sec.ps\",\n\"plo.ps\",\n\"com.ps\",\n\"org.ps\",\n\"net.ps\",\n\"pt\",\n\"net.pt\",\n\"gov.pt\",\n\"org.pt\",\n\"edu.pt\",\n\"int.pt\",\n\"publ.pt\",\n\"com.pt\",\n\"nome.pt\",\n\"pw\",\n\"co.pw\",\n\"ne.pw\",\n\"or.pw\",\n\"ed.pw\",\n\"go.pw\",\n\"belau.pw\",\n\"py\",\n\"com.py\",\n\"coop.py\",\n\"edu.py\",\n\"gov.py\",\n\"mil.py\",\n\"net.py\",\n\"org.py\",\n\"qa\",\n\"com.qa\",\n\"edu.qa\",\n\"gov.qa\",\n\"mil.qa\",\n\"name.qa\",\n\"net.qa\",\n\"org.qa\",\n\"sch.qa\",\n\"re\",\n\"asso.re\",\n\"com.re\",\n\"nom.re\",\n\"ro\",\n\"arts.ro\",\n\"com.ro\",\n\"firm.ro\",\n\"info.ro\",\n\"nom.ro\",\n\"nt.ro\",\n\"org.ro\",\n\"rec.ro\",\n\"store.ro\",\n\"tm.ro\",\n\"www.ro\",\n\"rs\",\n\"ac.rs\",\n\"co.rs\",\n\"edu.rs\",\n\"gov.rs\",\n\"in.rs\",\n\"org.rs\",\n\"ru\",\n\"rw\",\n\"ac.rw\",\n\"co.rw\",\n\"coop.rw\",\n\"gov.rw\",\n\"mil.rw\",\n\"net.rw\",\n\"org.rw\",\n\"sa\",\n\"com.sa\",\n\"net.sa\",\n\"org.sa\",\n\"gov.sa\",\n\"med.sa\",\n\"pub.sa\",\n\"edu.sa\",\n\"sch.sa\",\n\"sb\",\n\"com.sb\",\n\"edu.sb\",\n\"gov.sb\",\n\"net.sb\",\n\"org.sb\",\n\"sc\",\n\"com.sc\",\n\"gov.sc\",\n\"net.sc\",\n\"org.sc\",\n\"edu.sc\",\n\"sd\",\n\"com.sd\",\n\"net.sd\",\n\"org.sd\",\n\"edu.sd\",\n\"med.sd\",\n\"tv.sd\",\n\"gov.sd\",\n\"info.sd\",\n\"se\",\n\"a.se\",\n\"ac.se\",\n\"b.se\",\n\"bd.se\",\n\"brand.se\",\n\"c.se\",\n\"d.se\",\n\"e.se\",\n\"f.se\",\n\"fh.se\",\n\"fhsk.se\",\n\"fhv.se\",\n\"g.se\",\n\"h.se\",\n\"i.se\",\n\"k.se\",\n\"komforb.se\",\n\"kommunalforbund.se\",\n\"komvux.se\",\n\"l.se\",\n\"lanbib.se\",\n\"m.se\",\n\"n.se\",\n\"naturbruksgymn.se\",\n\"o.se\",\n\"org.se\",\n\"p.se\",\n\"parti.se\",\n\"pp.se\",\n\"press.se\",\n\"r.se\",\n\"s.se\",\n\"t.se\",\n\"tm.se\",\n\"u.se\",\n\"w.se\",\n\"x.se\",\n\"y.se\",\n\"z.se\",\n\"sg\",\n\"com.sg\",\n\"net.sg\",\n\"org.sg\",\n\"gov.sg\",\n\"edu.sg\",\n\"per.sg\",\n\"sh\",\n\"com.sh\",\n\"net.sh\",\n\"gov.sh\",\n\"org.sh\",\n\"mil.sh\",\n\"si\",\n\"sj\",\n\"sk\",\n\"sl\",\n\"com.sl\",\n\"net.sl\",\n\"edu.sl\",\n\"gov.sl\",\n\"org.sl\",\n\"sm\",\n\"sn\",\n\"art.sn\",\n\"com.sn\",\n\"edu.sn\",\n\"gouv.sn\",\n\"org.sn\",\n\"perso.sn\",\n\"univ.sn\",\n\"so\",\n\"com.so\",\n\"edu.so\",\n\"gov.so\",\n\"me.so\",\n\"net.so\",\n\"org.so\",\n\"sr\",\n\"ss\",\n\"biz.ss\",\n\"com.ss\",\n\"edu.ss\",\n\"gov.ss\",\n\"me.ss\",\n\"net.ss\",\n\"org.ss\",\n\"sch.ss\",\n\"st\",\n\"co.st\",\n\"com.st\",\n\"consulado.st\",\n\"edu.st\",\n\"embaixada.st\",\n\"mil.st\",\n\"net.st\",\n\"org.st\",\n\"principe.st\",\n\"saotome.st\",\n\"store.st\",\n\"su\",\n\"sv\",\n\"com.sv\",\n\"edu.sv\",\n\"gob.sv\",\n\"org.sv\",\n\"red.sv\",\n\"sx\",\n\"gov.sx\",\n\"sy\",\n\"edu.sy\",\n\"gov.sy\",\n\"net.sy\",\n\"mil.sy\",\n\"com.sy\",\n\"org.sy\",\n\"sz\",\n\"co.sz\",\n\"ac.sz\",\n\"org.sz\",\n\"tc\",\n\"td\",\n\"tel\",\n\"tf\",\n\"tg\",\n\"th\",\n\"ac.th\",\n\"co.th\",\n\"go.th\",\n\"in.th\",\n\"mi.th\",\n\"net.th\",\n\"or.th\",\n\"tj\",\n\"ac.tj\",\n\"biz.tj\",\n\"co.tj\",\n\"com.tj\",\n\"edu.tj\",\n\"go.tj\",\n\"gov.tj\",\n\"int.tj\",\n\"mil.tj\",\n\"name.tj\",\n\"net.tj\",\n\"nic.tj\",\n\"org.tj\",\n\"test.tj\",\n\"web.tj\",\n\"tk\",\n\"tl\",\n\"gov.tl\",\n\"tm\",\n\"com.tm\",\n\"co.tm\",\n\"org.tm\",\n\"net.tm\",\n\"nom.tm\",\n\"gov.tm\",\n\"mil.tm\",\n\"edu.tm\",\n\"tn\",\n\"com.tn\",\n\"ens.tn\",\n\"fin.tn\",\n\"gov.tn\",\n\"ind.tn\",\n\"info.tn\",\n\"intl.tn\",\n\"mincom.tn\",\n\"nat.tn\",\n\"net.tn\",\n\"org.tn\",\n\"perso.tn\",\n\"tourism.tn\",\n\"to\",\n\"com.to\",\n\"gov.to\",\n\"net.to\",\n\"org.to\",\n\"edu.to\",\n\"mil.to\",\n\"tr\",\n\"av.tr\",\n\"bbs.tr\",\n\"bel.tr\",\n\"biz.tr\",\n\"com.tr\",\n\"dr.tr\",\n\"edu.tr\",\n\"gen.tr\",\n\"gov.tr\",\n\"info.tr\",\n\"mil.tr\",\n\"k12.tr\",\n\"kep.tr\",\n\"name.tr\",\n\"net.tr\",\n\"org.tr\",\n\"pol.tr\",\n\"tel.tr\",\n\"tsk.tr\",\n\"tv.tr\",\n\"web.tr\",\n\"nc.tr\",\n\"gov.nc.tr\",\n\"tt\",\n\"co.tt\",\n\"com.tt\",\n\"org.tt\",\n\"net.tt\",\n\"biz.tt\",\n\"info.tt\",\n\"pro.tt\",\n\"int.tt\",\n\"coop.tt\",\n\"jobs.tt\",\n\"mobi.tt\",\n\"travel.tt\",\n\"museum.tt\",\n\"aero.tt\",\n\"name.tt\",\n\"gov.tt\",\n\"edu.tt\",\n\"tv\",\n\"tw\",\n\"edu.tw\",\n\"gov.tw\",\n\"mil.tw\",\n\"com.tw\",\n\"net.tw\",\n\"org.tw\",\n\"idv.tw\",\n\"game.tw\",\n\"ebiz.tw\",\n\"club.tw\",\n\"\u7DB2\u8DEF.tw\",\n\"\u7D44\u7E54.tw\",\n\"\u5546\u696D.tw\",\n\"tz\",\n\"ac.tz\",\n\"co.tz\",\n\"go.tz\",\n\"hotel.tz\",\n\"info.tz\",\n\"me.tz\",\n\"mil.tz\",\n\"mobi.tz\",\n\"ne.tz\",\n\"or.tz\",\n\"sc.tz\",\n\"tv.tz\",\n\"ua\",\n\"com.ua\",\n\"edu.ua\",\n\"gov.ua\",\n\"in.ua\",\n\"net.ua\",\n\"org.ua\",\n\"cherkassy.ua\",\n\"cherkasy.ua\",\n\"chernigov.ua\",\n\"chernihiv.ua\",\n\"chernivtsi.ua\",\n\"chernovtsy.ua\",\n\"ck.ua\",\n\"cn.ua\",\n\"cr.ua\",\n\"crimea.ua\",\n\"cv.ua\",\n\"dn.ua\",\n\"dnepropetrovsk.ua\",\n\"dnipropetrovsk.ua\",\n\"donetsk.ua\",\n\"dp.ua\",\n\"if.ua\",\n\"ivano-frankivsk.ua\",\n\"kh.ua\",\n\"kharkiv.ua\",\n\"kharkov.ua\",\n\"kherson.ua\",\n\"khmelnitskiy.ua\",\n\"khmelnytskyi.ua\",\n\"kiev.ua\",\n\"kirovograd.ua\",\n\"km.ua\",\n\"kr.ua\",\n\"krym.ua\",\n\"ks.ua\",\n\"kv.ua\",\n\"kyiv.ua\",\n\"lg.ua\",\n\"lt.ua\",\n\"lugansk.ua\",\n\"lutsk.ua\",\n\"lv.ua\",\n\"lviv.ua\",\n\"mk.ua\",\n\"mykolaiv.ua\",\n\"nikolaev.ua\",\n\"od.ua\",\n\"odesa.ua\",\n\"odessa.ua\",\n\"pl.ua\",\n\"poltava.ua\",\n\"rivne.ua\",\n\"rovno.ua\",\n\"rv.ua\",\n\"sb.ua\",\n\"sebastopol.ua\",\n\"sevastopol.ua\",\n\"sm.ua\",\n\"sumy.ua\",\n\"te.ua\",\n\"ternopil.ua\",\n\"uz.ua\",\n\"uzhgorod.ua\",\n\"vinnica.ua\",\n\"vinnytsia.ua\",\n\"vn.ua\",\n\"volyn.ua\",\n\"yalta.ua\",\n\"zaporizhzhe.ua\",\n\"zaporizhzhia.ua\",\n\"zhitomir.ua\",\n\"zhytomyr.ua\",\n\"zp.ua\",\n\"zt.ua\",\n\"ug\",\n\"co.ug\",\n\"or.ug\",\n\"ac.ug\",\n\"sc.ug\",\n\"go.ug\",\n\"ne.ug\",\n\"com.ug\",\n\"org.ug\",\n\"uk\",\n\"ac.uk\",\n\"co.uk\",\n\"gov.uk\",\n\"ltd.uk\",\n\"me.uk\",\n\"net.uk\",\n\"nhs.uk\",\n\"org.uk\",\n\"plc.uk\",\n\"police.uk\",\n\"*.sch.uk\",\n\"us\",\n\"dni.us\",\n\"fed.us\",\n\"isa.us\",\n\"kids.us\",\n\"nsn.us\",\n\"ak.us\",\n\"al.us\",\n\"ar.us\",\n\"as.us\",\n\"az.us\",\n\"ca.us\",\n\"co.us\",\n\"ct.us\",\n\"dc.us\",\n\"de.us\",\n\"fl.us\",\n\"ga.us\",\n\"gu.us\",\n\"hi.us\",\n\"ia.us\",\n\"id.us\",\n\"il.us\",\n\"in.us\",\n\"ks.us\",\n\"ky.us\",\n\"la.us\",\n\"ma.us\",\n\"md.us\",\n\"me.us\",\n\"mi.us\",\n\"mn.us\",\n\"mo.us\",\n\"ms.us\",\n\"mt.us\",\n\"nc.us\",\n\"nd.us\",\n\"ne.us\",\n\"nh.us\",\n\"nj.us\",\n\"nm.us\",\n\"nv.us\",\n\"ny.us\",\n\"oh.us\",\n\"ok.us\",\n\"or.us\",\n\"pa.us\",\n\"pr.us\",\n\"ri.us\",\n\"sc.us\",\n\"sd.us\",\n\"tn.us\",\n\"tx.us\",\n\"ut.us\",\n\"vi.us\",\n\"vt.us\",\n\"va.us\",\n\"wa.us\",\n\"wi.us\",\n\"wv.us\",\n\"wy.us\",\n\"k12.ak.us\",\n\"k12.al.us\",\n\"k12.ar.us\",\n\"k12.as.us\",\n\"k12.az.us\",\n\"k12.ca.us\",\n\"k12.co.us\",\n\"k12.ct.us\",\n\"k12.dc.us\",\n\"k12.de.us\",\n\"k12.fl.us\",\n\"k12.ga.us\",\n\"k12.gu.us\",\n\"k12.ia.us\",\n\"k12.id.us\",\n\"k12.il.us\",\n\"k12.in.us\",\n\"k12.ks.us\",\n\"k12.ky.us\",\n\"k12.la.us\",\n\"k12.ma.us\",\n\"k12.md.us\",\n\"k12.me.us\",\n\"k12.mi.us\",\n\"k12.mn.us\",\n\"k12.mo.us\",\n\"k12.ms.us\",\n\"k12.mt.us\",\n\"k12.nc.us\",\n\"k12.ne.us\",\n\"k12.nh.us\",\n\"k12.nj.us\",\n\"k12.nm.us\",\n\"k12.nv.us\",\n\"k12.ny.us\",\n\"k12.oh.us\",\n\"k12.ok.us\",\n\"k12.or.us\",\n\"k12.pa.us\",\n\"k12.pr.us\",\n\"k12.sc.us\",\n\"k12.tn.us\",\n\"k12.tx.us\",\n\"k12.ut.us\",\n\"k12.vi.us\",\n\"k12.vt.us\",\n\"k12.va.us\",\n\"k12.wa.us\",\n\"k12.wi.us\",\n\"k12.wy.us\",\n\"cc.ak.us\",\n\"cc.al.us\",\n\"cc.ar.us\",\n\"cc.as.us\",\n\"cc.az.us\",\n\"cc.ca.us\",\n\"cc.co.us\",\n\"cc.ct.us\",\n\"cc.dc.us\",\n\"cc.de.us\",\n\"cc.fl.us\",\n\"cc.ga.us\",\n\"cc.gu.us\",\n\"cc.hi.us\",\n\"cc.ia.us\",\n\"cc.id.us\",\n\"cc.il.us\",\n\"cc.in.us\",\n\"cc.ks.us\",\n\"cc.ky.us\",\n\"cc.la.us\",\n\"cc.ma.us\",\n\"cc.md.us\",\n\"cc.me.us\",\n\"cc.mi.us\",\n\"cc.mn.us\",\n\"cc.mo.us\",\n\"cc.ms.us\",\n\"cc.mt.us\",\n\"cc.nc.us\",\n\"cc.nd.us\",\n\"cc.ne.us\",\n\"cc.nh.us\",\n\"cc.nj.us\",\n\"cc.nm.us\",\n\"cc.nv.us\",\n\"cc.ny.us\",\n\"cc.oh.us\",\n\"cc.ok.us\",\n\"cc.or.us\",\n\"cc.pa.us\",\n\"cc.pr.us\",\n\"cc.ri.us\",\n\"cc.sc.us\",\n\"cc.sd.us\",\n\"cc.tn.us\",\n\"cc.tx.us\",\n\"cc.ut.us\",\n\"cc.vi.us\",\n\"cc.vt.us\",\n\"cc.va.us\",\n\"cc.wa.us\",\n\"cc.wi.us\",\n\"cc.wv.us\",\n\"cc.wy.us\",\n\"lib.ak.us\",\n\"lib.al.us\",\n\"lib.ar.us\",\n\"lib.as.us\",\n\"lib.az.us\",\n\"lib.ca.us\",\n\"lib.co.us\",\n\"lib.ct.us\",\n\"lib.dc.us\",\n\"lib.fl.us\",\n\"lib.ga.us\",\n\"lib.gu.us\",\n\"lib.hi.us\",\n\"lib.ia.us\",\n\"lib.id.us\",\n\"lib.il.us\",\n\"lib.in.us\",\n\"lib.ks.us\",\n\"lib.ky.us\",\n\"lib.la.us\",\n\"lib.ma.us\",\n\"lib.md.us\",\n\"lib.me.us\",\n\"lib.mi.us\",\n\"lib.mn.us\",\n\"lib.mo.us\",\n\"lib.ms.us\",\n\"lib.mt.us\",\n\"lib.nc.us\",\n\"lib.nd.us\",\n\"lib.ne.us\",\n\"lib.nh.us\",\n\"lib.nj.us\",\n\"lib.nm.us\",\n\"lib.nv.us\",\n\"lib.ny.us\",\n\"lib.oh.us\",\n\"lib.ok.us\",\n\"lib.or.us\",\n\"lib.pa.us\",\n\"lib.pr.us\",\n\"lib.ri.us\",\n\"lib.sc.us\",\n\"lib.sd.us\",\n\"lib.tn.us\",\n\"lib.tx.us\",\n\"lib.ut.us\",\n\"lib.vi.us\",\n\"lib.vt.us\",\n\"lib.va.us\",\n\"lib.wa.us\",\n\"lib.wi.us\",\n\"lib.wy.us\",\n\"pvt.k12.ma.us\",\n\"chtr.k12.ma.us\",\n\"paroch.k12.ma.us\",\n\"ann-arbor.mi.us\",\n\"cog.mi.us\",\n\"dst.mi.us\",\n\"eaton.mi.us\",\n\"gen.mi.us\",\n\"mus.mi.us\",\n\"tec.mi.us\",\n\"washtenaw.mi.us\",\n\"uy\",\n\"com.uy\",\n\"edu.uy\",\n\"gub.uy\",\n\"mil.uy\",\n\"net.uy\",\n\"org.uy\",\n\"uz\",\n\"co.uz\",\n\"com.uz\",\n\"net.uz\",\n\"org.uz\",\n\"va\",\n\"vc\",\n\"com.vc\",\n\"net.vc\",\n\"org.vc\",\n\"gov.vc\",\n\"mil.vc\",\n\"edu.vc\",\n\"ve\",\n\"arts.ve\",\n\"bib.ve\",\n\"co.ve\",\n\"com.ve\",\n\"e12.ve\",\n\"edu.ve\",\n\"firm.ve\",\n\"gob.ve\",\n\"gov.ve\",\n\"info.ve\",\n\"int.ve\",\n\"mil.ve\",\n\"net.ve\",\n\"nom.ve\",\n\"org.ve\",\n\"rar.ve\",\n\"rec.ve\",\n\"store.ve\",\n\"tec.ve\",\n\"web.ve\",\n\"vg\",\n\"vi\",\n\"co.vi\",\n\"com.vi\",\n\"k12.vi\",\n\"net.vi\",\n\"org.vi\",\n\"vn\",\n\"com.vn\",\n\"net.vn\",\n\"org.vn\",\n\"edu.vn\",\n\"gov.vn\",\n\"int.vn\",\n\"ac.vn\",\n\"biz.vn\",\n\"info.vn\",\n\"name.vn\",\n\"pro.vn\",\n\"health.vn\",\n\"vu\",\n\"com.vu\",\n\"edu.vu\",\n\"net.vu\",\n\"org.vu\",\n\"wf\",\n\"ws\",\n\"com.ws\",\n\"net.ws\",\n\"org.ws\",\n\"gov.ws\",\n\"edu.ws\",\n\"yt\",\n\"\u0627\u0645\u0627\u0631\u0627\u062A\",\n\"\u0570\u0561\u0575\",\n\"\u09AC\u09BE\u0982\u09B2\u09BE\",\n\"\u0431\u0433\",\n\"\u0627\u0644\u0628\u062D\u0631\u064A\u0646\",\n\"\u0431\u0435\u043B\",\n\"\u4E2D\u56FD\",\n\"\u4E2D\u570B\",\n\"\u0627\u0644\u062C\u0632\u0627\u0626\u0631\",\n\"\u0645\u0635\u0631\",\n\"\u0435\u044E\",\n\"\u03B5\u03C5\",\n\"\u0645\u0648\u0631\u064A\u062A\u0627\u0646\u064A\u0627\",\n\"\u10D2\u10D4\",\n\"\u03B5\u03BB\",\n\"\u9999\u6E2F\",\n\"\u516C\u53F8.\u9999\u6E2F\",\n\"\u6559\u80B2.\u9999\u6E2F\",\n\"\u653F\u5E9C.\u9999\u6E2F\",\n\"\u500B\u4EBA.\u9999\u6E2F\",\n\"\u7DB2\u7D61.\u9999\u6E2F\",\n\"\u7D44\u7E54.\u9999\u6E2F\",\n\"\u0CAD\u0CBE\u0CB0\u0CA4\",\n\"\u0B2D\u0B3E\u0B30\u0B24\",\n\"\u09AD\u09BE\u09F0\u09A4\",\n\"\u092D\u093E\u0930\u0924\u092E\u094D\",\n\"\u092D\u093E\u0930\u094B\u0924\",\n\"\u0680\u0627\u0631\u062A\",\n\"\u0D2D\u0D3E\u0D30\u0D24\u0D02\",\n\"\u092D\u093E\u0930\u0924\",\n\"\u0628\u0627\u0631\u062A\",\n\"\u0628\u06BE\u0627\u0631\u062A\",\n\"\u0C2D\u0C3E\u0C30\u0C24\u0C4D\",\n\"\u0AAD\u0ABE\u0AB0\u0AA4\",\n\"\u0A2D\u0A3E\u0A30\u0A24\",\n\"\u09AD\u09BE\u09B0\u09A4\",\n\"\u0B87\u0BA8\u0BCD\u0BA4\u0BBF\u0BAF\u0BBE\",\n\"\u0627\u06CC\u0631\u0627\u0646\",\n\"\u0627\u064A\u0631\u0627\u0646\",\n\"\u0639\u0631\u0627\u0642\",\n\"\u0627\u0644\u0627\u0631\u062F\u0646\",\n\"\uD55C\uAD6D\",\n\"\u049B\u0430\u0437\",\n\"\u0EA5\u0EB2\u0EA7\",\n\"\u0DBD\u0D82\u0D9A\u0DCF\",\n\"\u0B87\u0BB2\u0B99\u0BCD\u0B95\u0BC8\",\n\"\u0627\u0644\u0645\u063A\u0631\u0628\",\n\"\u043C\u043A\u0434\",\n\"\u043C\u043E\u043D\",\n\"\u6FB3\u9580\",\n\"\u6FB3\u95E8\",\n\"\u0645\u0644\u064A\u0633\u064A\u0627\",\n\"\u0639\u0645\u0627\u0646\",\n\"\u067E\u0627\u06A9\u0633\u062A\u0627\u0646\",\n\"\u067E\u0627\u0643\u0633\u062A\u0627\u0646\",\n\"\u0641\u0644\u0633\u0637\u064A\u0646\",\n\"\u0441\u0440\u0431\",\n\"\u043F\u0440.\u0441\u0440\u0431\",\n\"\u043E\u0440\u0433.\u0441\u0440\u0431\",\n\"\u043E\u0431\u0440.\u0441\u0440\u0431\",\n\"\u043E\u0434.\u0441\u0440\u0431\",\n\"\u0443\u043F\u0440.\u0441\u0440\u0431\",\n\"\u0430\u043A.\u0441\u0440\u0431\",\n\"\u0440\u0444\",\n\"\u0642\u0637\u0631\",\n\"\u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0629\",\n\"\u0627\u0644\u0633\u0639\u0648\u062F\u06CC\u0629\",\n\"\u0627\u0644\u0633\u0639\u0648\u062F\u06CC\u06C3\",\n\"\u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0647\",\n\"\u0633\u0648\u062F\u0627\u0646\",\n\"\u65B0\u52A0\u5761\",\n\"\u0B9A\u0BBF\u0B99\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0BC2\u0BB0\u0BCD\",\n\"\u0633\u0648\u0631\u064A\u0629\",\n\"\u0633\u0648\u0631\u064A\u0627\",\n\"\u0E44\u0E17\u0E22\",\n\"\u0E28\u0E36\u0E01\u0E29\u0E32.\u0E44\u0E17\u0E22\",\n\"\u0E18\u0E38\u0E23\u0E01\u0E34\u0E08.\u0E44\u0E17\u0E22\",\n\"\u0E23\u0E31\u0E10\u0E1A\u0E32\u0E25.\u0E44\u0E17\u0E22\",\n\"\u0E17\u0E2B\u0E32\u0E23.\u0E44\u0E17\u0E22\",\n\"\u0E40\u0E19\u0E47\u0E15.\u0E44\u0E17\u0E22\",\n\"\u0E2D\u0E07\u0E04\u0E4C\u0E01\u0E23.\u0E44\u0E17\u0E22\",\n\"\u062A\u0648\u0646\u0633\",\n\"\u53F0\u7063\",\n\"\u53F0\u6E7E\",\n\"\u81FA\u7063\",\n\"\u0443\u043A\u0440\",\n\"\u0627\u0644\u064A\u0645\u0646\",\n\"xxx\",\n\"ye\",\n\"com.ye\",\n\"edu.ye\",\n\"gov.ye\",\n\"net.ye\",\n\"mil.ye\",\n\"org.ye\",\n\"ac.za\",\n\"agric.za\",\n\"alt.za\",\n\"co.za\",\n\"edu.za\",\n\"gov.za\",\n\"grondar.za\",\n\"law.za\",\n\"mil.za\",\n\"net.za\",\n\"ngo.za\",\n\"nic.za\",\n\"nis.za\",\n\"nom.za\",\n\"org.za\",\n\"school.za\",\n\"tm.za\",\n\"web.za\",\n\"zm\",\n\"ac.zm\",\n\"biz.zm\",\n\"co.zm\",\n\"com.zm\",\n\"edu.zm\",\n\"gov.zm\",\n\"info.zm\",\n\"mil.zm\",\n\"net.zm\",\n\"org.zm\",\n\"sch.zm\",\n\"zw\",\n\"ac.zw\",\n\"co.zw\",\n\"gov.zw\",\n\"mil.zw\",\n\"org.zw\",\n\"aaa\",\n\"aarp\",\n\"abarth\",\n\"abb\",\n\"abbott\",\n\"abbvie\",\n\"abc\",\n\"able\",\n\"abogado\",\n\"abudhabi\",\n\"academy\",\n\"accenture\",\n\"accountant\",\n\"accountants\",\n\"aco\",\n\"actor\",\n\"adac\",\n\"ads\",\n\"adult\",\n\"aeg\",\n\"aetna\",\n\"afl\",\n\"africa\",\n\"agakhan\",\n\"agency\",\n\"aig\",\n\"airbus\",\n\"airforce\",\n\"airtel\",\n\"akdn\",\n\"alfaromeo\",\n\"alibaba\",\n\"alipay\",\n\"allfinanz\",\n\"allstate\",\n\"ally\",\n\"alsace\",\n\"alstom\",\n\"amazon\",\n\"americanexpress\",\n\"americanfamily\",\n\"amex\",\n\"amfam\",\n\"amica\",\n\"amsterdam\",\n\"analytics\",\n\"android\",\n\"anquan\",\n\"anz\",\n\"aol\",\n\"apartments\",\n\"app\",\n\"apple\",\n\"aquarelle\",\n\"arab\",\n\"aramco\",\n\"archi\",\n\"army\",\n\"art\",\n\"arte\",\n\"asda\",\n\"associates\",\n\"athleta\",\n\"attorney\",\n\"auction\",\n\"audi\",\n\"audible\",\n\"audio\",\n\"auspost\",\n\"author\",\n\"auto\",\n\"autos\",\n\"avianca\",\n\"aws\",\n\"axa\",\n\"azure\",\n\"baby\",\n\"baidu\",\n\"banamex\",\n\"bananarepublic\",\n\"band\",\n\"bank\",\n\"bar\",\n\"barcelona\",\n\"barclaycard\",\n\"barclays\",\n\"barefoot\",\n\"bargains\",\n\"baseball\",\n\"basketball\",\n\"bauhaus\",\n\"bayern\",\n\"bbc\",\n\"bbt\",\n\"bbva\",\n\"bcg\",\n\"bcn\",\n\"beats\",\n\"beauty\",\n\"beer\",\n\"bentley\",\n\"berlin\",\n\"best\",\n\"bestbuy\",\n\"bet\",\n\"bharti\",\n\"bible\",\n\"bid\",\n\"bike\",\n\"bing\",\n\"bingo\",\n\"bio\",\n\"black\",\n\"blackfriday\",\n\"blockbuster\",\n\"blog\",\n\"bloomberg\",\n\"blue\",\n\"bms\",\n\"bmw\",\n\"bnpparibas\",\n\"boats\",\n\"boehringer\",\n\"bofa\",\n\"bom\",\n\"bond\",\n\"boo\",\n\"book\",\n\"booking\",\n\"bosch\",\n\"bostik\",\n\"boston\",\n\"bot\",\n\"boutique\",\n\"box\",\n\"bradesco\",\n\"bridgestone\",\n\"broadway\",\n\"broker\",\n\"brother\",\n\"brussels\",\n\"bugatti\",\n\"build\",\n\"builders\",\n\"business\",\n\"buy\",\n\"buzz\",\n\"bzh\",\n\"cab\",\n\"cafe\",\n\"cal\",\n\"call\",\n\"calvinklein\",\n\"cam\",\n\"camera\",\n\"camp\",\n\"cancerresearch\",\n\"canon\",\n\"capetown\",\n\"capital\",\n\"capitalone\",\n\"car\",\n\"caravan\",\n\"cards\",\n\"care\",\n\"career\",\n\"careers\",\n\"cars\",\n\"casa\",\n\"case\",\n\"cash\",\n\"casino\",\n\"catering\",\n\"catholic\",\n\"cba\",\n\"cbn\",\n\"cbre\",\n\"cbs\",\n\"center\",\n\"ceo\",\n\"cern\",\n\"cfa\",\n\"cfd\",\n\"chanel\",\n\"channel\",\n\"charity\",\n\"chase\",\n\"chat\",\n\"cheap\",\n\"chintai\",\n\"christmas\",\n\"chrome\",\n\"church\",\n\"cipriani\",\n\"circle\",\n\"cisco\",\n\"citadel\",\n\"citi\",\n\"citic\",\n\"city\",\n\"cityeats\",\n\"claims\",\n\"cleaning\",\n\"click\",\n\"clinic\",\n\"clinique\",\n\"clothing\",\n\"cloud\",\n\"club\",\n\"clubmed\",\n\"coach\",\n\"codes\",\n\"coffee\",\n\"college\",\n\"cologne\",\n\"comcast\",\n\"commbank\",\n\"community\",\n\"company\",\n\"compare\",\n\"computer\",\n\"comsec\",\n\"condos\",\n\"construction\",\n\"consulting\",\n\"contact\",\n\"contractors\",\n\"cooking\",\n\"cookingchannel\",\n\"cool\",\n\"corsica\",\n\"country\",\n\"coupon\",\n\"coupons\",\n\"courses\",\n\"cpa\",\n\"credit\",\n\"creditcard\",\n\"creditunion\",\n\"cricket\",\n\"crown\",\n\"crs\",\n\"cruise\",\n\"cruises\",\n\"cuisinella\",\n\"cymru\",\n\"cyou\",\n\"dabur\",\n\"dad\",\n\"dance\",\n\"data\",\n\"date\",\n\"dating\",\n\"datsun\",\n\"day\",\n\"dclk\",\n\"dds\",\n\"deal\",\n\"dealer\",\n\"deals\",\n\"degree\",\n\"delivery\",\n\"dell\",\n\"deloitte\",\n\"delta\",\n\"democrat\",\n\"dental\",\n\"dentist\",\n\"desi\",\n\"design\",\n\"dev\",\n\"dhl\",\n\"diamonds\",\n\"diet\",\n\"digital\",\n\"direct\",\n\"directory\",\n\"discount\",\n\"discover\",\n\"dish\",\n\"diy\",\n\"dnp\",\n\"docs\",\n\"doctor\",\n\"dog\",\n\"domains\",\n\"dot\",\n\"download\",\n\"drive\",\n\"dtv\",\n\"dubai\",\n\"dunlop\",\n\"dupont\",\n\"durban\",\n\"dvag\",\n\"dvr\",\n\"earth\",\n\"eat\",\n\"eco\",\n\"edeka\",\n\"education\",\n\"email\",\n\"emerck\",\n\"energy\",\n\"engineer\",\n\"engineering\",\n\"enterprises\",\n\"epson\",\n\"equipment\",\n\"ericsson\",\n\"erni\",\n\"esq\",\n\"estate\",\n\"etisalat\",\n\"eurovision\",\n\"eus\",\n\"events\",\n\"exchange\",\n\"expert\",\n\"exposed\",\n\"express\",\n\"extraspace\",\n\"fage\",\n\"fail\",\n\"fairwinds\",\n\"faith\",\n\"family\",\n\"fan\",\n\"fans\",\n\"farm\",\n\"farmers\",\n\"fashion\",\n\"fast\",\n\"fedex\",\n\"feedback\",\n\"ferrari\",\n\"ferrero\",\n\"fiat\",\n\"fidelity\",\n\"fido\",\n\"film\",\n\"final\",\n\"finance\",\n\"financial\",\n\"fire\",\n\"firestone\",\n\"firmdale\",\n\"fish\",\n\"fishing\",\n\"fit\",\n\"fitness\",\n\"flickr\",\n\"flights\",\n\"flir\",\n\"florist\",\n\"flowers\",\n\"fly\",\n\"foo\",\n\"food\",\n\"foodnetwork\",\n\"football\",\n\"ford\",\n\"forex\",\n\"forsale\",\n\"forum\",\n\"foundation\",\n\"fox\",\n\"free\",\n\"fresenius\",\n\"frl\",\n\"frogans\",\n\"frontdoor\",\n\"frontier\",\n\"ftr\",\n\"fujitsu\",\n\"fun\",\n\"fund\",\n\"furniture\",\n\"futbol\",\n\"fyi\",\n\"gal\",\n\"gallery\",\n\"gallo\",\n\"gallup\",\n\"game\",\n\"games\",\n\"gap\",\n\"garden\",\n\"gay\",\n\"gbiz\",\n\"gdn\",\n\"gea\",\n\"gent\",\n\"genting\",\n\"george\",\n\"ggee\",\n\"gift\",\n\"gifts\",\n\"gives\",\n\"giving\",\n\"glass\",\n\"gle\",\n\"global\",\n\"globo\",\n\"gmail\",\n\"gmbh\",\n\"gmo\",\n\"gmx\",\n\"godaddy\",\n\"gold\",\n\"goldpoint\",\n\"golf\",\n\"goo\",\n\"goodyear\",\n\"goog\",\n\"google\",\n\"gop\",\n\"got\",\n\"grainger\",\n\"graphics\",\n\"gratis\",\n\"green\",\n\"gripe\",\n\"grocery\",\n\"group\",\n\"guardian\",\n\"gucci\",\n\"guge\",\n\"guide\",\n\"guitars\",\n\"guru\",\n\"hair\",\n\"hamburg\",\n\"hangout\",\n\"haus\",\n\"hbo\",\n\"hdfc\",\n\"hdfcbank\",\n\"health\",\n\"healthcare\",\n\"help\",\n\"helsinki\",\n\"here\",\n\"hermes\",\n\"hgtv\",\n\"hiphop\",\n\"hisamitsu\",\n\"hitachi\",\n\"hiv\",\n\"hkt\",\n\"hockey\",\n\"holdings\",\n\"holiday\",\n\"homedepot\",\n\"homegoods\",\n\"homes\",\n\"homesense\",\n\"honda\",\n\"horse\",\n\"hospital\",\n\"host\",\n\"hosting\",\n\"hot\",\n\"hoteles\",\n\"hotels\",\n\"hotmail\",\n\"house\",\n\"how\",\n\"hsbc\",\n\"hughes\",\n\"hyatt\",\n\"hyundai\",\n\"ibm\",\n\"icbc\",\n\"ice\",\n\"icu\",\n\"ieee\",\n\"ifm\",\n\"ikano\",\n\"imamat\",\n\"imdb\",\n\"immo\",\n\"immobilien\",\n\"inc\",\n\"industries\",\n\"infiniti\",\n\"ing\",\n\"ink\",\n\"institute\",\n\"insurance\",\n\"insure\",\n\"international\",\n\"intuit\",\n\"investments\",\n\"ipiranga\",\n\"irish\",\n\"ismaili\",\n\"ist\",\n\"istanbul\",\n\"itau\",\n\"itv\",\n\"jaguar\",\n\"java\",\n\"jcb\",\n\"jeep\",\n\"jetzt\",\n\"jewelry\",\n\"jio\",\n\"jll\",\n\"jmp\",\n\"jnj\",\n\"joburg\",\n\"jot\",\n\"joy\",\n\"jpmorgan\",\n\"jprs\",\n\"juegos\",\n\"juniper\",\n\"kaufen\",\n\"kddi\",\n\"kerryhotels\",\n\"kerrylogistics\",\n\"kerryproperties\",\n\"kfh\",\n\"kia\",\n\"kids\",\n\"kim\",\n\"kinder\",\n\"kindle\",\n\"kitchen\",\n\"kiwi\",\n\"koeln\",\n\"komatsu\",\n\"kosher\",\n\"kpmg\",\n\"kpn\",\n\"krd\",\n\"kred\",\n\"kuokgroup\",\n\"kyoto\",\n\"lacaixa\",\n\"lamborghini\",\n\"lamer\",\n\"lancaster\",\n\"lancia\",\n\"land\",\n\"landrover\",\n\"lanxess\",\n\"lasalle\",\n\"lat\",\n\"latino\",\n\"latrobe\",\n\"law\",\n\"lawyer\",\n\"lds\",\n\"lease\",\n\"leclerc\",\n\"lefrak\",\n\"legal\",\n\"lego\",\n\"lexus\",\n\"lgbt\",\n\"lidl\",\n\"life\",\n\"lifeinsurance\",\n\"lifestyle\",\n\"lighting\",\n\"like\",\n\"lilly\",\n\"limited\",\n\"limo\",\n\"lincoln\",\n\"linde\",\n\"link\",\n\"lipsy\",\n\"live\",\n\"living\",\n\"llc\",\n\"llp\",\n\"loan\",\n\"loans\",\n\"locker\",\n\"locus\",\n\"loft\",\n\"lol\",\n\"london\",\n\"lotte\",\n\"lotto\",\n\"love\",\n\"lpl\",\n\"lplfinancial\",\n\"ltd\",\n\"ltda\",\n\"lundbeck\",\n\"luxe\",\n\"luxury\",\n\"macys\",\n\"madrid\",\n\"maif\",\n\"maison\",\n\"makeup\",\n\"man\",\n\"management\",\n\"mango\",\n\"map\",\n\"market\",\n\"marketing\",\n\"markets\",\n\"marriott\",\n\"marshalls\",\n\"maserati\",\n\"mattel\",\n\"mba\",\n\"mckinsey\",\n\"med\",\n\"media\",\n\"meet\",\n\"melbourne\",\n\"meme\",\n\"memorial\",\n\"men\",\n\"menu\",\n\"merckmsd\",\n\"miami\",\n\"microsoft\",\n\"mini\",\n\"mint\",\n\"mit\",\n\"mitsubishi\",\n\"mlb\",\n\"mls\",\n\"mma\",\n\"mobile\",\n\"moda\",\n\"moe\",\n\"moi\",\n\"mom\",\n\"monash\",\n\"money\",\n\"monster\",\n\"mormon\",\n\"mortgage\",\n\"moscow\",\n\"moto\",\n\"motorcycles\",\n\"mov\",\n\"movie\",\n\"msd\",\n\"mtn\",\n\"mtr\",\n\"music\",\n\"mutual\",\n\"nab\",\n\"nagoya\",\n\"natura\",\n\"navy\",\n\"nba\",\n\"nec\",\n\"netbank\",\n\"netflix\",\n\"network\",\n\"neustar\",\n\"new\",\n\"news\",\n\"next\",\n\"nextdirect\",\n\"nexus\",\n\"nfl\",\n\"ngo\",\n\"nhk\",\n\"nico\",\n\"nike\",\n\"nikon\",\n\"ninja\",\n\"nissan\",\n\"nissay\",\n\"nokia\",\n\"northwesternmutual\",\n\"norton\",\n\"now\",\n\"nowruz\",\n\"nowtv\",\n\"nra\",\n\"nrw\",\n\"ntt\",\n\"nyc\",\n\"obi\",\n\"observer\",\n\"office\",\n\"okinawa\",\n\"olayan\",\n\"olayangroup\",\n\"oldnavy\",\n\"ollo\",\n\"omega\",\n\"one\",\n\"ong\",\n\"onl\",\n\"online\",\n\"ooo\",\n\"open\",\n\"oracle\",\n\"orange\",\n\"organic\",\n\"origins\",\n\"osaka\",\n\"otsuka\",\n\"ott\",\n\"ovh\",\n\"page\",\n\"panasonic\",\n\"paris\",\n\"pars\",\n\"partners\",\n\"parts\",\n\"party\",\n\"passagens\",\n\"pay\",\n\"pccw\",\n\"pet\",\n\"pfizer\",\n\"pharmacy\",\n\"phd\",\n\"philips\",\n\"phone\",\n\"photo\",\n\"photography\",\n\"photos\",\n\"physio\",\n\"pics\",\n\"pictet\",\n\"pictures\",\n\"pid\",\n\"pin\",\n\"ping\",\n\"pink\",\n\"pioneer\",\n\"pizza\",\n\"place\",\n\"play\",\n\"playstation\",\n\"plumbing\",\n\"plus\",\n\"pnc\",\n\"pohl\",\n\"poker\",\n\"politie\",\n\"porn\",\n\"pramerica\",\n\"praxi\",\n\"press\",\n\"prime\",\n\"prod\",\n\"productions\",\n\"prof\",\n\"progressive\",\n\"promo\",\n\"properties\",\n\"property\",\n\"protection\",\n\"pru\",\n\"prudential\",\n\"pub\",\n\"pwc\",\n\"qpon\",\n\"quebec\",\n\"quest\",\n\"racing\",\n\"radio\",\n\"read\",\n\"realestate\",\n\"realtor\",\n\"realty\",\n\"recipes\",\n\"red\",\n\"redstone\",\n\"redumbrella\",\n\"rehab\",\n\"reise\",\n\"reisen\",\n\"reit\",\n\"reliance\",\n\"ren\",\n\"rent\",\n\"rentals\",\n\"repair\",\n\"report\",\n\"republican\",\n\"rest\",\n\"restaurant\",\n\"review\",\n\"reviews\",\n\"rexroth\",\n\"rich\",\n\"richardli\",\n\"ricoh\",\n\"ril\",\n\"rio\",\n\"rip\",\n\"rocher\",\n\"rocks\",\n\"rodeo\",\n\"rogers\",\n\"room\",\n\"rsvp\",\n\"rugby\",\n\"ruhr\",\n\"run\",\n\"rwe\",\n\"ryukyu\",\n\"saarland\",\n\"safe\",\n\"safety\",\n\"sakura\",\n\"sale\",\n\"salon\",\n\"samsclub\",\n\"samsung\",\n\"sandvik\",\n\"sandvikcoromant\",\n\"sanofi\",\n\"sap\",\n\"sarl\",\n\"sas\",\n\"save\",\n\"saxo\",\n\"sbi\",\n\"sbs\",\n\"sca\",\n\"scb\",\n\"schaeffler\",\n\"schmidt\",\n\"scholarships\",\n\"school\",\n\"schule\",\n\"schwarz\",\n\"science\",\n\"scot\",\n\"search\",\n\"seat\",\n\"secure\",\n\"security\",\n\"seek\",\n\"select\",\n\"sener\",\n\"services\",\n\"ses\",\n\"seven\",\n\"sew\",\n\"sex\",\n\"sexy\",\n\"sfr\",\n\"shangrila\",\n\"sharp\",\n\"shaw\",\n\"shell\",\n\"shia\",\n\"shiksha\",\n\"shoes\",\n\"shop\",\n\"shopping\",\n\"shouji\",\n\"show\",\n\"showtime\",\n\"silk\",\n\"sina\",\n\"singles\",\n\"site\",\n\"ski\",\n\"skin\",\n\"sky\",\n\"skype\",\n\"sling\",\n\"smart\",\n\"smile\",\n\"sncf\",\n\"soccer\",\n\"social\",\n\"softbank\",\n\"software\",\n\"sohu\",\n\"solar\",\n\"solutions\",\n\"song\",\n\"sony\",\n\"soy\",\n\"spa\",\n\"space\",\n\"sport\",\n\"spot\",\n\"srl\",\n\"stada\",\n\"staples\",\n\"star\",\n\"statebank\",\n\"statefarm\",\n\"stc\",\n\"stcgroup\",\n\"stockholm\",\n\"storage\",\n\"store\",\n\"stream\",\n\"studio\",\n\"study\",\n\"style\",\n\"sucks\",\n\"supplies\",\n\"supply\",\n\"support\",\n\"surf\",\n\"surgery\",\n\"suzuki\",\n\"swatch\",\n\"swiss\",\n\"sydney\",\n\"systems\",\n\"tab\",\n\"taipei\",\n\"talk\",\n\"taobao\",\n\"target\",\n\"tatamotors\",\n\"tatar\",\n\"tattoo\",\n\"tax\",\n\"taxi\",\n\"tci\",\n\"tdk\",\n\"team\",\n\"tech\",\n\"technology\",\n\"temasek\",\n\"tennis\",\n\"teva\",\n\"thd\",\n\"theater\",\n\"theatre\",\n\"tiaa\",\n\"tickets\",\n\"tienda\",\n\"tiffany\",\n\"tips\",\n\"tires\",\n\"tirol\",\n\"tjmaxx\",\n\"tjx\",\n\"tkmaxx\",\n\"tmall\",\n\"today\",\n\"tokyo\",\n\"tools\",\n\"top\",\n\"toray\",\n\"toshiba\",\n\"total\",\n\"tours\",\n\"town\",\n\"toyota\",\n\"toys\",\n\"trade\",\n\"trading\",\n\"training\",\n\"travel\",\n\"travelchannel\",\n\"travelers\",\n\"travelersinsurance\",\n\"trust\",\n\"trv\",\n\"tube\",\n\"tui\",\n\"tunes\",\n\"tushu\",\n\"tvs\",\n\"ubank\",\n\"ubs\",\n\"unicom\",\n\"university\",\n\"uno\",\n\"uol\",\n\"ups\",\n\"vacations\",\n\"vana\",\n\"vanguard\",\n\"vegas\",\n\"ventures\",\n\"verisign\",\n\"versicherung\",\n\"vet\",\n\"viajes\",\n\"video\",\n\"vig\",\n\"viking\",\n\"villas\",\n\"vin\",\n\"vip\",\n\"virgin\",\n\"visa\",\n\"vision\",\n\"viva\",\n\"vivo\",\n\"vlaanderen\",\n\"vodka\",\n\"volkswagen\",\n\"volvo\",\n\"vote\",\n\"voting\",\n\"voto\",\n\"voyage\",\n\"vuelos\",\n\"wales\",\n\"walmart\",\n\"walter\",\n\"wang\",\n\"wanggou\",\n\"watch\",\n\"watches\",\n\"weather\",\n\"weatherchannel\",\n\"webcam\",\n\"weber\",\n\"website\",\n\"wedding\",\n\"weibo\",\n\"weir\",\n\"whoswho\",\n\"wien\",\n\"wiki\",\n\"williamhill\",\n\"win\",\n\"windows\",\n\"wine\",\n\"winners\",\n\"wme\",\n\"wolterskluwer\",\n\"woodside\",\n\"work\",\n\"works\",\n\"world\",\n\"wow\",\n\"wtc\",\n\"wtf\",\n\"xbox\",\n\"xerox\",\n\"xfinity\",\n\"xihuan\",\n\"xin\",\n\"\u0915\u0949\u092E\",\n\"\u30BB\u30FC\u30EB\",\n\"\u4F5B\u5C71\",\n\"\u6148\u5584\",\n\"\u96C6\u56E2\",\n\"\u5728\u7EBF\",\n\"\u70B9\u770B\",\n\"\u0E04\u0E2D\u0E21\",\n\"\u516B\u5366\",\n\"\u0645\u0648\u0642\u0639\",\n\"\u516C\u76CA\",\n\"\u516C\u53F8\",\n\"\u9999\u683C\u91CC\u62C9\",\n\"\u7F51\u7AD9\",\n\"\u79FB\u52A8\",\n\"\u6211\u7231\u4F60\",\n\"\u043C\u043E\u0441\u043A\u0432\u0430\",\n\"\u043A\u0430\u0442\u043E\u043B\u0438\u043A\",\n\"\u043E\u043D\u043B\u0430\u0439\u043D\",\n\"\u0441\u0430\u0439\u0442\",\n\"\u8054\u901A\",\n\"\u05E7\u05D5\u05DD\",\n\"\u65F6\u5C1A\",\n\"\u5FAE\u535A\",\n\"\u6DE1\u9A6C\u9521\",\n\"\u30D5\u30A1\u30C3\u30B7\u30E7\u30F3\",\n\"\u043E\u0440\u0433\",\n\"\u0928\u0947\u091F\",\n\"\u30B9\u30C8\u30A2\",\n\"\u30A2\u30DE\u30BE\u30F3\",\n\"\uC0BC\uC131\",\n\"\u5546\u6807\",\n\"\u5546\u5E97\",\n\"\u5546\u57CE\",\n\"\u0434\u0435\u0442\u0438\",\n\"\u30DD\u30A4\u30F3\u30C8\",\n\"\u65B0\u95FB\",\n\"\u5BB6\u96FB\",\n\"\u0643\u0648\u0645\",\n\"\u4E2D\u6587\u7F51\",\n\"\u4E2D\u4FE1\",\n\"\u5A31\u4E50\",\n\"\u8C37\u6B4C\",\n\"\u96FB\u8A0A\u76C8\u79D1\",\n\"\u8D2D\u7269\",\n\"\u30AF\u30E9\u30A6\u30C9\",\n\"\u901A\u8CA9\",\n\"\u7F51\u5E97\",\n\"\u0938\u0902\u0917\u0920\u0928\",\n\"\u9910\u5385\",\n\"\u7F51\u7EDC\",\n\"\u043A\u043E\u043C\",\n\"\u4E9A\u9A6C\u900A\",\n\"\u8BFA\u57FA\u4E9A\",\n\"\u98DF\u54C1\",\n\"\u98DE\u5229\u6D66\",\n\"\u624B\u673A\",\n\"\u0627\u0631\u0627\u0645\u0643\u0648\",\n\"\u0627\u0644\u0639\u0644\u064A\u0627\u0646\",\n\"\u0627\u062A\u0635\u0627\u0644\u0627\u062A\",\n\"\u0628\u0627\u0632\u0627\u0631\",\n\"\u0627\u0628\u0648\u0638\u0628\u064A\",\n\"\u0643\u0627\u062B\u0648\u0644\u064A\u0643\",\n\"\u0647\u0645\u0631\u0627\u0647\",\n\"\uB2F7\uCEF4\",\n\"\u653F\u5E9C\",\n\"\u0634\u0628\u0643\u0629\",\n\"\u0628\u064A\u062A\u0643\",\n\"\u0639\u0631\u0628\",\n\"\u673A\u6784\",\n\"\u7EC4\u7EC7\u673A\u6784\",\n\"\u5065\u5EB7\",\n\"\u62DB\u8058\",\n\"\u0440\u0443\u0441\",\n\"\u5927\u62FF\",\n\"\u307F\u3093\u306A\",\n\"\u30B0\u30FC\u30B0\u30EB\",\n\"\u4E16\u754C\",\n\"\u66F8\u7C4D\",\n\"\u7F51\u5740\",\n\"\uB2F7\uB137\",\n\"\u30B3\u30E0\",\n\"\u5929\u4E3B\u6559\",\n\"\u6E38\u620F\",\n\"verm\u00F6gensberater\",\n\"verm\u00F6gensberatung\",\n\"\u4F01\u4E1A\",\n\"\u4FE1\u606F\",\n\"\u5609\u91CC\u5927\u9152\u5E97\",\n\"\u5609\u91CC\",\n\"\u5E7F\u4E1C\",\n\"\u653F\u52A1\",\n\"xyz\",\n\"yachts\",\n\"yahoo\",\n\"yamaxun\",\n\"yandex\",\n\"yodobashi\",\n\"yoga\",\n\"yokohama\",\n\"you\",\n\"youtube\",\n\"yun\",\n\"zappos\",\n\"zara\",\n\"zero\",\n\"zip\",\n\"zone\",\n\"zuerich\",\n\"cc.ua\",\n\"inf.ua\",\n\"ltd.ua\",\n\"611.to\",\n\"graphox.us\",\n\"*.devcdnaccesso.com\",\n\"adobeaemcloud.com\",\n\"*.dev.adobeaemcloud.com\",\n\"hlx.live\",\n\"adobeaemcloud.net\",\n\"hlx.page\",\n\"hlx3.page\",\n\"beep.pl\",\n\"airkitapps.com\",\n\"airkitapps-au.com\",\n\"airkitapps.eu\",\n\"aivencloud.com\",\n\"barsy.ca\",\n\"*.compute.estate\",\n\"*.alces.network\",\n\"kasserver.com\",\n\"altervista.org\",\n\"alwaysdata.net\",\n\"cloudfront.net\",\n\"*.compute.amazonaws.com\",\n\"*.compute-1.amazonaws.com\",\n\"*.compute.amazonaws.com.cn\",\n\"us-east-1.amazonaws.com\",\n\"cn-north-1.eb.amazonaws.com.cn\",\n\"cn-northwest-1.eb.amazonaws.com.cn\",\n\"elasticbeanstalk.com\",\n\"ap-northeast-1.elasticbeanstalk.com\",\n\"ap-northeast-2.elasticbeanstalk.com\",\n\"ap-northeast-3.elasticbeanstalk.com\",\n\"ap-south-1.elasticbeanstalk.com\",\n\"ap-southeast-1.elasticbeanstalk.com\",\n\"ap-southeast-2.elasticbeanstalk.com\",\n\"ca-central-1.elasticbeanstalk.com\",\n\"eu-central-1.elasticbeanstalk.com\",\n\"eu-west-1.elasticbeanstalk.com\",\n\"eu-west-2.elasticbeanstalk.com\",\n\"eu-west-3.elasticbeanstalk.com\",\n\"sa-east-1.elasticbeanstalk.com\",\n\"us-east-1.elasticbeanstalk.com\",\n\"us-east-2.elasticbeanstalk.com\",\n\"us-gov-west-1.elasticbeanstalk.com\",\n\"us-west-1.elasticbeanstalk.com\",\n\"us-west-2.elasticbeanstalk.com\",\n\"*.elb.amazonaws.com\",\n\"*.elb.amazonaws.com.cn\",\n\"awsglobalaccelerator.com\",\n\"s3.amazonaws.com\",\n\"s3-ap-northeast-1.amazonaws.com\",\n\"s3-ap-northeast-2.amazonaws.com\",\n\"s3-ap-south-1.amazonaws.com\",\n\"s3-ap-southeast-1.amazonaws.com\",\n\"s3-ap-southeast-2.amazonaws.com\",\n\"s3-ca-central-1.amazonaws.com\",\n\"s3-eu-central-1.amazonaws.com\",\n\"s3-eu-west-1.amazonaws.com\",\n\"s3-eu-west-2.amazonaws.com\",\n\"s3-eu-west-3.amazonaws.com\",\n\"s3-external-1.amazonaws.com\",\n\"s3-fips-us-gov-west-1.amazonaws.com\",\n\"s3-sa-east-1.amazonaws.com\",\n\"s3-us-gov-west-1.amazonaws.com\",\n\"s3-us-east-2.amazonaws.com\",\n\"s3-us-west-1.amazonaws.com\",\n\"s3-us-west-2.amazonaws.com\",\n\"s3.ap-northeast-2.amazonaws.com\",\n\"s3.ap-south-1.amazonaws.com\",\n\"s3.cn-north-1.amazonaws.com.cn\",\n\"s3.ca-central-1.amazonaws.com\",\n\"s3.eu-central-1.amazonaws.com\",\n\"s3.eu-west-2.amazonaws.com\",\n\"s3.eu-west-3.amazonaws.com\",\n\"s3.us-east-2.amazonaws.com\",\n\"s3.dualstack.ap-northeast-1.amazonaws.com\",\n\"s3.dualstack.ap-northeast-2.amazonaws.com\",\n\"s3.dualstack.ap-south-1.amazonaws.com\",\n\"s3.dualstack.ap-southeast-1.amazonaws.com\",\n\"s3.dualstack.ap-southeast-2.amazonaws.com\",\n\"s3.dualstack.ca-central-1.amazonaws.com\",\n\"s3.dualstack.eu-central-1.amazonaws.com\",\n\"s3.dualstack.eu-west-1.amazonaws.com\",\n\"s3.dualstack.eu-west-2.amazonaws.com\",\n\"s3.dualstack.eu-west-3.amazonaws.com\",\n\"s3.dualstack.sa-east-1.amazonaws.com\",\n\"s3.dualstack.us-east-1.amazonaws.com\",\n\"s3.dualstack.us-east-2.amazonaws.com\",\n\"s3-website-us-east-1.amazonaws.com\",\n\"s3-website-us-west-1.amazonaws.com\",\n\"s3-website-us-west-2.amazonaws.com\",\n\"s3-website-ap-northeast-1.amazonaws.com\",\n\"s3-website-ap-southeast-1.amazonaws.com\",\n\"s3-website-ap-southeast-2.amazonaws.com\",\n\"s3-website-eu-west-1.amazonaws.com\",\n\"s3-website-sa-east-1.amazonaws.com\",\n\"s3-website.ap-northeast-2.amazonaws.com\",\n\"s3-website.ap-south-1.amazonaws.com\",\n\"s3-website.ca-central-1.amazonaws.com\",\n\"s3-website.eu-central-1.amazonaws.com\",\n\"s3-website.eu-west-2.amazonaws.com\",\n\"s3-website.eu-west-3.amazonaws.com\",\n\"s3-website.us-east-2.amazonaws.com\",\n\"t3l3p0rt.net\",\n\"tele.amune.org\",\n\"apigee.io\",\n\"siiites.com\",\n\"appspacehosted.com\",\n\"appspaceusercontent.com\",\n\"appudo.net\",\n\"on-aptible.com\",\n\"user.aseinet.ne.jp\",\n\"gv.vc\",\n\"d.gv.vc\",\n\"user.party.eus\",\n\"pimienta.org\",\n\"poivron.org\",\n\"potager.org\",\n\"sweetpepper.org\",\n\"myasustor.com\",\n\"cdn.prod.atlassian-dev.net\",\n\"translated.page\",\n\"myfritz.net\",\n\"onavstack.net\",\n\"*.awdev.ca\",\n\"*.advisor.ws\",\n\"ecommerce-shop.pl\",\n\"b-data.io\",\n\"backplaneapp.io\",\n\"balena-devices.com\",\n\"rs.ba\",\n\"*.banzai.cloud\",\n\"app.banzaicloud.io\",\n\"*.backyards.banzaicloud.io\",\n\"base.ec\",\n\"official.ec\",\n\"buyshop.jp\",\n\"fashionstore.jp\",\n\"handcrafted.jp\",\n\"kawaiishop.jp\",\n\"supersale.jp\",\n\"theshop.jp\",\n\"shopselect.net\",\n\"base.shop\",\n\"*.beget.app\",\n\"betainabox.com\",\n\"bnr.la\",\n\"bitbucket.io\",\n\"blackbaudcdn.net\",\n\"of.je\",\n\"bluebite.io\",\n\"boomla.net\",\n\"boutir.com\",\n\"boxfuse.io\",\n\"square7.ch\",\n\"bplaced.com\",\n\"bplaced.de\",\n\"square7.de\",\n\"bplaced.net\",\n\"square7.net\",\n\"shop.brendly.rs\",\n\"browsersafetymark.io\",\n\"uk0.bigv.io\",\n\"dh.bytemark.co.uk\",\n\"vm.bytemark.co.uk\",\n\"cafjs.com\",\n\"mycd.eu\",\n\"drr.ac\",\n\"uwu.ai\",\n\"carrd.co\",\n\"crd.co\",\n\"ju.mp\",\n\"ae.org\",\n\"br.com\",\n\"cn.com\",\n\"com.de\",\n\"com.se\",\n\"de.com\",\n\"eu.com\",\n\"gb.net\",\n\"hu.net\",\n\"jp.net\",\n\"jpn.com\",\n\"mex.com\",\n\"ru.com\",\n\"sa.com\",\n\"se.net\",\n\"uk.com\",\n\"uk.net\",\n\"us.com\",\n\"za.bz\",\n\"za.com\",\n\"ar.com\",\n\"hu.com\",\n\"kr.com\",\n\"no.com\",\n\"qc.com\",\n\"uy.com\",\n\"africa.com\",\n\"gr.com\",\n\"in.net\",\n\"web.in\",\n\"us.org\",\n\"co.com\",\n\"aus.basketball\",\n\"nz.basketball\",\n\"radio.am\",\n\"radio.fm\",\n\"c.la\",\n\"certmgr.org\",\n\"cx.ua\",\n\"discourse.group\",\n\"discourse.team\",\n\"cleverapps.io\",\n\"clerk.app\",\n\"clerkstage.app\",\n\"*.lcl.dev\",\n\"*.lclstage.dev\",\n\"*.stg.dev\",\n\"*.stgstage.dev\",\n\"clickrising.net\",\n\"c66.me\",\n\"cloud66.ws\",\n\"cloud66.zone\",\n\"jdevcloud.com\",\n\"wpdevcloud.com\",\n\"cloudaccess.host\",\n\"freesite.host\",\n\"cloudaccess.net\",\n\"cloudcontrolled.com\",\n\"cloudcontrolapp.com\",\n\"*.cloudera.site\",\n\"pages.dev\",\n\"trycloudflare.com\",\n\"workers.dev\",\n\"wnext.app\",\n\"co.ca\",\n\"*.otap.co\",\n\"co.cz\",\n\"c.cdn77.org\",\n\"cdn77-ssl.net\",\n\"r.cdn77.net\",\n\"rsc.cdn77.org\",\n\"ssl.origin.cdn77-secure.org\",\n\"cloudns.asia\",\n\"cloudns.biz\",\n\"cloudns.club\",\n\"cloudns.cc\",\n\"cloudns.eu\",\n\"cloudns.in\",\n\"cloudns.info\",\n\"cloudns.org\",\n\"cloudns.pro\",\n\"cloudns.pw\",\n\"cloudns.us\",\n\"cnpy.gdn\",\n\"codeberg.page\",\n\"co.nl\",\n\"co.no\",\n\"webhosting.be\",\n\"hosting-cluster.nl\",\n\"ac.ru\",\n\"edu.ru\",\n\"gov.ru\",\n\"int.ru\",\n\"mil.ru\",\n\"test.ru\",\n\"dyn.cosidns.de\",\n\"dynamisches-dns.de\",\n\"dnsupdater.de\",\n\"internet-dns.de\",\n\"l-o-g-i-n.de\",\n\"dynamic-dns.info\",\n\"feste-ip.net\",\n\"knx-server.net\",\n\"static-access.net\",\n\"realm.cz\",\n\"*.cryptonomic.net\",\n\"cupcake.is\",\n\"curv.dev\",\n\"*.customer-oci.com\",\n\"*.oci.customer-oci.com\",\n\"*.ocp.customer-oci.com\",\n\"*.ocs.customer-oci.com\",\n\"cyon.link\",\n\"cyon.site\",\n\"fnwk.site\",\n\"folionetwork.site\",\n\"platform0.app\",\n\"daplie.me\",\n\"localhost.daplie.me\",\n\"dattolocal.com\",\n\"dattorelay.com\",\n\"dattoweb.com\",\n\"mydatto.com\",\n\"dattolocal.net\",\n\"mydatto.net\",\n\"biz.dk\",\n\"co.dk\",\n\"firm.dk\",\n\"reg.dk\",\n\"store.dk\",\n\"dyndns.dappnode.io\",\n\"*.dapps.earth\",\n\"*.bzz.dapps.earth\",\n\"builtwithdark.com\",\n\"demo.datadetect.com\",\n\"instance.datadetect.com\",\n\"edgestack.me\",\n\"ddns5.com\",\n\"debian.net\",\n\"deno.dev\",\n\"deno-staging.dev\",\n\"dedyn.io\",\n\"deta.app\",\n\"deta.dev\",\n\"*.rss.my.id\",\n\"*.diher.solutions\",\n\"discordsays.com\",\n\"discordsez.com\",\n\"jozi.biz\",\n\"dnshome.de\",\n\"online.th\",\n\"shop.th\",\n\"drayddns.com\",\n\"shoparena.pl\",\n\"dreamhosters.com\",\n\"mydrobo.com\",\n\"drud.io\",\n\"drud.us\",\n\"duckdns.org\",\n\"bip.sh\",\n\"bitbridge.net\",\n\"dy.fi\",\n\"tunk.org\",\n\"dyndns-at-home.com\",\n\"dyndns-at-work.com\",\n\"dyndns-blog.com\",\n\"dyndns-free.com\",\n\"dyndns-home.com\",\n\"dyndns-ip.com\",\n\"dyndns-mail.com\",\n\"dyndns-office.com\",\n\"dyndns-pics.com\",\n\"dyndns-remote.com\",\n\"dyndns-server.com\",\n\"dyndns-web.com\",\n\"dyndns-wiki.com\",\n\"dyndns-work.com\",\n\"dyndns.biz\",\n\"dyndns.info\",\n\"dyndns.org\",\n\"dyndns.tv\",\n\"at-band-camp.net\",\n\"ath.cx\",\n\"barrel-of-knowledge.info\",\n\"barrell-of-knowledge.info\",\n\"better-than.tv\",\n\"blogdns.com\",\n\"blogdns.net\",\n\"blogdns.org\",\n\"blogsite.org\",\n\"boldlygoingnowhere.org\",\n\"broke-it.net\",\n\"buyshouses.net\",\n\"cechire.com\",\n\"dnsalias.com\",\n\"dnsalias.net\",\n\"dnsalias.org\",\n\"dnsdojo.com\",\n\"dnsdojo.net\",\n\"dnsdojo.org\",\n\"does-it.net\",\n\"doesntexist.com\",\n\"doesntexist.org\",\n\"dontexist.com\",\n\"dontexist.net\",\n\"dontexist.org\",\n\"doomdns.com\",\n\"doomdns.org\",\n\"dvrdns.org\",\n\"dyn-o-saur.com\",\n\"dynalias.com\",\n\"dynalias.net\",\n\"dynalias.org\",\n\"dynathome.net\",\n\"dyndns.ws\",\n\"endofinternet.net\",\n\"endofinternet.org\",\n\"endoftheinternet.org\",\n\"est-a-la-maison.com\",\n\"est-a-la-masion.com\",\n\"est-le-patron.com\",\n\"est-mon-blogueur.com\",\n\"for-better.biz\",\n\"for-more.biz\",\n\"for-our.info\",\n\"for-some.biz\",\n\"for-the.biz\",\n\"forgot.her.name\",\n\"forgot.his.name\",\n\"from-ak.com\",\n\"from-al.com\",\n\"from-ar.com\",\n\"from-az.net\",\n\"from-ca.com\",\n\"from-co.net\",\n\"from-ct.com\",\n\"from-dc.com\",\n\"from-de.com\",\n\"from-fl.com\",\n\"from-ga.com\",\n\"from-hi.com\",\n\"from-ia.com\",\n\"from-id.com\",\n\"from-il.com\",\n\"from-in.com\",\n\"from-ks.com\",\n\"from-ky.com\",\n\"from-la.net\",\n\"from-ma.com\",\n\"from-md.com\",\n\"from-me.org\",\n\"from-mi.com\",\n\"from-mn.com\",\n\"from-mo.com\",\n\"from-ms.com\",\n\"from-mt.com\",\n\"from-nc.com\",\n\"from-nd.com\",\n\"from-ne.com\",\n\"from-nh.com\",\n\"from-nj.com\",\n\"from-nm.com\",\n\"from-nv.com\",\n\"from-ny.net\",\n\"from-oh.com\",\n\"from-ok.com\",\n\"from-or.com\",\n\"from-pa.com\",\n\"from-pr.com\",\n\"from-ri.com\",\n\"from-sc.com\",\n\"from-sd.com\",\n\"from-tn.com\",\n\"from-tx.com\",\n\"from-ut.com\",\n\"from-va.com\",\n\"from-vt.com\",\n\"from-wa.com\",\n\"from-wi.com\",\n\"from-wv.com\",\n\"from-wy.com\",\n\"ftpaccess.cc\",\n\"fuettertdasnetz.de\",\n\"game-host.org\",\n\"game-server.cc\",\n\"getmyip.com\",\n\"gets-it.net\",\n\"go.dyndns.org\",\n\"gotdns.com\",\n\"gotdns.org\",\n\"groks-the.info\",\n\"groks-this.info\",\n\"ham-radio-op.net\",\n\"here-for-more.info\",\n\"hobby-site.com\",\n\"hobby-site.org\",\n\"home.dyndns.org\",\n\"homedns.org\",\n\"homeftp.net\",\n\"homeftp.org\",\n\"homeip.net\",\n\"homelinux.com\",\n\"homelinux.net\",\n\"homelinux.org\",\n\"homeunix.com\",\n\"homeunix.net\",\n\"homeunix.org\",\n\"iamallama.com\",\n\"in-the-band.net\",\n\"is-a-anarchist.com\",\n\"is-a-blogger.com\",\n\"is-a-bookkeeper.com\",\n\"is-a-bruinsfan.org\",\n\"is-a-bulls-fan.com\",\n\"is-a-candidate.org\",\n\"is-a-caterer.com\",\n\"is-a-celticsfan.org\",\n\"is-a-chef.com\",\n\"is-a-chef.net\",\n\"is-a-chef.org\",\n\"is-a-conservative.com\",\n\"is-a-cpa.com\",\n\"is-a-cubicle-slave.com\",\n\"is-a-democrat.com\",\n\"is-a-designer.com\",\n\"is-a-doctor.com\",\n\"is-a-financialadvisor.com\",\n\"is-a-geek.com\",\n\"is-a-geek.net\",\n\"is-a-geek.org\",\n\"is-a-green.com\",\n\"is-a-guru.com\",\n\"is-a-hard-worker.com\",\n\"is-a-hunter.com\",\n\"is-a-knight.org\",\n\"is-a-landscaper.com\",\n\"is-a-lawyer.com\",\n\"is-a-liberal.com\",\n\"is-a-libertarian.com\",\n\"is-a-linux-user.org\",\n\"is-a-llama.com\",\n\"is-a-musician.com\",\n\"is-a-nascarfan.com\",\n\"is-a-nurse.com\",\n\"is-a-painter.com\",\n\"is-a-patsfan.org\",\n\"is-a-personaltrainer.com\",\n\"is-a-photographer.com\",\n\"is-a-player.com\",\n\"is-a-republican.com\",\n\"is-a-rockstar.com\",\n\"is-a-socialist.com\",\n\"is-a-soxfan.org\",\n\"is-a-student.com\",\n\"is-a-teacher.com\",\n\"is-a-techie.com\",\n\"is-a-therapist.com\",\n\"is-an-accountant.com\",\n\"is-an-actor.com\",\n\"is-an-actress.com\",\n\"is-an-anarchist.com\",\n\"is-an-artist.com\",\n\"is-an-engineer.com\",\n\"is-an-entertainer.com\",\n\"is-by.us\",\n\"is-certified.com\",\n\"is-found.org\",\n\"is-gone.com\",\n\"is-into-anime.com\",\n\"is-into-cars.com\",\n\"is-into-cartoons.com\",\n\"is-into-games.com\",\n\"is-leet.com\",\n\"is-lost.org\",\n\"is-not-certified.com\",\n\"is-saved.org\",\n\"is-slick.com\",\n\"is-uberleet.com\",\n\"is-very-bad.org\",\n\"is-very-evil.org\",\n\"is-very-good.org\",\n\"is-very-nice.org\",\n\"is-very-sweet.org\",\n\"is-with-theband.com\",\n\"isa-geek.com\",\n\"isa-geek.net\",\n\"isa-geek.org\",\n\"isa-hockeynut.com\",\n\"issmarterthanyou.com\",\n\"isteingeek.de\",\n\"istmein.de\",\n\"kicks-ass.net\",\n\"kicks-ass.org\",\n\"knowsitall.info\",\n\"land-4-sale.us\",\n\"lebtimnetz.de\",\n\"leitungsen.de\",\n\"likes-pie.com\",\n\"likescandy.com\",\n\"merseine.nu\",\n\"mine.nu\",\n\"misconfused.org\",\n\"mypets.ws\",\n\"myphotos.cc\",\n\"neat-url.com\",\n\"office-on-the.net\",\n\"on-the-web.tv\",\n\"podzone.net\",\n\"podzone.org\",\n\"readmyblog.org\",\n\"saves-the-whales.com\",\n\"scrapper-site.net\",\n\"scrapping.cc\",\n\"selfip.biz\",\n\"selfip.com\",\n\"selfip.info\",\n\"selfip.net\",\n\"selfip.org\",\n\"sells-for-less.com\",\n\"sells-for-u.com\",\n\"sells-it.net\",\n\"sellsyourhome.org\",\n\"servebbs.com\",\n\"servebbs.net\",\n\"servebbs.org\",\n\"serveftp.net\",\n\"serveftp.org\",\n\"servegame.org\",\n\"shacknet.nu\",\n\"simple-url.com\",\n\"space-to-rent.com\",\n\"stuff-4-sale.org\",\n\"stuff-4-sale.us\",\n\"teaches-yoga.com\",\n\"thruhere.net\",\n\"traeumtgerade.de\",\n\"webhop.biz\",\n\"webhop.info\",\n\"webhop.net\",\n\"webhop.org\",\n\"worse-than.tv\",\n\"writesthisblog.com\",\n\"ddnss.de\",\n\"dyn.ddnss.de\",\n\"dyndns.ddnss.de\",\n\"dyndns1.de\",\n\"dyn-ip24.de\",\n\"home-webserver.de\",\n\"dyn.home-webserver.de\",\n\"myhome-server.de\",\n\"ddnss.org\",\n\"definima.net\",\n\"definima.io\",\n\"ondigitalocean.app\",\n\"*.digitaloceanspaces.com\",\n\"bci.dnstrace.pro\",\n\"ddnsfree.com\",\n\"ddnsgeek.com\",\n\"giize.com\",\n\"gleeze.com\",\n\"kozow.com\",\n\"loseyourip.com\",\n\"ooguy.com\",\n\"theworkpc.com\",\n\"casacam.net\",\n\"dynu.net\",\n\"accesscam.org\",\n\"camdvr.org\",\n\"freeddns.org\",\n\"mywire.org\",\n\"webredirect.org\",\n\"myddns.rocks\",\n\"blogsite.xyz\",\n\"dynv6.net\",\n\"e4.cz\",\n\"eero.online\",\n\"eero-stage.online\",\n\"elementor.cloud\",\n\"elementor.cool\",\n\"en-root.fr\",\n\"mytuleap.com\",\n\"tuleap-partners.com\",\n\"encr.app\",\n\"encoreapi.com\",\n\"onred.one\",\n\"staging.onred.one\",\n\"eu.encoway.cloud\",\n\"eu.org\",\n\"al.eu.org\",\n\"asso.eu.org\",\n\"at.eu.org\",\n\"au.eu.org\",\n\"be.eu.org\",\n\"bg.eu.org\",\n\"ca.eu.org\",\n\"cd.eu.org\",\n\"ch.eu.org\",\n\"cn.eu.org\",\n\"cy.eu.org\",\n\"cz.eu.org\",\n\"de.eu.org\",\n\"dk.eu.org\",\n\"edu.eu.org\",\n\"ee.eu.org\",\n\"es.eu.org\",\n\"fi.eu.org\",\n\"fr.eu.org\",\n\"gr.eu.org\",\n\"hr.eu.org\",\n\"hu.eu.org\",\n\"ie.eu.org\",\n\"il.eu.org\",\n\"in.eu.org\",\n\"int.eu.org\",\n\"is.eu.org\",\n\"it.eu.org\",\n\"jp.eu.org\",\n\"kr.eu.org\",\n\"lt.eu.org\",\n\"lu.eu.org\",\n\"lv.eu.org\",\n\"mc.eu.org\",\n\"me.eu.org\",\n\"mk.eu.org\",\n\"mt.eu.org\",\n\"my.eu.org\",\n\"net.eu.org\",\n\"ng.eu.org\",\n\"nl.eu.org\",\n\"no.eu.org\",\n\"nz.eu.org\",\n\"paris.eu.org\",\n\"pl.eu.org\",\n\"pt.eu.org\",\n\"q-a.eu.org\",\n\"ro.eu.org\",\n\"ru.eu.org\",\n\"se.eu.org\",\n\"si.eu.org\",\n\"sk.eu.org\",\n\"tr.eu.org\",\n\"uk.eu.org\",\n\"us.eu.org\",\n\"eurodir.ru\",\n\"eu-1.evennode.com\",\n\"eu-2.evennode.com\",\n\"eu-3.evennode.com\",\n\"eu-4.evennode.com\",\n\"us-1.evennode.com\",\n\"us-2.evennode.com\",\n\"us-3.evennode.com\",\n\"us-4.evennode.com\",\n\"twmail.cc\",\n\"twmail.net\",\n\"twmail.org\",\n\"mymailer.com.tw\",\n\"url.tw\",\n\"onfabrica.com\",\n\"apps.fbsbx.com\",\n\"ru.net\",\n\"adygeya.ru\",\n\"bashkiria.ru\",\n\"bir.ru\",\n\"cbg.ru\",\n\"com.ru\",\n\"dagestan.ru\",\n\"grozny.ru\",\n\"kalmykia.ru\",\n\"kustanai.ru\",\n\"marine.ru\",\n\"mordovia.ru\",\n\"msk.ru\",\n\"mytis.ru\",\n\"nalchik.ru\",\n\"nov.ru\",\n\"pyatigorsk.ru\",\n\"spb.ru\",\n\"vladikavkaz.ru\",\n\"vladimir.ru\",\n\"abkhazia.su\",\n\"adygeya.su\",\n\"aktyubinsk.su\",\n\"arkhangelsk.su\",\n\"armenia.su\",\n\"ashgabad.su\",\n\"azerbaijan.su\",\n\"balashov.su\",\n\"bashkiria.su\",\n\"bryansk.su\",\n\"bukhara.su\",\n\"chimkent.su\",\n\"dagestan.su\",\n\"east-kazakhstan.su\",\n\"exnet.su\",\n\"georgia.su\",\n\"grozny.su\",\n\"ivanovo.su\",\n\"jambyl.su\",\n\"kalmykia.su\",\n\"kaluga.su\",\n\"karacol.su\",\n\"karaganda.su\",\n\"karelia.su\",\n\"khakassia.su\",\n\"krasnodar.su\",\n\"kurgan.su\",\n\"kustanai.su\",\n\"lenug.su\",\n\"mangyshlak.su\",\n\"mordovia.su\",\n\"msk.su\",\n\"murmansk.su\",\n\"nalchik.su\",\n\"navoi.su\",\n\"north-kazakhstan.su\",\n\"nov.su\",\n\"obninsk.su\",\n\"penza.su\",\n\"pokrovsk.su\",\n\"sochi.su\",\n\"spb.su\",\n\"tashkent.su\",\n\"termez.su\",\n\"togliatti.su\",\n\"troitsk.su\",\n\"tselinograd.su\",\n\"tula.su\",\n\"tuva.su\",\n\"vladikavkaz.su\",\n\"vladimir.su\",\n\"vologda.su\",\n\"channelsdvr.net\",\n\"u.channelsdvr.net\",\n\"edgecompute.app\",\n\"fastly-terrarium.com\",\n\"fastlylb.net\",\n\"map.fastlylb.net\",\n\"freetls.fastly.net\",\n\"map.fastly.net\",\n\"a.prod.fastly.net\",\n\"global.prod.fastly.net\",\n\"a.ssl.fastly.net\",\n\"b.ssl.fastly.net\",\n\"global.ssl.fastly.net\",\n\"fastvps-server.com\",\n\"fastvps.host\",\n\"myfast.host\",\n\"fastvps.site\",\n\"myfast.space\",\n\"fedorainfracloud.org\",\n\"fedorapeople.org\",\n\"cloud.fedoraproject.org\",\n\"app.os.fedoraproject.org\",\n\"app.os.stg.fedoraproject.org\",\n\"conn.uk\",\n\"copro.uk\",\n\"hosp.uk\",\n\"mydobiss.com\",\n\"fh-muenster.io\",\n\"filegear.me\",\n\"filegear-au.me\",\n\"filegear-de.me\",\n\"filegear-gb.me\",\n\"filegear-ie.me\",\n\"filegear-jp.me\",\n\"filegear-sg.me\",\n\"firebaseapp.com\",\n\"fireweb.app\",\n\"flap.id\",\n\"onflashdrive.app\",\n\"fldrv.com\",\n\"fly.dev\",\n\"edgeapp.net\",\n\"shw.io\",\n\"flynnhosting.net\",\n\"forgeblocks.com\",\n\"id.forgerock.io\",\n\"framer.app\",\n\"framercanvas.com\",\n\"*.frusky.de\",\n\"ravpage.co.il\",\n\"0e.vc\",\n\"freebox-os.com\",\n\"freeboxos.com\",\n\"fbx-os.fr\",\n\"fbxos.fr\",\n\"freebox-os.fr\",\n\"freeboxos.fr\",\n\"freedesktop.org\",\n\"freemyip.com\",\n\"wien.funkfeuer.at\",\n\"*.futurecms.at\",\n\"*.ex.futurecms.at\",\n\"*.in.futurecms.at\",\n\"futurehosting.at\",\n\"futuremailing.at\",\n\"*.ex.ortsinfo.at\",\n\"*.kunden.ortsinfo.at\",\n\"*.statics.cloud\",\n\"independent-commission.uk\",\n\"independent-inquest.uk\",\n\"independent-inquiry.uk\",\n\"independent-panel.uk\",\n\"independent-review.uk\",\n\"public-inquiry.uk\",\n\"royal-commission.uk\",\n\"campaign.gov.uk\",\n\"service.gov.uk\",\n\"api.gov.uk\",\n\"gehirn.ne.jp\",\n\"usercontent.jp\",\n\"gentapps.com\",\n\"gentlentapis.com\",\n\"lab.ms\",\n\"cdn-edges.net\",\n\"ghost.io\",\n\"gsj.bz\",\n\"githubusercontent.com\",\n\"githubpreview.dev\",\n\"github.io\",\n\"gitlab.io\",\n\"gitapp.si\",\n\"gitpage.si\",\n\"glitch.me\",\n\"nog.community\",\n\"co.ro\",\n\"shop.ro\",\n\"lolipop.io\",\n\"angry.jp\",\n\"babyblue.jp\",\n\"babymilk.jp\",\n\"backdrop.jp\",\n\"bambina.jp\",\n\"bitter.jp\",\n\"blush.jp\",\n\"boo.jp\",\n\"boy.jp\",\n\"boyfriend.jp\",\n\"but.jp\",\n\"candypop.jp\",\n\"capoo.jp\",\n\"catfood.jp\",\n\"cheap.jp\",\n\"chicappa.jp\",\n\"chillout.jp\",\n\"chips.jp\",\n\"chowder.jp\",\n\"chu.jp\",\n\"ciao.jp\",\n\"cocotte.jp\",\n\"coolblog.jp\",\n\"cranky.jp\",\n\"cutegirl.jp\",\n\"daa.jp\",\n\"deca.jp\",\n\"deci.jp\",\n\"digick.jp\",\n\"egoism.jp\",\n\"fakefur.jp\",\n\"fem.jp\",\n\"flier.jp\",\n\"floppy.jp\",\n\"fool.jp\",\n\"frenchkiss.jp\",\n\"girlfriend.jp\",\n\"girly.jp\",\n\"gloomy.jp\",\n\"gonna.jp\",\n\"greater.jp\",\n\"hacca.jp\",\n\"heavy.jp\",\n\"her.jp\",\n\"hiho.jp\",\n\"hippy.jp\",\n\"holy.jp\",\n\"hungry.jp\",\n\"icurus.jp\",\n\"itigo.jp\",\n\"jellybean.jp\",\n\"kikirara.jp\",\n\"kill.jp\",\n\"kilo.jp\",\n\"kuron.jp\",\n\"littlestar.jp\",\n\"lolipopmc.jp\",\n\"lolitapunk.jp\",\n\"lomo.jp\",\n\"lovepop.jp\",\n\"lovesick.jp\",\n\"main.jp\",\n\"mods.jp\",\n\"mond.jp\",\n\"mongolian.jp\",\n\"moo.jp\",\n\"namaste.jp\",\n\"nikita.jp\",\n\"nobushi.jp\",\n\"noor.jp\",\n\"oops.jp\",\n\"parallel.jp\",\n\"parasite.jp\",\n\"pecori.jp\",\n\"peewee.jp\",\n\"penne.jp\",\n\"pepper.jp\",\n\"perma.jp\",\n\"pigboat.jp\",\n\"pinoko.jp\",\n\"punyu.jp\",\n\"pupu.jp\",\n\"pussycat.jp\",\n\"pya.jp\",\n\"raindrop.jp\",\n\"readymade.jp\",\n\"sadist.jp\",\n\"schoolbus.jp\",\n\"secret.jp\",\n\"staba.jp\",\n\"stripper.jp\",\n\"sub.jp\",\n\"sunnyday.jp\",\n\"thick.jp\",\n\"tonkotsu.jp\",\n\"under.jp\",\n\"upper.jp\",\n\"velvet.jp\",\n\"verse.jp\",\n\"versus.jp\",\n\"vivian.jp\",\n\"watson.jp\",\n\"weblike.jp\",\n\"whitesnow.jp\",\n\"zombie.jp\",\n\"heteml.net\",\n\"cloudapps.digital\",\n\"london.cloudapps.digital\",\n\"pymnt.uk\",\n\"homeoffice.gov.uk\",\n\"ro.im\",\n\"goip.de\",\n\"run.app\",\n\"a.run.app\",\n\"web.app\",\n\"*.0emm.com\",\n\"appspot.com\",\n\"*.r.appspot.com\",\n\"codespot.com\",\n\"googleapis.com\",\n\"googlecode.com\",\n\"pagespeedmobilizer.com\",\n\"publishproxy.com\",\n\"withgoogle.com\",\n\"withyoutube.com\",\n\"*.gateway.dev\",\n\"cloud.goog\",\n\"translate.goog\",\n\"*.usercontent.goog\",\n\"cloudfunctions.net\",\n\"blogspot.ae\",\n\"blogspot.al\",\n\"blogspot.am\",\n\"blogspot.ba\",\n\"blogspot.be\",\n\"blogspot.bg\",\n\"blogspot.bj\",\n\"blogspot.ca\",\n\"blogspot.cf\",\n\"blogspot.ch\",\n\"blogspot.cl\",\n\"blogspot.co.at\",\n\"blogspot.co.id\",\n\"blogspot.co.il\",\n\"blogspot.co.ke\",\n\"blogspot.co.nz\",\n\"blogspot.co.uk\",\n\"blogspot.co.za\",\n\"blogspot.com\",\n\"blogspot.com.ar\",\n\"blogspot.com.au\",\n\"blogspot.com.br\",\n\"blogspot.com.by\",\n\"blogspot.com.co\",\n\"blogspot.com.cy\",\n\"blogspot.com.ee\",\n\"blogspot.com.eg\",\n\"blogspot.com.es\",\n\"blogspot.com.mt\",\n\"blogspot.com.ng\",\n\"blogspot.com.tr\",\n\"blogspot.com.uy\",\n\"blogspot.cv\",\n\"blogspot.cz\",\n\"blogspot.de\",\n\"blogspot.dk\",\n\"blogspot.fi\",\n\"blogspot.fr\",\n\"blogspot.gr\",\n\"blogspot.hk\",\n\"blogspot.hr\",\n\"blogspot.hu\",\n\"blogspot.ie\",\n\"blogspot.in\",\n\"blogspot.is\",\n\"blogspot.it\",\n\"blogspot.jp\",\n\"blogspot.kr\",\n\"blogspot.li\",\n\"blogspot.lt\",\n\"blogspot.lu\",\n\"blogspot.md\",\n\"blogspot.mk\",\n\"blogspot.mr\",\n\"blogspot.mx\",\n\"blogspot.my\",\n\"blogspot.nl\",\n\"blogspot.no\",\n\"blogspot.pe\",\n\"blogspot.pt\",\n\"blogspot.qa\",\n\"blogspot.re\",\n\"blogspot.ro\",\n\"blogspot.rs\",\n\"blogspot.ru\",\n\"blogspot.se\",\n\"blogspot.sg\",\n\"blogspot.si\",\n\"blogspot.sk\",\n\"blogspot.sn\",\n\"blogspot.td\",\n\"blogspot.tw\",\n\"blogspot.ug\",\n\"blogspot.vn\",\n\"goupile.fr\",\n\"gov.nl\",\n\"awsmppl.com\",\n\"g\u00FCnstigbestellen.de\",\n\"g\u00FCnstigliefern.de\",\n\"fin.ci\",\n\"free.hr\",\n\"caa.li\",\n\"ua.rs\",\n\"conf.se\",\n\"hs.zone\",\n\"hs.run\",\n\"hashbang.sh\",\n\"hasura.app\",\n\"hasura-app.io\",\n\"pages.it.hs-heilbronn.de\",\n\"hepforge.org\",\n\"herokuapp.com\",\n\"herokussl.com\",\n\"ravendb.cloud\",\n\"myravendb.com\",\n\"ravendb.community\",\n\"ravendb.me\",\n\"development.run\",\n\"ravendb.run\",\n\"homesklep.pl\",\n\"secaas.hk\",\n\"hoplix.shop\",\n\"orx.biz\",\n\"biz.gl\",\n\"col.ng\",\n\"firm.ng\",\n\"gen.ng\",\n\"ltd.ng\",\n\"ngo.ng\",\n\"edu.scot\",\n\"sch.so\",\n\"hostyhosting.io\",\n\"h\u00E4kkinen.fi\",\n\"*.moonscale.io\",\n\"moonscale.net\",\n\"iki.fi\",\n\"ibxos.it\",\n\"iliadboxos.it\",\n\"impertrixcdn.com\",\n\"impertrix.com\",\n\"smushcdn.com\",\n\"wphostedmail.com\",\n\"wpmucdn.com\",\n\"tempurl.host\",\n\"wpmudev.host\",\n\"dyn-berlin.de\",\n\"in-berlin.de\",\n\"in-brb.de\",\n\"in-butter.de\",\n\"in-dsl.de\",\n\"in-dsl.net\",\n\"in-dsl.org\",\n\"in-vpn.de\",\n\"in-vpn.net\",\n\"in-vpn.org\",\n\"biz.at\",\n\"info.at\",\n\"info.cx\",\n\"ac.leg.br\",\n\"al.leg.br\",\n\"am.leg.br\",\n\"ap.leg.br\",\n\"ba.leg.br\",\n\"ce.leg.br\",\n\"df.leg.br\",\n\"es.leg.br\",\n\"go.leg.br\",\n\"ma.leg.br\",\n\"mg.leg.br\",\n\"ms.leg.br\",\n\"mt.leg.br\",\n\"pa.leg.br\",\n\"pb.leg.br\",\n\"pe.leg.br\",\n\"pi.leg.br\",\n\"pr.leg.br\",\n\"rj.leg.br\",\n\"rn.leg.br\",\n\"ro.leg.br\",\n\"rr.leg.br\",\n\"rs.leg.br\",\n\"sc.leg.br\",\n\"se.leg.br\",\n\"sp.leg.br\",\n\"to.leg.br\",\n\"pixolino.com\",\n\"na4u.ru\",\n\"iopsys.se\",\n\"ipifony.net\",\n\"iservschule.de\",\n\"mein-iserv.de\",\n\"schulplattform.de\",\n\"schulserver.de\",\n\"test-iserv.de\",\n\"iserv.dev\",\n\"iobb.net\",\n\"mel.cloudlets.com.au\",\n\"cloud.interhostsolutions.be\",\n\"users.scale.virtualcloud.com.br\",\n\"mycloud.by\",\n\"alp1.ae.flow.ch\",\n\"appengine.flow.ch\",\n\"es-1.axarnet.cloud\",\n\"diadem.cloud\",\n\"vip.jelastic.cloud\",\n\"jele.cloud\",\n\"it1.eur.aruba.jenv-aruba.cloud\",\n\"it1.jenv-aruba.cloud\",\n\"keliweb.cloud\",\n\"cs.keliweb.cloud\",\n\"oxa.cloud\",\n\"tn.oxa.cloud\",\n\"uk.oxa.cloud\",\n\"primetel.cloud\",\n\"uk.primetel.cloud\",\n\"ca.reclaim.cloud\",\n\"uk.reclaim.cloud\",\n\"us.reclaim.cloud\",\n\"ch.trendhosting.cloud\",\n\"de.trendhosting.cloud\",\n\"jele.club\",\n\"amscompute.com\",\n\"clicketcloud.com\",\n\"dopaas.com\",\n\"hidora.com\",\n\"paas.hosted-by-previder.com\",\n\"rag-cloud.hosteur.com\",\n\"rag-cloud-ch.hosteur.com\",\n\"jcloud.ik-server.com\",\n\"jcloud-ver-jpc.ik-server.com\",\n\"demo.jelastic.com\",\n\"kilatiron.com\",\n\"paas.massivegrid.com\",\n\"jed.wafaicloud.com\",\n\"lon.wafaicloud.com\",\n\"ryd.wafaicloud.com\",\n\"j.scaleforce.com.cy\",\n\"jelastic.dogado.eu\",\n\"fi.cloudplatform.fi\",\n\"demo.datacenter.fi\",\n\"paas.datacenter.fi\",\n\"jele.host\",\n\"mircloud.host\",\n\"paas.beebyte.io\",\n\"sekd1.beebyteapp.io\",\n\"jele.io\",\n\"cloud-fr1.unispace.io\",\n\"jc.neen.it\",\n\"cloud.jelastic.open.tim.it\",\n\"jcloud.kz\",\n\"upaas.kazteleport.kz\",\n\"cloudjiffy.net\",\n\"fra1-de.cloudjiffy.net\",\n\"west1-us.cloudjiffy.net\",\n\"jls-sto1.elastx.net\",\n\"jls-sto2.elastx.net\",\n\"jls-sto3.elastx.net\",\n\"faststacks.net\",\n\"fr-1.paas.massivegrid.net\",\n\"lon-1.paas.massivegrid.net\",\n\"lon-2.paas.massivegrid.net\",\n\"ny-1.paas.massivegrid.net\",\n\"ny-2.paas.massivegrid.net\",\n\"sg-1.paas.massivegrid.net\",\n\"jelastic.saveincloud.net\",\n\"nordeste-idc.saveincloud.net\",\n\"j.scaleforce.net\",\n\"jelastic.tsukaeru.net\",\n\"sdscloud.pl\",\n\"unicloud.pl\",\n\"mircloud.ru\",\n\"jelastic.regruhosting.ru\",\n\"enscaled.sg\",\n\"jele.site\",\n\"jelastic.team\",\n\"orangecloud.tn\",\n\"j.layershift.co.uk\",\n\"phx.enscaled.us\",\n\"mircloud.us\",\n\"myjino.ru\",\n\"*.hosting.myjino.ru\",\n\"*.landing.myjino.ru\",\n\"*.spectrum.myjino.ru\",\n\"*.vps.myjino.ru\",\n\"jotelulu.cloud\",\n\"*.triton.zone\",\n\"*.cns.joyent.com\",\n\"js.org\",\n\"kaas.gg\",\n\"khplay.nl\",\n\"ktistory.com\",\n\"kapsi.fi\",\n\"keymachine.de\",\n\"kinghost.net\",\n\"uni5.net\",\n\"knightpoint.systems\",\n\"koobin.events\",\n\"oya.to\",\n\"kuleuven.cloud\",\n\"ezproxy.kuleuven.be\",\n\"co.krd\",\n\"edu.krd\",\n\"krellian.net\",\n\"webthings.io\",\n\"git-repos.de\",\n\"lcube-server.de\",\n\"svn-repos.de\",\n\"leadpages.co\",\n\"lpages.co\",\n\"lpusercontent.com\",\n\"lelux.site\",\n\"co.business\",\n\"co.education\",\n\"co.events\",\n\"co.financial\",\n\"co.network\",\n\"co.place\",\n\"co.technology\",\n\"app.lmpm.com\",\n\"linkyard.cloud\",\n\"linkyard-cloud.ch\",\n\"members.linode.com\",\n\"*.nodebalancer.linode.com\",\n\"*.linodeobjects.com\",\n\"ip.linodeusercontent.com\",\n\"we.bs\",\n\"*.user.localcert.dev\",\n\"localzone.xyz\",\n\"loginline.app\",\n\"loginline.dev\",\n\"loginline.io\",\n\"loginline.services\",\n\"loginline.site\",\n\"servers.run\",\n\"lohmus.me\",\n\"krasnik.pl\",\n\"leczna.pl\",\n\"lubartow.pl\",\n\"lublin.pl\",\n\"poniatowa.pl\",\n\"swidnik.pl\",\n\"glug.org.uk\",\n\"lug.org.uk\",\n\"lugs.org.uk\",\n\"barsy.bg\",\n\"barsy.co.uk\",\n\"barsyonline.co.uk\",\n\"barsycenter.com\",\n\"barsyonline.com\",\n\"barsy.club\",\n\"barsy.de\",\n\"barsy.eu\",\n\"barsy.in\",\n\"barsy.info\",\n\"barsy.io\",\n\"barsy.me\",\n\"barsy.menu\",\n\"barsy.mobi\",\n\"barsy.net\",\n\"barsy.online\",\n\"barsy.org\",\n\"barsy.pro\",\n\"barsy.pub\",\n\"barsy.ro\",\n\"barsy.shop\",\n\"barsy.site\",\n\"barsy.support\",\n\"barsy.uk\",\n\"*.magentosite.cloud\",\n\"mayfirst.info\",\n\"mayfirst.org\",\n\"hb.cldmail.ru\",\n\"cn.vu\",\n\"mazeplay.com\",\n\"mcpe.me\",\n\"mcdir.me\",\n\"mcdir.ru\",\n\"mcpre.ru\",\n\"vps.mcdir.ru\",\n\"mediatech.by\",\n\"mediatech.dev\",\n\"hra.health\",\n\"miniserver.com\",\n\"memset.net\",\n\"messerli.app\",\n\"*.cloud.metacentrum.cz\",\n\"custom.metacentrum.cz\",\n\"flt.cloud.muni.cz\",\n\"usr.cloud.muni.cz\",\n\"meteorapp.com\",\n\"eu.meteorapp.com\",\n\"co.pl\",\n\"*.azurecontainer.io\",\n\"azurewebsites.net\",\n\"azure-mobile.net\",\n\"cloudapp.net\",\n\"azurestaticapps.net\",\n\"1.azurestaticapps.net\",\n\"centralus.azurestaticapps.net\",\n\"eastasia.azurestaticapps.net\",\n\"eastus2.azurestaticapps.net\",\n\"westeurope.azurestaticapps.net\",\n\"westus2.azurestaticapps.net\",\n\"csx.cc\",\n\"mintere.site\",\n\"forte.id\",\n\"mozilla-iot.org\",\n\"bmoattachments.org\",\n\"net.ru\",\n\"org.ru\",\n\"pp.ru\",\n\"hostedpi.com\",\n\"customer.mythic-beasts.com\",\n\"caracal.mythic-beasts.com\",\n\"fentiger.mythic-beasts.com\",\n\"lynx.mythic-beasts.com\",\n\"ocelot.mythic-beasts.com\",\n\"oncilla.mythic-beasts.com\",\n\"onza.mythic-beasts.com\",\n\"sphinx.mythic-beasts.com\",\n\"vs.mythic-beasts.com\",\n\"x.mythic-beasts.com\",\n\"yali.mythic-beasts.com\",\n\"cust.retrosnub.co.uk\",\n\"ui.nabu.casa\",\n\"pony.club\",\n\"of.fashion\",\n\"in.london\",\n\"of.london\",\n\"from.marketing\",\n\"with.marketing\",\n\"for.men\",\n\"repair.men\",\n\"and.mom\",\n\"for.mom\",\n\"for.one\",\n\"under.one\",\n\"for.sale\",\n\"that.win\",\n\"from.work\",\n\"to.work\",\n\"cloud.nospamproxy.com\",\n\"netlify.app\",\n\"4u.com\",\n\"ngrok.io\",\n\"nh-serv.co.uk\",\n\"nfshost.com\",\n\"*.developer.app\",\n\"noop.app\",\n\"*.northflank.app\",\n\"*.build.run\",\n\"*.code.run\",\n\"*.database.run\",\n\"*.migration.run\",\n\"noticeable.news\",\n\"dnsking.ch\",\n\"mypi.co\",\n\"n4t.co\",\n\"001www.com\",\n\"ddnslive.com\",\n\"myiphost.com\",\n\"forumz.info\",\n\"16-b.it\",\n\"32-b.it\",\n\"64-b.it\",\n\"soundcast.me\",\n\"tcp4.me\",\n\"dnsup.net\",\n\"hicam.net\",\n\"now-dns.net\",\n\"ownip.net\",\n\"vpndns.net\",\n\"dynserv.org\",\n\"now-dns.org\",\n\"x443.pw\",\n\"now-dns.top\",\n\"ntdll.top\",\n\"freeddns.us\",\n\"crafting.xyz\",\n\"zapto.xyz\",\n\"nsupdate.info\",\n\"nerdpol.ovh\",\n\"blogsyte.com\",\n\"brasilia.me\",\n\"cable-modem.org\",\n\"ciscofreak.com\",\n\"collegefan.org\",\n\"couchpotatofries.org\",\n\"damnserver.com\",\n\"ddns.me\",\n\"ditchyourip.com\",\n\"dnsfor.me\",\n\"dnsiskinky.com\",\n\"dvrcam.info\",\n\"dynns.com\",\n\"eating-organic.net\",\n\"fantasyleague.cc\",\n\"geekgalaxy.com\",\n\"golffan.us\",\n\"health-carereform.com\",\n\"homesecuritymac.com\",\n\"homesecuritypc.com\",\n\"hopto.me\",\n\"ilovecollege.info\",\n\"loginto.me\",\n\"mlbfan.org\",\n\"mmafan.biz\",\n\"myactivedirectory.com\",\n\"mydissent.net\",\n\"myeffect.net\",\n\"mymediapc.net\",\n\"mypsx.net\",\n\"mysecuritycamera.com\",\n\"mysecuritycamera.net\",\n\"mysecuritycamera.org\",\n\"net-freaks.com\",\n\"nflfan.org\",\n\"nhlfan.net\",\n\"no-ip.ca\",\n\"no-ip.co.uk\",\n\"no-ip.net\",\n\"noip.us\",\n\"onthewifi.com\",\n\"pgafan.net\",\n\"point2this.com\",\n\"pointto.us\",\n\"privatizehealthinsurance.net\",\n\"quicksytes.com\",\n\"read-books.org\",\n\"securitytactics.com\",\n\"serveexchange.com\",\n\"servehumour.com\",\n\"servep2p.com\",\n\"servesarcasm.com\",\n\"stufftoread.com\",\n\"ufcfan.org\",\n\"unusualperson.com\",\n\"workisboring.com\",\n\"3utilities.com\",\n\"bounceme.net\",\n\"ddns.net\",\n\"ddnsking.com\",\n\"gotdns.ch\",\n\"hopto.org\",\n\"myftp.biz\",\n\"myftp.org\",\n\"myvnc.com\",\n\"no-ip.biz\",\n\"no-ip.info\",\n\"no-ip.org\",\n\"noip.me\",\n\"redirectme.net\",\n\"servebeer.com\",\n\"serveblog.net\",\n\"servecounterstrike.com\",\n\"serveftp.com\",\n\"servegame.com\",\n\"servehalflife.com\",\n\"servehttp.com\",\n\"serveirc.com\",\n\"serveminecraft.net\",\n\"servemp3.com\",\n\"servepics.com\",\n\"servequake.com\",\n\"sytes.net\",\n\"webhop.me\",\n\"zapto.org\",\n\"stage.nodeart.io\",\n\"pcloud.host\",\n\"nyc.mn\",\n\"static.observableusercontent.com\",\n\"cya.gg\",\n\"omg.lol\",\n\"cloudycluster.net\",\n\"omniwe.site\",\n\"service.one\",\n\"nid.io\",\n\"opensocial.site\",\n\"opencraft.hosting\",\n\"orsites.com\",\n\"operaunite.com\",\n\"tech.orange\",\n\"authgear-staging.com\",\n\"authgearapps.com\",\n\"skygearapp.com\",\n\"outsystemscloud.com\",\n\"*.webpaas.ovh.net\",\n\"*.hosting.ovh.net\",\n\"ownprovider.com\",\n\"own.pm\",\n\"*.owo.codes\",\n\"ox.rs\",\n\"oy.lc\",\n\"pgfog.com\",\n\"pagefrontapp.com\",\n\"pagexl.com\",\n\"*.paywhirl.com\",\n\"bar0.net\",\n\"bar1.net\",\n\"bar2.net\",\n\"rdv.to\",\n\"art.pl\",\n\"gliwice.pl\",\n\"krakow.pl\",\n\"poznan.pl\",\n\"wroc.pl\",\n\"zakopane.pl\",\n\"pantheonsite.io\",\n\"gotpantheon.com\",\n\"mypep.link\",\n\"perspecta.cloud\",\n\"lk3.ru\",\n\"on-web.fr\",\n\"bc.platform.sh\",\n\"ent.platform.sh\",\n\"eu.platform.sh\",\n\"us.platform.sh\",\n\"*.platformsh.site\",\n\"*.tst.site\",\n\"platter-app.com\",\n\"platter-app.dev\",\n\"platterp.us\",\n\"pdns.page\",\n\"plesk.page\",\n\"pleskns.com\",\n\"dyn53.io\",\n\"onporter.run\",\n\"co.bn\",\n\"postman-echo.com\",\n\"pstmn.io\",\n\"mock.pstmn.io\",\n\"httpbin.org\",\n\"prequalifyme.today\",\n\"xen.prgmr.com\",\n\"priv.at\",\n\"prvcy.page\",\n\"*.dweb.link\",\n\"protonet.io\",\n\"chirurgiens-dentistes-en-france.fr\",\n\"byen.site\",\n\"pubtls.org\",\n\"pythonanywhere.com\",\n\"eu.pythonanywhere.com\",\n\"qoto.io\",\n\"qualifioapp.com\",\n\"qbuser.com\",\n\"cloudsite.builders\",\n\"instances.spawn.cc\",\n\"instantcloud.cn\",\n\"ras.ru\",\n\"qa2.com\",\n\"qcx.io\",\n\"*.sys.qcx.io\",\n\"dev-myqnapcloud.com\",\n\"alpha-myqnapcloud.com\",\n\"myqnapcloud.com\",\n\"*.quipelements.com\",\n\"vapor.cloud\",\n\"vaporcloud.io\",\n\"rackmaze.com\",\n\"rackmaze.net\",\n\"g.vbrplsbx.io\",\n\"*.on-k3s.io\",\n\"*.on-rancher.cloud\",\n\"*.on-rio.io\",\n\"readthedocs.io\",\n\"rhcloud.com\",\n\"app.render.com\",\n\"onrender.com\",\n\"repl.co\",\n\"id.repl.co\",\n\"repl.run\",\n\"resindevice.io\",\n\"devices.resinstaging.io\",\n\"hzc.io\",\n\"wellbeingzone.eu\",\n\"wellbeingzone.co.uk\",\n\"adimo.co.uk\",\n\"itcouldbewor.se\",\n\"git-pages.rit.edu\",\n\"rocky.page\",\n\"\u0431\u0438\u0437.\u0440\u0443\u0441\",\n\"\u043A\u043E\u043C.\u0440\u0443\u0441\",\n\"\u043A\u0440\u044B\u043C.\u0440\u0443\u0441\",\n\"\u043C\u0438\u0440.\u0440\u0443\u0441\",\n\"\u043C\u0441\u043A.\u0440\u0443\u0441\",\n\"\u043E\u0440\u0433.\u0440\u0443\u0441\",\n\"\u0441\u0430\u043C\u0430\u0440\u0430.\u0440\u0443\u0441\",\n\"\u0441\u043E\u0447\u0438.\u0440\u0443\u0441\",\n\"\u0441\u043F\u0431.\u0440\u0443\u0441\",\n\"\u044F.\u0440\u0443\u0441\",\n\"*.builder.code.com\",\n\"*.dev-builder.code.com\",\n\"*.stg-builder.code.com\",\n\"sandcats.io\",\n\"logoip.de\",\n\"logoip.com\",\n\"fr-par-1.baremetal.scw.cloud\",\n\"fr-par-2.baremetal.scw.cloud\",\n\"nl-ams-1.baremetal.scw.cloud\",\n\"fnc.fr-par.scw.cloud\",\n\"functions.fnc.fr-par.scw.cloud\",\n\"k8s.fr-par.scw.cloud\",\n\"nodes.k8s.fr-par.scw.cloud\",\n\"s3.fr-par.scw.cloud\",\n\"s3-website.fr-par.scw.cloud\",\n\"whm.fr-par.scw.cloud\",\n\"priv.instances.scw.cloud\",\n\"pub.instances.scw.cloud\",\n\"k8s.scw.cloud\",\n\"k8s.nl-ams.scw.cloud\",\n\"nodes.k8s.nl-ams.scw.cloud\",\n\"s3.nl-ams.scw.cloud\",\n\"s3-website.nl-ams.scw.cloud\",\n\"whm.nl-ams.scw.cloud\",\n\"k8s.pl-waw.scw.cloud\",\n\"nodes.k8s.pl-waw.scw.cloud\",\n\"s3.pl-waw.scw.cloud\",\n\"s3-website.pl-waw.scw.cloud\",\n\"scalebook.scw.cloud\",\n\"smartlabeling.scw.cloud\",\n\"dedibox.fr\",\n\"schokokeks.net\",\n\"gov.scot\",\n\"service.gov.scot\",\n\"scrysec.com\",\n\"firewall-gateway.com\",\n\"firewall-gateway.de\",\n\"my-gateway.de\",\n\"my-router.de\",\n\"spdns.de\",\n\"spdns.eu\",\n\"firewall-gateway.net\",\n\"my-firewall.org\",\n\"myfirewall.org\",\n\"spdns.org\",\n\"seidat.net\",\n\"sellfy.store\",\n\"senseering.net\",\n\"minisite.ms\",\n\"magnet.page\",\n\"biz.ua\",\n\"co.ua\",\n\"pp.ua\",\n\"shiftcrypto.dev\",\n\"shiftcrypto.io\",\n\"shiftedit.io\",\n\"myshopblocks.com\",\n\"myshopify.com\",\n\"shopitsite.com\",\n\"shopware.store\",\n\"mo-siemens.io\",\n\"1kapp.com\",\n\"appchizi.com\",\n\"applinzi.com\",\n\"sinaapp.com\",\n\"vipsinaapp.com\",\n\"siteleaf.net\",\n\"bounty-full.com\",\n\"alpha.bounty-full.com\",\n\"beta.bounty-full.com\",\n\"small-web.org\",\n\"vp4.me\",\n\"try-snowplow.com\",\n\"srht.site\",\n\"stackhero-network.com\",\n\"musician.io\",\n\"novecore.site\",\n\"static.land\",\n\"dev.static.land\",\n\"sites.static.land\",\n\"storebase.store\",\n\"vps-host.net\",\n\"atl.jelastic.vps-host.net\",\n\"njs.jelastic.vps-host.net\",\n\"ric.jelastic.vps-host.net\",\n\"playstation-cloud.com\",\n\"apps.lair.io\",\n\"*.stolos.io\",\n\"spacekit.io\",\n\"customer.speedpartner.de\",\n\"myspreadshop.at\",\n\"myspreadshop.com.au\",\n\"myspreadshop.be\",\n\"myspreadshop.ca\",\n\"myspreadshop.ch\",\n\"myspreadshop.com\",\n\"myspreadshop.de\",\n\"myspreadshop.dk\",\n\"myspreadshop.es\",\n\"myspreadshop.fi\",\n\"myspreadshop.fr\",\n\"myspreadshop.ie\",\n\"myspreadshop.it\",\n\"myspreadshop.net\",\n\"myspreadshop.nl\",\n\"myspreadshop.no\",\n\"myspreadshop.pl\",\n\"myspreadshop.se\",\n\"myspreadshop.co.uk\",\n\"api.stdlib.com\",\n\"storj.farm\",\n\"utwente.io\",\n\"soc.srcf.net\",\n\"user.srcf.net\",\n\"temp-dns.com\",\n\"supabase.co\",\n\"supabase.in\",\n\"supabase.net\",\n\"su.paba.se\",\n\"*.s5y.io\",\n\"*.sensiosite.cloud\",\n\"syncloud.it\",\n\"dscloud.biz\",\n\"direct.quickconnect.cn\",\n\"dsmynas.com\",\n\"familyds.com\",\n\"diskstation.me\",\n\"dscloud.me\",\n\"i234.me\",\n\"myds.me\",\n\"synology.me\",\n\"dscloud.mobi\",\n\"dsmynas.net\",\n\"familyds.net\",\n\"dsmynas.org\",\n\"familyds.org\",\n\"vpnplus.to\",\n\"direct.quickconnect.to\",\n\"tabitorder.co.il\",\n\"taifun-dns.de\",\n\"beta.tailscale.net\",\n\"ts.net\",\n\"gda.pl\",\n\"gdansk.pl\",\n\"gdynia.pl\",\n\"med.pl\",\n\"sopot.pl\",\n\"site.tb-hosting.com\",\n\"edugit.io\",\n\"s3.teckids.org\",\n\"telebit.app\",\n\"telebit.io\",\n\"*.telebit.xyz\",\n\"gwiddle.co.uk\",\n\"*.firenet.ch\",\n\"*.svc.firenet.ch\",\n\"reservd.com\",\n\"thingdustdata.com\",\n\"cust.dev.thingdust.io\",\n\"cust.disrec.thingdust.io\",\n\"cust.prod.thingdust.io\",\n\"cust.testing.thingdust.io\",\n\"reservd.dev.thingdust.io\",\n\"reservd.disrec.thingdust.io\",\n\"reservd.testing.thingdust.io\",\n\"tickets.io\",\n\"arvo.network\",\n\"azimuth.network\",\n\"tlon.network\",\n\"torproject.net\",\n\"pages.torproject.net\",\n\"bloxcms.com\",\n\"townnews-staging.com\",\n\"tbits.me\",\n\"12hp.at\",\n\"2ix.at\",\n\"4lima.at\",\n\"lima-city.at\",\n\"12hp.ch\",\n\"2ix.ch\",\n\"4lima.ch\",\n\"lima-city.ch\",\n\"trafficplex.cloud\",\n\"de.cool\",\n\"12hp.de\",\n\"2ix.de\",\n\"4lima.de\",\n\"lima-city.de\",\n\"1337.pictures\",\n\"clan.rip\",\n\"lima-city.rocks\",\n\"webspace.rocks\",\n\"lima.zone\",\n\"*.transurl.be\",\n\"*.transurl.eu\",\n\"*.transurl.nl\",\n\"site.transip.me\",\n\"tuxfamily.org\",\n\"dd-dns.de\",\n\"diskstation.eu\",\n\"diskstation.org\",\n\"dray-dns.de\",\n\"draydns.de\",\n\"dyn-vpn.de\",\n\"dynvpn.de\",\n\"mein-vigor.de\",\n\"my-vigor.de\",\n\"my-wan.de\",\n\"syno-ds.de\",\n\"synology-diskstation.de\",\n\"synology-ds.de\",\n\"typedream.app\",\n\"pro.typeform.com\",\n\"uber.space\",\n\"*.uberspace.de\",\n\"hk.com\",\n\"hk.org\",\n\"ltd.hk\",\n\"inc.hk\",\n\"name.pm\",\n\"sch.tf\",\n\"biz.wf\",\n\"sch.wf\",\n\"org.yt\",\n\"virtualuser.de\",\n\"virtual-user.de\",\n\"upli.io\",\n\"urown.cloud\",\n\"dnsupdate.info\",\n\"lib.de.us\",\n\"2038.io\",\n\"vercel.app\",\n\"vercel.dev\",\n\"now.sh\",\n\"router.management\",\n\"v-info.info\",\n\"voorloper.cloud\",\n\"neko.am\",\n\"nyaa.am\",\n\"be.ax\",\n\"cat.ax\",\n\"es.ax\",\n\"eu.ax\",\n\"gg.ax\",\n\"mc.ax\",\n\"us.ax\",\n\"xy.ax\",\n\"nl.ci\",\n\"xx.gl\",\n\"app.gp\",\n\"blog.gt\",\n\"de.gt\",\n\"to.gt\",\n\"be.gy\",\n\"cc.hn\",\n\"blog.kg\",\n\"io.kg\",\n\"jp.kg\",\n\"tv.kg\",\n\"uk.kg\",\n\"us.kg\",\n\"de.ls\",\n\"at.md\",\n\"de.md\",\n\"jp.md\",\n\"to.md\",\n\"indie.porn\",\n\"vxl.sh\",\n\"ch.tc\",\n\"me.tc\",\n\"we.tc\",\n\"nyan.to\",\n\"at.vg\",\n\"blog.vu\",\n\"dev.vu\",\n\"me.vu\",\n\"v.ua\",\n\"*.vultrobjects.com\",\n\"wafflecell.com\",\n\"*.webhare.dev\",\n\"reserve-online.net\",\n\"reserve-online.com\",\n\"bookonline.app\",\n\"hotelwithflight.com\",\n\"wedeploy.io\",\n\"wedeploy.me\",\n\"wedeploy.sh\",\n\"remotewd.com\",\n\"pages.wiardweb.com\",\n\"wmflabs.org\",\n\"toolforge.org\",\n\"wmcloud.org\",\n\"panel.gg\",\n\"daemon.panel.gg\",\n\"messwithdns.com\",\n\"woltlab-demo.com\",\n\"myforum.community\",\n\"community-pro.de\",\n\"diskussionsbereich.de\",\n\"community-pro.net\",\n\"meinforum.net\",\n\"affinitylottery.org.uk\",\n\"raffleentry.org.uk\",\n\"weeklylottery.org.uk\",\n\"wpenginepowered.com\",\n\"js.wpenginepowered.com\",\n\"wixsite.com\",\n\"editorx.io\",\n\"half.host\",\n\"xnbay.com\",\n\"u2.xnbay.com\",\n\"u2-local.xnbay.com\",\n\"cistron.nl\",\n\"demon.nl\",\n\"xs4all.space\",\n\"yandexcloud.net\",\n\"storage.yandexcloud.net\",\n\"website.yandexcloud.net\",\n\"official.academy\",\n\"yolasite.com\",\n\"ybo.faith\",\n\"yombo.me\",\n\"homelink.one\",\n\"ybo.party\",\n\"ybo.review\",\n\"ybo.science\",\n\"ybo.trade\",\n\"ynh.fr\",\n\"nohost.me\",\n\"noho.st\",\n\"za.net\",\n\"za.org\",\n\"bss.design\",\n\"basicserver.io\",\n\"virtualserver.io\",\n\"enterprisecloud.nu\"\n]", "/*eslint no-var:0, prefer-arrow-callback: 0, object-shorthand: 0 */\n'use strict';\n\n\nvar Punycode = require('punycode');\n\n\nvar internals = {};\n\n\n//\n// Read rules from file.\n//\ninternals.rules = require('./data/rules.json').map(function (rule) {\n\n return {\n rule: rule,\n suffix: rule.replace(/^(\\*\\.|\\!)/, ''),\n punySuffix: -1,\n wildcard: rule.charAt(0) === '*',\n exception: rule.charAt(0) === '!'\n };\n});\n\n\n//\n// Check is given string ends with `suffix`.\n//\ninternals.endsWith = function (str, suffix) {\n\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n};\n\n\n//\n// Find rule for a given domain.\n//\ninternals.findRule = function (domain) {\n\n var punyDomain = Punycode.toASCII(domain);\n return internals.rules.reduce(function (memo, rule) {\n\n if (rule.punySuffix === -1){\n rule.punySuffix = Punycode.toASCII(rule.suffix);\n }\n if (!internals.endsWith(punyDomain, '.' + rule.punySuffix) && punyDomain !== rule.punySuffix) {\n return memo;\n }\n // This has been commented out as it never seems to run. This is because\n // sub tlds always appear after their parents and we never find a shorter\n // match.\n //if (memo) {\n // var memoSuffix = Punycode.toASCII(memo.suffix);\n // if (memoSuffix.length >= punySuffix.length) {\n // return memo;\n // }\n //}\n return rule;\n }, null);\n};\n\n\n//\n// Error codes and messages.\n//\nexports.errorCodes = {\n DOMAIN_TOO_SHORT: 'Domain name too short.',\n DOMAIN_TOO_LONG: 'Domain name too long. It should be no more than 255 chars.',\n LABEL_STARTS_WITH_DASH: 'Domain name label can not start with a dash.',\n LABEL_ENDS_WITH_DASH: 'Domain name label can not end with a dash.',\n LABEL_TOO_LONG: 'Domain name label should be at most 63 chars long.',\n LABEL_TOO_SHORT: 'Domain name label should be at least 1 character long.',\n LABEL_INVALID_CHARS: 'Domain name label can only contain alphanumeric characters or dashes.'\n};\n\n\n//\n// Validate domain name and throw if not valid.\n//\n// From wikipedia:\n//\n// Hostnames are composed of series of labels concatenated with dots, as are all\n// domain names. Each label must be between 1 and 63 characters long, and the\n// entire hostname (including the delimiting dots) has a maximum of 255 chars.\n//\n// Allowed chars:\n//\n// * `a-z`\n// * `0-9`\n// * `-` but not as a starting or ending character\n// * `.` as a separator for the textual portions of a domain name\n//\n// * http://en.wikipedia.org/wiki/Domain_name\n// * http://en.wikipedia.org/wiki/Hostname\n//\ninternals.validate = function (input) {\n\n // Before we can validate we need to take care of IDNs with unicode chars.\n var ascii = Punycode.toASCII(input);\n\n if (ascii.length < 1) {\n return 'DOMAIN_TOO_SHORT';\n }\n if (ascii.length > 255) {\n return 'DOMAIN_TOO_LONG';\n }\n\n // Check each part's length and allowed chars.\n var labels = ascii.split('.');\n var label;\n\n for (var i = 0; i < labels.length; ++i) {\n label = labels[i];\n if (!label.length) {\n return 'LABEL_TOO_SHORT';\n }\n if (label.length > 63) {\n return 'LABEL_TOO_LONG';\n }\n if (label.charAt(0) === '-') {\n return 'LABEL_STARTS_WITH_DASH';\n }\n if (label.charAt(label.length - 1) === '-') {\n return 'LABEL_ENDS_WITH_DASH';\n }\n if (!/^[a-z0-9\\-]+$/.test(label)) {\n return 'LABEL_INVALID_CHARS';\n }\n }\n};\n\n\n//\n// Public API\n//\n\n\n//\n// Parse domain.\n//\nexports.parse = function (input) {\n\n if (typeof input !== 'string') {\n throw new TypeError('Domain name must be a string.');\n }\n\n // Force domain to lowercase.\n var domain = input.slice(0).toLowerCase();\n\n // Handle FQDN.\n // TODO: Simply remove trailing dot?\n if (domain.charAt(domain.length - 1) === '.') {\n domain = domain.slice(0, domain.length - 1);\n }\n\n // Validate and sanitise input.\n var error = internals.validate(domain);\n if (error) {\n return {\n input: input,\n error: {\n message: exports.errorCodes[error],\n code: error\n }\n };\n }\n\n var parsed = {\n input: input,\n tld: null,\n sld: null,\n domain: null,\n subdomain: null,\n listed: false\n };\n\n var domainParts = domain.split('.');\n\n // Non-Internet TLD\n if (domainParts[domainParts.length - 1] === 'local') {\n return parsed;\n }\n\n var handlePunycode = function () {\n\n if (!/xn--/.test(domain)) {\n return parsed;\n }\n if (parsed.domain) {\n parsed.domain = Punycode.toASCII(parsed.domain);\n }\n if (parsed.subdomain) {\n parsed.subdomain = Punycode.toASCII(parsed.subdomain);\n }\n return parsed;\n };\n\n var rule = internals.findRule(domain);\n\n // Unlisted tld.\n if (!rule) {\n if (domainParts.length < 2) {\n return parsed;\n }\n parsed.tld = domainParts.pop();\n parsed.sld = domainParts.pop();\n parsed.domain = [parsed.sld, parsed.tld].join('.');\n if (domainParts.length) {\n parsed.subdomain = domainParts.pop();\n }\n return handlePunycode();\n }\n\n // At this point we know the public suffix is listed.\n parsed.listed = true;\n\n var tldParts = rule.suffix.split('.');\n var privateParts = domainParts.slice(0, domainParts.length - tldParts.length);\n\n if (rule.exception) {\n privateParts.push(tldParts.shift());\n }\n\n parsed.tld = tldParts.join('.');\n\n if (!privateParts.length) {\n return handlePunycode();\n }\n\n if (rule.wildcard) {\n tldParts.unshift(privateParts.pop());\n parsed.tld = tldParts.join('.');\n }\n\n if (!privateParts.length) {\n return handlePunycode();\n }\n\n parsed.sld = privateParts.pop();\n parsed.domain = [parsed.sld, parsed.tld].join('.');\n\n if (privateParts.length) {\n parsed.subdomain = privateParts.join('.');\n }\n\n return handlePunycode();\n};\n\n\n//\n// Get domain.\n//\nexports.get = function (domain) {\n\n if (!domain) {\n return null;\n }\n return exports.parse(domain).domain || null;\n};\n\n\n//\n// Check whether domain belongs to a known public suffix.\n//\nexports.isValid = function (domain) {\n\n var parsed = exports.parse(domain);\n return Boolean(parsed.domain && parsed.listed);\n};\n", "/*!\n * Copyright (c) 2018, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n'use strict';\nvar psl = require('psl');\n\nfunction getPublicSuffix(domain) {\n return psl.get(domain);\n}\n\nexports.getPublicSuffix = getPublicSuffix;\n", "/*!\n * Copyright (c) 2015, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n'use strict';\n/*jshint unused:false */\n\nfunction Store() {\n}\nexports.Store = Store;\n\n// Stores may be synchronous, but are still required to use a\n// Continuation-Passing Style API. The CookieJar itself will expose a \"*Sync\"\n// API that converts from synchronous-callbacks to imperative style.\nStore.prototype.synchronous = false;\n\nStore.prototype.findCookie = function(domain, path, key, cb) {\n throw new Error('findCookie is not implemented');\n};\n\nStore.prototype.findCookies = function(domain, path, cb) {\n throw new Error('findCookies is not implemented');\n};\n\nStore.prototype.putCookie = function(cookie, cb) {\n throw new Error('putCookie is not implemented');\n};\n\nStore.prototype.updateCookie = function(oldCookie, newCookie, cb) {\n // recommended default implementation:\n // return this.putCookie(newCookie, cb);\n throw new Error('updateCookie is not implemented');\n};\n\nStore.prototype.removeCookie = function(domain, path, key, cb) {\n throw new Error('removeCookie is not implemented');\n};\n\nStore.prototype.removeCookies = function(domain, path, cb) {\n throw new Error('removeCookies is not implemented');\n};\n\nStore.prototype.removeAllCookies = function(cb) {\n throw new Error('removeAllCookies is not implemented');\n}\n\nStore.prototype.getAllCookies = function(cb) {\n throw new Error('getAllCookies is not implemented (therefore jar cannot be serialized)');\n};\n", "/*!\n * Copyright (c) 2015, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\"use strict\";\nvar pubsuffix = require('./pubsuffix-psl');\n\n// Gives the permutation of all possible domainMatch()es of a given domain. The\n// array is in shortest-to-longest order. Handy for indexing.\nfunction permuteDomain (domain) {\n var pubSuf = pubsuffix.getPublicSuffix(domain);\n if (!pubSuf) {\n return null;\n }\n if (pubSuf == domain) {\n return [domain];\n }\n\n var prefix = domain.slice(0, -(pubSuf.length + 1)); // \".example.com\"\n var parts = prefix.split('.').reverse();\n var cur = pubSuf;\n var permutations = [cur];\n while (parts.length) {\n cur = parts.shift() + '.' + cur;\n permutations.push(cur);\n }\n return permutations;\n}\n\nexports.permuteDomain = permuteDomain;\n", "/*!\n * Copyright (c) 2015, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\"use strict\";\n/*\n * \"A request-path path-matches a given cookie-path if at least one of the\n * following conditions holds:\"\n */\nfunction pathMatch (reqPath, cookiePath) {\n // \"o The cookie-path and the request-path are identical.\"\n if (cookiePath === reqPath) {\n return true;\n }\n\n var idx = reqPath.indexOf(cookiePath);\n if (idx === 0) {\n // \"o The cookie-path is a prefix of the request-path, and the last\n // character of the cookie-path is %x2F (\"/\").\"\n if (cookiePath.substr(-1) === \"/\") {\n return true;\n }\n\n // \" o The cookie-path is a prefix of the request-path, and the first\n // character of the request-path that is not included in the cookie- path\n // is a %x2F (\"/\") character.\"\n if (reqPath.substr(cookiePath.length, 1) === \"/\") {\n return true;\n }\n }\n\n return false;\n}\n\nexports.pathMatch = pathMatch;\n", "/*!\n * Copyright (c) 2015, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n'use strict';\nvar Store = require('./store').Store;\nvar permuteDomain = require('./permuteDomain').permuteDomain;\nvar pathMatch = require('./pathMatch').pathMatch;\nvar util = require('util');\n\nfunction MemoryCookieStore() {\n Store.call(this);\n this.idx = {};\n}\nutil.inherits(MemoryCookieStore, Store);\nexports.MemoryCookieStore = MemoryCookieStore;\nMemoryCookieStore.prototype.idx = null;\n\n// Since it's just a struct in RAM, this Store is synchronous\nMemoryCookieStore.prototype.synchronous = true;\n\n// force a default depth:\nMemoryCookieStore.prototype.inspect = function() {\n return \"{ idx: \"+util.inspect(this.idx, false, 2)+' }';\n};\n\n// Use the new custom inspection symbol to add the custom inspect function if\n// available.\nif (util.inspect.custom) {\n MemoryCookieStore.prototype[util.inspect.custom] = MemoryCookieStore.prototype.inspect;\n}\n\nMemoryCookieStore.prototype.findCookie = function(domain, path, key, cb) {\n if (!this.idx[domain]) {\n return cb(null,undefined);\n }\n if (!this.idx[domain][path]) {\n return cb(null,undefined);\n }\n return cb(null,this.idx[domain][path][key]||null);\n};\n\nMemoryCookieStore.prototype.findCookies = function(domain, path, cb) {\n var results = [];\n if (!domain) {\n return cb(null,[]);\n }\n\n var pathMatcher;\n if (!path) {\n // null means \"all paths\"\n pathMatcher = function matchAll(domainIndex) {\n for (var curPath in domainIndex) {\n var pathIndex = domainIndex[curPath];\n for (var key in pathIndex) {\n results.push(pathIndex[key]);\n }\n }\n };\n\n } else {\n pathMatcher = function matchRFC(domainIndex) {\n //NOTE: we should use path-match algorithm from S5.1.4 here\n //(see : https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/canonical_cookie.cc#L299)\n Object.keys(domainIndex).forEach(function (cookiePath) {\n if (pathMatch(path, cookiePath)) {\n var pathIndex = domainIndex[cookiePath];\n\n for (var key in pathIndex) {\n results.push(pathIndex[key]);\n }\n }\n });\n };\n }\n\n var domains = permuteDomain(domain) || [domain];\n var idx = this.idx;\n domains.forEach(function(curDomain) {\n var domainIndex = idx[curDomain];\n if (!domainIndex) {\n return;\n }\n pathMatcher(domainIndex);\n });\n\n cb(null,results);\n};\n\nMemoryCookieStore.prototype.putCookie = function(cookie, cb) {\n if (!this.idx[cookie.domain]) {\n this.idx[cookie.domain] = {};\n }\n if (!this.idx[cookie.domain][cookie.path]) {\n this.idx[cookie.domain][cookie.path] = {};\n }\n this.idx[cookie.domain][cookie.path][cookie.key] = cookie;\n cb(null);\n};\n\nMemoryCookieStore.prototype.updateCookie = function(oldCookie, newCookie, cb) {\n // updateCookie() may avoid updating cookies that are identical. For example,\n // lastAccessed may not be important to some stores and an equality\n // comparison could exclude that field.\n this.putCookie(newCookie,cb);\n};\n\nMemoryCookieStore.prototype.removeCookie = function(domain, path, key, cb) {\n if (this.idx[domain] && this.idx[domain][path] && this.idx[domain][path][key]) {\n delete this.idx[domain][path][key];\n }\n cb(null);\n};\n\nMemoryCookieStore.prototype.removeCookies = function(domain, path, cb) {\n if (this.idx[domain]) {\n if (path) {\n delete this.idx[domain][path];\n } else {\n delete this.idx[domain];\n }\n }\n return cb(null);\n};\n\nMemoryCookieStore.prototype.removeAllCookies = function(cb) {\n this.idx = {};\n return cb(null);\n}\n\nMemoryCookieStore.prototype.getAllCookies = function(cb) {\n var cookies = [];\n var idx = this.idx;\n\n var domains = Object.keys(idx);\n domains.forEach(function(domain) {\n var paths = Object.keys(idx[domain]);\n paths.forEach(function(path) {\n var keys = Object.keys(idx[domain][path]);\n keys.forEach(function(key) {\n if (key !== null) {\n cookies.push(idx[domain][path][key]);\n }\n });\n });\n });\n\n // Sort by creationIndex so deserializing retains the creation order.\n // When implementing your own store, this SHOULD retain the order too\n cookies.sort(function(a,b) {\n return (a.creationIndex||0) - (b.creationIndex||0);\n });\n\n cb(null, cookies);\n};\n", "// generated by genversion\nmodule.exports = '2.5.0'\n", "/*!\n * Copyright (c) 2015, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n'use strict';\nvar net = require('net');\nvar urlParse = require('url').parse;\nvar util = require('util');\nvar pubsuffix = require('./pubsuffix-psl');\nvar Store = require('./store').Store;\nvar MemoryCookieStore = require('./memstore').MemoryCookieStore;\nvar pathMatch = require('./pathMatch').pathMatch;\nvar VERSION = require('./version');\n\nvar punycode;\ntry {\n punycode = require('punycode');\n} catch(e) {\n console.warn(\"tough-cookie: can't load punycode; won't use punycode for domain normalization\");\n}\n\n// From RFC6265 S4.1.1\n// note that it excludes \\x3B \";\"\nvar COOKIE_OCTETS = /^[\\x21\\x23-\\x2B\\x2D-\\x3A\\x3C-\\x5B\\x5D-\\x7E]+$/;\n\nvar CONTROL_CHARS = /[\\x00-\\x1F]/;\n\n// From Chromium // '\\r', '\\n' and '\\0' should be treated as a terminator in\n// the \"relaxed\" mode, see:\n// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60\nvar TERMINATORS = ['\\n', '\\r', '\\0'];\n\n// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or \";\"'\n// Note ';' is \\x3B\nvar PATH_VALUE = /[\\x20-\\x3A\\x3C-\\x7E]+/;\n\n// date-time parsing constants (RFC6265 S5.1.1)\n\nvar DATE_DELIM = /[\\x09\\x20-\\x2F\\x3B-\\x40\\x5B-\\x60\\x7B-\\x7E]/;\n\nvar MONTH_TO_NUM = {\n jan:0, feb:1, mar:2, apr:3, may:4, jun:5,\n jul:6, aug:7, sep:8, oct:9, nov:10, dec:11\n};\nvar NUM_TO_MONTH = [\n 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'\n];\nvar NUM_TO_DAY = [\n 'Sun','Mon','Tue','Wed','Thu','Fri','Sat'\n];\n\nvar MAX_TIME = 2147483647000; // 31-bit max\nvar MIN_TIME = 0; // 31-bit min\n\n/*\n * Parses a Natural number (i.e., non-negative integer) with either the\n * *DIGIT ( non-digit *OCTET )\n * or\n * *DIGIT\n * grammar (RFC6265 S5.1.1).\n *\n * The \"trailingOK\" boolean controls if the grammar accepts a\n * \"( non-digit *OCTET )\" trailer.\n */\nfunction parseDigits(token, minDigits, maxDigits, trailingOK) {\n var count = 0;\n while (count < token.length) {\n var c = token.charCodeAt(count);\n // \"non-digit = %x00-2F / %x3A-FF\"\n if (c <= 0x2F || c >= 0x3A) {\n break;\n }\n count++;\n }\n\n // constrain to a minimum and maximum number of digits.\n if (count < minDigits || count > maxDigits) {\n return null;\n }\n\n if (!trailingOK && count != token.length) {\n return null;\n }\n\n return parseInt(token.substr(0,count), 10);\n}\n\nfunction parseTime(token) {\n var parts = token.split(':');\n var result = [0,0,0];\n\n /* RF6256 S5.1.1:\n * time = hms-time ( non-digit *OCTET )\n * hms-time = time-field \":\" time-field \":\" time-field\n * time-field = 1*2DIGIT\n */\n\n if (parts.length !== 3) {\n return null;\n }\n\n for (var i = 0; i < 3; i++) {\n // \"time-field\" must be strictly \"1*2DIGIT\", HOWEVER, \"hms-time\" can be\n // followed by \"( non-digit *OCTET )\" so therefore the last time-field can\n // have a trailer\n var trailingOK = (i == 2);\n var num = parseDigits(parts[i], 1, 2, trailingOK);\n if (num === null) {\n return null;\n }\n result[i] = num;\n }\n\n return result;\n}\n\nfunction parseMonth(token) {\n token = String(token).substr(0,3).toLowerCase();\n var num = MONTH_TO_NUM[token];\n return num >= 0 ? num : null;\n}\n\n/*\n * RFC6265 S5.1.1 date parser (see RFC for full grammar)\n */\nfunction parseDate(str) {\n if (!str) {\n return;\n }\n\n /* RFC6265 S5.1.1:\n * 2. Process each date-token sequentially in the order the date-tokens\n * appear in the cookie-date\n */\n var tokens = str.split(DATE_DELIM);\n if (!tokens) {\n return;\n }\n\n var hour = null;\n var minute = null;\n var second = null;\n var dayOfMonth = null;\n var month = null;\n var year = null;\n\n for (var i=0; i= 70 && year <= 99) {\n year += 1900;\n } else if (year >= 0 && year <= 69) {\n year += 2000;\n }\n }\n }\n }\n\n /* RFC 6265 S5.1.1\n * \"5. Abort these steps and fail to parse the cookie-date if:\n * * at least one of the found-day-of-month, found-month, found-\n * year, or found-time flags is not set,\n * * the day-of-month-value is less than 1 or greater than 31,\n * * the year-value is less than 1601,\n * * the hour-value is greater than 23,\n * * the minute-value is greater than 59, or\n * * the second-value is greater than 59.\n * (Note that leap seconds cannot be represented in this syntax.)\"\n *\n * So, in order as above:\n */\n if (\n dayOfMonth === null || month === null || year === null || second === null ||\n dayOfMonth < 1 || dayOfMonth > 31 ||\n year < 1601 ||\n hour > 23 ||\n minute > 59 ||\n second > 59\n ) {\n return;\n }\n\n return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second));\n}\n\nfunction formatDate(date) {\n var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d;\n var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h;\n var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m;\n var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s;\n return NUM_TO_DAY[date.getUTCDay()] + ', ' +\n d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+\n h+':'+m+':'+s+' GMT';\n}\n\n// S5.1.2 Canonicalized Host Names\nfunction canonicalDomain(str) {\n if (str == null) {\n return null;\n }\n str = str.trim().replace(/^\\./,''); // S4.1.2.3 & S5.2.3: ignore leading .\n\n // convert to IDN if any non-ASCII characters\n if (punycode && /[^\\u0001-\\u007f]/.test(str)) {\n str = punycode.toASCII(str);\n }\n\n return str.toLowerCase();\n}\n\n// S5.1.3 Domain Matching\nfunction domainMatch(str, domStr, canonicalize) {\n if (str == null || domStr == null) {\n return null;\n }\n if (canonicalize !== false) {\n str = canonicalDomain(str);\n domStr = canonicalDomain(domStr);\n }\n\n /*\n * \"The domain string and the string are identical. (Note that both the\n * domain string and the string will have been canonicalized to lower case at\n * this point)\"\n */\n if (str == domStr) {\n return true;\n }\n\n /* \"All of the following [three] conditions hold:\" (order adjusted from the RFC) */\n\n /* \"* The string is a host name (i.e., not an IP address).\" */\n if (net.isIP(str)) {\n return false;\n }\n\n /* \"* The domain string is a suffix of the string\" */\n var idx = str.indexOf(domStr);\n if (idx <= 0) {\n return false; // it's a non-match (-1) or prefix (0)\n }\n\n // e.g \"a.b.c\".indexOf(\"b.c\") === 2\n // 5 === 3+2\n if (str.length !== domStr.length + idx) { // it's not a suffix\n return false;\n }\n\n /* \"* The last character of the string that is not included in the domain\n * string is a %x2E (\".\") character.\" */\n if (str.substr(idx-1,1) !== '.') {\n return false;\n }\n\n return true;\n}\n\n\n// RFC6265 S5.1.4 Paths and Path-Match\n\n/*\n * \"The user agent MUST use an algorithm equivalent to the following algorithm\n * to compute the default-path of a cookie:\"\n *\n * Assumption: the path (and not query part or absolute uri) is passed in.\n */\nfunction defaultPath(path) {\n // \"2. If the uri-path is empty or if the first character of the uri-path is not\n // a %x2F (\"/\") character, output %x2F (\"/\") and skip the remaining steps.\n if (!path || path.substr(0,1) !== \"/\") {\n return \"/\";\n }\n\n // \"3. If the uri-path contains no more than one %x2F (\"/\") character, output\n // %x2F (\"/\") and skip the remaining step.\"\n if (path === \"/\") {\n return path;\n }\n\n var rightSlash = path.lastIndexOf(\"/\");\n if (rightSlash === 0) {\n return \"/\";\n }\n\n // \"4. Output the characters of the uri-path from the first character up to,\n // but not including, the right-most %x2F (\"/\").\"\n return path.slice(0, rightSlash);\n}\n\nfunction trimTerminator(str) {\n for (var t = 0; t < TERMINATORS.length; t++) {\n var terminatorIdx = str.indexOf(TERMINATORS[t]);\n if (terminatorIdx !== -1) {\n str = str.substr(0,terminatorIdx);\n }\n }\n\n return str;\n}\n\nfunction parseCookiePair(cookiePair, looseMode) {\n cookiePair = trimTerminator(cookiePair);\n\n var firstEq = cookiePair.indexOf('=');\n if (looseMode) {\n if (firstEq === 0) { // '=' is immediately at start\n cookiePair = cookiePair.substr(1);\n firstEq = cookiePair.indexOf('='); // might still need to split on '='\n }\n } else { // non-loose mode\n if (firstEq <= 0) { // no '=' or is at start\n return; // needs to have non-empty \"cookie-name\"\n }\n }\n\n var cookieName, cookieValue;\n if (firstEq <= 0) {\n cookieName = \"\";\n cookieValue = cookiePair.trim();\n } else {\n cookieName = cookiePair.substr(0, firstEq).trim();\n cookieValue = cookiePair.substr(firstEq+1).trim();\n }\n\n if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {\n return;\n }\n\n var c = new Cookie();\n c.key = cookieName;\n c.value = cookieValue;\n return c;\n}\n\nfunction parse(str, options) {\n if (!options || typeof options !== 'object') {\n options = {};\n }\n str = str.trim();\n\n // We use a regex to parse the \"name-value-pair\" part of S5.2\n var firstSemi = str.indexOf(';'); // S5.2 step 1\n var cookiePair = (firstSemi === -1) ? str : str.substr(0, firstSemi);\n var c = parseCookiePair(cookiePair, !!options.loose);\n if (!c) {\n return;\n }\n\n if (firstSemi === -1) {\n return c;\n }\n\n // S5.2.3 \"unparsed-attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\" plus later on in the same section\n // \"discard the first \";\" and trim\".\n var unparsed = str.slice(firstSemi + 1).trim();\n\n // \"If the unparsed-attributes string is empty, skip the rest of these\n // steps.\"\n if (unparsed.length === 0) {\n return c;\n }\n\n /*\n * S5.2 says that when looping over the items \"[p]rocess the attribute-name\n * and attribute-value according to the requirements in the following\n * subsections\" for every item. Plus, for many of the individual attributes\n * in S5.3 it says to use the \"attribute-value of the last attribute in the\n * cookie-attribute-list\". Therefore, in this implementation, we overwrite\n * the previous value.\n */\n var cookie_avs = unparsed.split(';');\n while (cookie_avs.length) {\n var av = cookie_avs.shift().trim();\n if (av.length === 0) { // happens if \";;\" appears\n continue;\n }\n var av_sep = av.indexOf('=');\n var av_key, av_value;\n\n if (av_sep === -1) {\n av_key = av;\n av_value = null;\n } else {\n av_key = av.substr(0,av_sep);\n av_value = av.substr(av_sep+1);\n }\n\n av_key = av_key.trim().toLowerCase();\n\n if (av_value) {\n av_value = av_value.trim();\n }\n\n switch(av_key) {\n case 'expires': // S5.2.1\n if (av_value) {\n var exp = parseDate(av_value);\n // \"If the attribute-value failed to parse as a cookie date, ignore the\n // cookie-av.\"\n if (exp) {\n // over and underflow not realistically a concern: V8's getTime() seems to\n // store something larger than a 32-bit time_t (even with 32-bit node)\n c.expires = exp;\n }\n }\n break;\n\n case 'max-age': // S5.2.2\n if (av_value) {\n // \"If the first character of the attribute-value is not a DIGIT or a \"-\"\n // character ...[or]... If the remainder of attribute-value contains a\n // non-DIGIT character, ignore the cookie-av.\"\n if (/^-?[0-9]+$/.test(av_value)) {\n var delta = parseInt(av_value, 10);\n // \"If delta-seconds is less than or equal to zero (0), let expiry-time\n // be the earliest representable date and time.\"\n c.setMaxAge(delta);\n }\n }\n break;\n\n case 'domain': // S5.2.3\n // \"If the attribute-value is empty, the behavior is undefined. However,\n // the user agent SHOULD ignore the cookie-av entirely.\"\n if (av_value) {\n // S5.2.3 \"Let cookie-domain be the attribute-value without the leading %x2E\n // (\".\") character.\"\n var domain = av_value.trim().replace(/^\\./, '');\n if (domain) {\n // \"Convert the cookie-domain to lower case.\"\n c.domain = domain.toLowerCase();\n }\n }\n break;\n\n case 'path': // S5.2.4\n /*\n * \"If the attribute-value is empty or if the first character of the\n * attribute-value is not %x2F (\"/\"):\n * Let cookie-path be the default-path.\n * Otherwise:\n * Let cookie-path be the attribute-value.\"\n *\n * We'll represent the default-path as null since it depends on the\n * context of the parsing.\n */\n c.path = av_value && av_value[0] === \"/\" ? av_value : null;\n break;\n\n case 'secure': // S5.2.5\n /*\n * \"If the attribute-name case-insensitively matches the string \"Secure\",\n * the user agent MUST append an attribute to the cookie-attribute-list\n * with an attribute-name of Secure and an empty attribute-value.\"\n */\n c.secure = true;\n break;\n\n case 'httponly': // S5.2.6 -- effectively the same as 'secure'\n c.httpOnly = true;\n break;\n\n default:\n c.extensions = c.extensions || [];\n c.extensions.push(av);\n break;\n }\n }\n\n return c;\n}\n\n// avoid the V8 deoptimization monster!\nfunction jsonParse(str) {\n var obj;\n try {\n obj = JSON.parse(str);\n } catch (e) {\n return e;\n }\n return obj;\n}\n\nfunction fromJSON(str) {\n if (!str) {\n return null;\n }\n\n var obj;\n if (typeof str === 'string') {\n obj = jsonParse(str);\n if (obj instanceof Error) {\n return null;\n }\n } else {\n // assume it's an Object\n obj = str;\n }\n\n var c = new Cookie();\n for (var i=0; i 1) {\n var lindex = path.lastIndexOf('/');\n if (lindex === 0) {\n break;\n }\n path = path.substr(0,lindex);\n permutations.push(path);\n }\n permutations.push('/');\n return permutations;\n}\n\nfunction getCookieContext(url) {\n if (url instanceof Object) {\n return url;\n }\n // NOTE: decodeURI will throw on malformed URIs (see GH-32).\n // Therefore, we will just skip decoding for such URIs.\n try {\n url = decodeURI(url);\n }\n catch(err) {\n // Silently swallow error\n }\n\n return urlParse(url);\n}\n\nfunction Cookie(options) {\n options = options || {};\n\n Object.keys(options).forEach(function(prop) {\n if (Cookie.prototype.hasOwnProperty(prop) &&\n Cookie.prototype[prop] !== options[prop] &&\n prop.substr(0,1) !== '_')\n {\n this[prop] = options[prop];\n }\n }, this);\n\n this.creation = this.creation || new Date();\n\n // used to break creation ties in cookieCompare():\n Object.defineProperty(this, 'creationIndex', {\n configurable: false,\n enumerable: false, // important for assert.deepEqual checks\n writable: true,\n value: ++Cookie.cookiesCreated\n });\n}\n\nCookie.cookiesCreated = 0; // incremented each time a cookie is created\n\nCookie.parse = parse;\nCookie.fromJSON = fromJSON;\n\nCookie.prototype.key = \"\";\nCookie.prototype.value = \"\";\n\n// the order in which the RFC has them:\nCookie.prototype.expires = \"Infinity\"; // coerces to literal Infinity\nCookie.prototype.maxAge = null; // takes precedence over expires for TTL\nCookie.prototype.domain = null;\nCookie.prototype.path = null;\nCookie.prototype.secure = false;\nCookie.prototype.httpOnly = false;\nCookie.prototype.extensions = null;\n\n// set by the CookieJar:\nCookie.prototype.hostOnly = null; // boolean when set\nCookie.prototype.pathIsDefault = null; // boolean when set\nCookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse\nCookie.prototype.lastAccessed = null; // Date when set\nObject.defineProperty(Cookie.prototype, 'creationIndex', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: 0\n});\n\nCookie.serializableProperties = Object.keys(Cookie.prototype)\n .filter(function(prop) {\n return !(\n Cookie.prototype[prop] instanceof Function ||\n prop === 'creationIndex' ||\n prop.substr(0,1) === '_'\n );\n });\n\nCookie.prototype.inspect = function inspect() {\n var now = Date.now();\n return 'Cookie=\"'+this.toString() +\n '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') +\n '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') +\n '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') +\n '\"';\n};\n\n// Use the new custom inspection symbol to add the custom inspect function if\n// available.\nif (util.inspect.custom) {\n Cookie.prototype[util.inspect.custom] = Cookie.prototype.inspect;\n}\n\nCookie.prototype.toJSON = function() {\n var obj = {};\n\n var props = Cookie.serializableProperties;\n for (var i=0; i 0) {\n var thisPos = stack.indexOf(this)\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)\n if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)\n }\n else stack.push(value)\n\n return replacer == null ? value : replacer.call(this, key, value)\n }\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\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\nSafeBuffer.prototype = Object.create(Buffer.prototype)\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", "'use strict'\n\nvar jsonSafeStringify = require('json-stringify-safe')\nvar crypto = require('crypto')\nvar Buffer = require('safe-buffer').Buffer\n\nvar defer = typeof setImmediate === 'undefined'\n ? process.nextTick\n : setImmediate\n\nfunction paramsHaveRequestBody (params) {\n return (\n params.body ||\n params.requestBodyStream ||\n (params.json && typeof params.json !== 'boolean') ||\n params.multipart\n )\n}\n\nfunction safeStringify (obj, replacer) {\n var ret\n try {\n ret = JSON.stringify(obj, replacer)\n } catch (e) {\n ret = jsonSafeStringify(obj, replacer)\n }\n return ret\n}\n\nfunction md5 (str) {\n return crypto.createHash('md5').update(str).digest('hex')\n}\n\nfunction isReadStream (rs) {\n return rs.readable && rs.path && rs.mode\n}\n\nfunction toBase64 (str) {\n return Buffer.from(str || '', 'utf8').toString('base64')\n}\n\nfunction copy (obj) {\n var o = {}\n Object.keys(obj).forEach(function (i) {\n o[i] = obj[i]\n })\n return o\n}\n\nfunction version () {\n var numbers = process.version.replace('v', '').split('.')\n return {\n major: parseInt(numbers[0], 10),\n minor: parseInt(numbers[1], 10),\n patch: parseInt(numbers[2], 10)\n }\n}\n\nexports.paramsHaveRequestBody = paramsHaveRequestBody\nexports.safeStringify = safeStringify\nexports.md5 = md5\nexports.isReadStream = isReadStream\nexports.toBase64 = toBase64\nexports.copy = copy\nexports.version = version\nexports.defer = defer\n", "\n/*!\n * Copyright 2010 LearnBoost \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Module dependencies.\n */\n\nvar crypto = require('crypto')\n , parse = require('url').parse\n ;\n\n/**\n * Valid keys.\n */\n\nvar keys = \n [ 'acl'\n , 'location'\n , 'logging'\n , 'notification'\n , 'partNumber'\n , 'policy'\n , 'requestPayment'\n , 'torrent'\n , 'uploadId'\n , 'uploads'\n , 'versionId'\n , 'versioning'\n , 'versions'\n , 'website'\n ]\n\n/**\n * Return an \"Authorization\" header value with the given `options`\n * in the form of \"AWS :\"\n *\n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction authorization (options) {\n return 'AWS ' + options.key + ':' + sign(options)\n}\n\nmodule.exports = authorization\nmodule.exports.authorization = authorization\n\n/**\n * Simple HMAC-SHA1 Wrapper\n *\n * @param {Object} options\n * @return {String}\n * @api private\n */ \n\nfunction hmacSha1 (options) {\n return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64')\n}\n\nmodule.exports.hmacSha1 = hmacSha1\n\n/**\n * Create a base64 sha1 HMAC for `options`. \n * \n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction sign (options) {\n options.message = stringToSign(options)\n return hmacSha1(options)\n}\nmodule.exports.sign = sign\n\n/**\n * Create a base64 sha1 HMAC for `options`. \n *\n * Specifically to be used with S3 presigned URLs\n * \n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction signQuery (options) {\n options.message = queryStringToSign(options)\n return hmacSha1(options)\n}\nmodule.exports.signQuery= signQuery\n\n/**\n * Return a string for sign() with the given `options`.\n *\n * Spec:\n * \n * \\n\n * \\n\n * \\n\n * \\n\n * [headers\\n]\n * \n *\n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction stringToSign (options) {\n var headers = options.amazonHeaders || ''\n if (headers) headers += '\\n'\n var r = \n [ options.verb\n , options.md5\n , options.contentType\n , options.date ? options.date.toUTCString() : ''\n , headers + options.resource\n ]\n return r.join('\\n')\n}\nmodule.exports.stringToSign = stringToSign\n\n/**\n * Return a string for sign() with the given `options`, but is meant exclusively\n * for S3 presigned URLs\n *\n * Spec:\n * \n * \\n\n * \n *\n * @param {Object} options\n * @return {String}\n * @api private\n */\n\nfunction queryStringToSign (options){\n return 'GET\\n\\n\\n' + options.date + '\\n' + options.resource\n}\nmodule.exports.queryStringToSign = queryStringToSign\n\n/**\n * Perform the following:\n *\n * - ignore non-amazon headers\n * - lowercase fields\n * - sort lexicographically\n * - trim whitespace between \":\"\n * - join with newline\n *\n * @param {Object} headers\n * @return {String}\n * @api private\n */\n\nfunction canonicalizeHeaders (headers) {\n var buf = []\n , fields = Object.keys(headers)\n ;\n for (var i = 0, len = fields.length; i < len; ++i) {\n var field = fields[i]\n , val = headers[field]\n , field = field.toLowerCase()\n ;\n if (0 !== field.indexOf('x-amz')) continue\n buf.push(field + ':' + val)\n }\n return buf.sort().join('\\n')\n}\nmodule.exports.canonicalizeHeaders = canonicalizeHeaders\n\n/**\n * Perform the following:\n *\n * - ignore non sub-resources\n * - sort lexicographically\n *\n * @param {String} resource\n * @return {String}\n * @api private\n */\n\nfunction canonicalizeResource (resource) {\n var url = parse(resource, true)\n , path = url.pathname\n , buf = []\n ;\n\n Object.keys(url.query).forEach(function(key){\n if (!~keys.indexOf(key)) return\n var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key])\n buf.push(key + val)\n })\n\n return path + (buf.length ? '?' + buf.sort().join('&') : '')\n}\nmodule.exports.canonicalizeResource = canonicalizeResource\n", "module.exports = function(size) {\n return new LruCache(size)\n}\n\nfunction LruCache(size) {\n this.capacity = size | 0\n this.map = Object.create(null)\n this.list = new DoublyLinkedList()\n}\n\nLruCache.prototype.get = function(key) {\n var node = this.map[key]\n if (node == null) return undefined\n this.used(node)\n return node.val\n}\n\nLruCache.prototype.set = function(key, val) {\n var node = this.map[key]\n if (node != null) {\n node.val = val\n } else {\n if (!this.capacity) this.prune()\n if (!this.capacity) return false\n node = new DoublyLinkedNode(key, val)\n this.map[key] = node\n this.capacity--\n }\n this.used(node)\n return true\n}\n\nLruCache.prototype.used = function(node) {\n this.list.moveToFront(node)\n}\n\nLruCache.prototype.prune = function() {\n var node = this.list.pop()\n if (node != null) {\n delete this.map[node.key]\n this.capacity++\n }\n}\n\n\nfunction DoublyLinkedList() {\n this.firstNode = null\n this.lastNode = null\n}\n\nDoublyLinkedList.prototype.moveToFront = function(node) {\n if (this.firstNode == node) return\n\n this.remove(node)\n\n if (this.firstNode == null) {\n this.firstNode = node\n this.lastNode = node\n node.prev = null\n node.next = null\n } else {\n node.prev = null\n node.next = this.firstNode\n node.next.prev = node\n this.firstNode = node\n }\n}\n\nDoublyLinkedList.prototype.pop = function() {\n var lastNode = this.lastNode\n if (lastNode != null) {\n this.remove(lastNode)\n }\n return lastNode\n}\n\nDoublyLinkedList.prototype.remove = function(node) {\n if (this.firstNode == node) {\n this.firstNode = node.next\n } else if (node.prev != null) {\n node.prev.next = node.next\n }\n if (this.lastNode == node) {\n this.lastNode = node.prev\n } else if (node.next != null) {\n node.next.prev = node.prev\n }\n}\n\n\nfunction DoublyLinkedNode(key, val) {\n this.key = key\n this.val = val\n this.prev = null\n this.next = null\n}\n", "var aws4 = exports,\n url = require('url'),\n querystring = require('querystring'),\n crypto = require('crypto'),\n lru = require('./lru'),\n credentialsCache = lru(1000)\n\n// http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html\n\nfunction hmac(key, string, encoding) {\n return crypto.createHmac('sha256', key).update(string, 'utf8').digest(encoding)\n}\n\nfunction hash(string, encoding) {\n return crypto.createHash('sha256').update(string, 'utf8').digest(encoding)\n}\n\n// This function assumes the string has already been percent encoded\nfunction encodeRfc3986(urlEncodedString) {\n return urlEncodedString.replace(/[!'()*]/g, function(c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\nfunction encodeRfc3986Full(str) {\n return encodeRfc3986(encodeURIComponent(str))\n}\n\n// A bit of a combination of:\n// https://github.com/aws/aws-sdk-java-v2/blob/dc695de6ab49ad03934e1b02e7263abbd2354be0/core/auth/src/main/java/software/amazon/awssdk/auth/signer/internal/AbstractAws4Signer.java#L59\n// https://github.com/aws/aws-sdk-js/blob/18cb7e5b463b46239f9fdd4a65e2ff8c81831e8f/lib/signers/v4.js#L191-L199\n// https://github.com/mhart/aws4fetch/blob/b3aed16b6f17384cf36ea33bcba3c1e9f3bdfefd/src/main.js#L25-L34\nvar HEADERS_TO_IGNORE = {\n 'authorization': true,\n 'connection': true,\n 'x-amzn-trace-id': true,\n 'user-agent': true,\n 'expect': true,\n 'presigned-expires': true,\n 'range': true,\n}\n\n// request: { path | body, [host], [method], [headers], [service], [region] }\n// credentials: { accessKeyId, secretAccessKey, [sessionToken] }\nfunction RequestSigner(request, credentials) {\n\n if (typeof request === 'string') request = url.parse(request)\n\n var headers = request.headers = Object.assign({}, (request.headers || {})),\n hostParts = (!this.service || !this.region) && this.matchHost(request.hostname || request.host || headers.Host || headers.host)\n\n this.request = request\n this.credentials = credentials || this.defaultCredentials()\n\n this.service = request.service || hostParts[0] || ''\n this.region = request.region || hostParts[1] || 'us-east-1'\n\n // SES uses a different domain from the service name\n if (this.service === 'email') this.service = 'ses'\n\n if (!request.method && request.body)\n request.method = 'POST'\n\n if (!headers.Host && !headers.host) {\n headers.Host = request.hostname || request.host || this.createHost()\n\n // If a port is specified explicitly, use it as is\n if (request.port)\n headers.Host += ':' + request.port\n }\n if (!request.hostname && !request.host)\n request.hostname = headers.Host || headers.host\n\n this.isCodeCommitGit = this.service === 'codecommit' && request.method === 'GIT'\n\n this.extraHeadersToIgnore = request.extraHeadersToIgnore || Object.create(null)\n this.extraHeadersToInclude = request.extraHeadersToInclude || Object.create(null)\n}\n\nRequestSigner.prototype.matchHost = function(host) {\n var match = (host || '').match(/([^\\.]{1,63})\\.(?:([^\\.]{0,63})\\.)?amazonaws\\.com(\\.cn)?$/)\n var hostParts = (match || []).slice(1, 3)\n\n // ES's hostParts are sometimes the other way round, if the value that is expected\n // to be region equals \u2018es\u2019 switch them back\n // e.g. search-cluster-name-aaaa00aaaa0aaa0aaaaaaa0aaa.us-east-1.es.amazonaws.com\n if (hostParts[1] === 'es' || hostParts[1] === 'aoss')\n hostParts = hostParts.reverse()\n\n if (hostParts[1] == 's3') {\n hostParts[0] = 's3'\n hostParts[1] = 'us-east-1'\n } else {\n for (var i = 0; i < 2; i++) {\n if (/^s3-/.test(hostParts[i])) {\n hostParts[1] = hostParts[i].slice(3)\n hostParts[0] = 's3'\n break\n }\n }\n }\n\n return hostParts\n}\n\n// http://docs.aws.amazon.com/general/latest/gr/rande.html\nRequestSigner.prototype.isSingleRegion = function() {\n // Special case for S3 and SimpleDB in us-east-1\n if (['s3', 'sdb'].indexOf(this.service) >= 0 && this.region === 'us-east-1') return true\n\n return ['cloudfront', 'ls', 'route53', 'iam', 'importexport', 'sts']\n .indexOf(this.service) >= 0\n}\n\nRequestSigner.prototype.createHost = function() {\n var region = this.isSingleRegion() ? '' : '.' + this.region,\n subdomain = this.service === 'ses' ? 'email' : this.service\n return subdomain + region + '.amazonaws.com'\n}\n\nRequestSigner.prototype.prepareRequest = function() {\n this.parsePath()\n\n var request = this.request, headers = request.headers, query\n\n if (request.signQuery) {\n\n this.parsedPath.query = query = this.parsedPath.query || {}\n\n if (this.credentials.sessionToken)\n query['X-Amz-Security-Token'] = this.credentials.sessionToken\n\n if (this.service === 's3' && !query['X-Amz-Expires'])\n query['X-Amz-Expires'] = 86400\n\n if (query['X-Amz-Date'])\n this.datetime = query['X-Amz-Date']\n else\n query['X-Amz-Date'] = this.getDateTime()\n\n query['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256'\n query['X-Amz-Credential'] = this.credentials.accessKeyId + '/' + this.credentialString()\n query['X-Amz-SignedHeaders'] = this.signedHeaders()\n\n } else {\n\n if (!request.doNotModifyHeaders && !this.isCodeCommitGit) {\n if (request.body && !headers['Content-Type'] && !headers['content-type'])\n headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'\n\n if (request.body && !headers['Content-Length'] && !headers['content-length'])\n headers['Content-Length'] = Buffer.byteLength(request.body)\n\n if (this.credentials.sessionToken && !headers['X-Amz-Security-Token'] && !headers['x-amz-security-token'])\n headers['X-Amz-Security-Token'] = this.credentials.sessionToken\n\n if (this.service === 's3' && !headers['X-Amz-Content-Sha256'] && !headers['x-amz-content-sha256'])\n headers['X-Amz-Content-Sha256'] = hash(this.request.body || '', 'hex')\n\n if (headers['X-Amz-Date'] || headers['x-amz-date'])\n this.datetime = headers['X-Amz-Date'] || headers['x-amz-date']\n else\n headers['X-Amz-Date'] = this.getDateTime()\n }\n\n delete headers.Authorization\n delete headers.authorization\n }\n}\n\nRequestSigner.prototype.sign = function() {\n if (!this.parsedPath) this.prepareRequest()\n\n if (this.request.signQuery) {\n this.parsedPath.query['X-Amz-Signature'] = this.signature()\n } else {\n this.request.headers.Authorization = this.authHeader()\n }\n\n this.request.path = this.formatPath()\n\n return this.request\n}\n\nRequestSigner.prototype.getDateTime = function() {\n if (!this.datetime) {\n var headers = this.request.headers,\n date = new Date(headers.Date || headers.date || new Date)\n\n this.datetime = date.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '')\n\n // Remove the trailing 'Z' on the timestamp string for CodeCommit git access\n if (this.isCodeCommitGit) this.datetime = this.datetime.slice(0, -1)\n }\n return this.datetime\n}\n\nRequestSigner.prototype.getDate = function() {\n return this.getDateTime().substr(0, 8)\n}\n\nRequestSigner.prototype.authHeader = function() {\n return [\n 'AWS4-HMAC-SHA256 Credential=' + this.credentials.accessKeyId + '/' + this.credentialString(),\n 'SignedHeaders=' + this.signedHeaders(),\n 'Signature=' + this.signature(),\n ].join(', ')\n}\n\nRequestSigner.prototype.signature = function() {\n var date = this.getDate(),\n cacheKey = [this.credentials.secretAccessKey, date, this.region, this.service].join(),\n kDate, kRegion, kService, kCredentials = credentialsCache.get(cacheKey)\n if (!kCredentials) {\n kDate = hmac('AWS4' + this.credentials.secretAccessKey, date)\n kRegion = hmac(kDate, this.region)\n kService = hmac(kRegion, this.service)\n kCredentials = hmac(kService, 'aws4_request')\n credentialsCache.set(cacheKey, kCredentials)\n }\n return hmac(kCredentials, this.stringToSign(), 'hex')\n}\n\nRequestSigner.prototype.stringToSign = function() {\n return [\n 'AWS4-HMAC-SHA256',\n this.getDateTime(),\n this.credentialString(),\n hash(this.canonicalString(), 'hex'),\n ].join('\\n')\n}\n\nRequestSigner.prototype.canonicalString = function() {\n if (!this.parsedPath) this.prepareRequest()\n\n var pathStr = this.parsedPath.path,\n query = this.parsedPath.query,\n headers = this.request.headers,\n queryStr = '',\n normalizePath = this.service !== 's3',\n decodePath = this.service === 's3' || this.request.doNotEncodePath,\n decodeSlashesInPath = this.service === 's3',\n firstValOnly = this.service === 's3',\n bodyHash\n\n if (this.service === 's3' && this.request.signQuery) {\n bodyHash = 'UNSIGNED-PAYLOAD'\n } else if (this.isCodeCommitGit) {\n bodyHash = ''\n } else {\n bodyHash = headers['X-Amz-Content-Sha256'] || headers['x-amz-content-sha256'] ||\n hash(this.request.body || '', 'hex')\n }\n\n if (query) {\n var reducedQuery = Object.keys(query).reduce(function(obj, key) {\n if (!key) return obj\n obj[encodeRfc3986Full(key)] = !Array.isArray(query[key]) ? query[key] :\n (firstValOnly ? query[key][0] : query[key])\n return obj\n }, {})\n var encodedQueryPieces = []\n Object.keys(reducedQuery).sort().forEach(function(key) {\n if (!Array.isArray(reducedQuery[key])) {\n encodedQueryPieces.push(key + '=' + encodeRfc3986Full(reducedQuery[key]))\n } else {\n reducedQuery[key].map(encodeRfc3986Full).sort()\n .forEach(function(val) { encodedQueryPieces.push(key + '=' + val) })\n }\n })\n queryStr = encodedQueryPieces.join('&')\n }\n if (pathStr !== '/') {\n if (normalizePath) pathStr = pathStr.replace(/\\/{2,}/g, '/')\n pathStr = pathStr.split('/').reduce(function(path, piece) {\n if (normalizePath && piece === '..') {\n path.pop()\n } else if (!normalizePath || piece !== '.') {\n if (decodePath) piece = decodeURIComponent(piece.replace(/\\+/g, ' '))\n path.push(encodeRfc3986Full(piece))\n }\n return path\n }, []).join('/')\n if (pathStr[0] !== '/') pathStr = '/' + pathStr\n if (decodeSlashesInPath) pathStr = pathStr.replace(/%2F/g, '/')\n }\n\n return [\n this.request.method || 'GET',\n pathStr,\n queryStr,\n this.canonicalHeaders() + '\\n',\n this.signedHeaders(),\n bodyHash,\n ].join('\\n')\n}\n\nRequestSigner.prototype.filterHeaders = function() {\n var headers = this.request.headers,\n extraHeadersToInclude = this.extraHeadersToInclude,\n extraHeadersToIgnore = this.extraHeadersToIgnore\n this.filteredHeaders = Object.keys(headers)\n .map(function(key) { return [key.toLowerCase(), headers[key]] })\n .filter(function(entry) {\n return extraHeadersToInclude[entry[0]] ||\n (HEADERS_TO_IGNORE[entry[0]] == null && !extraHeadersToIgnore[entry[0]])\n })\n .sort(function(a, b) { return a[0] < b[0] ? -1 : 1 })\n}\n\nRequestSigner.prototype.canonicalHeaders = function() {\n if (!this.filteredHeaders) this.filterHeaders()\n\n return this.filteredHeaders.map(function(entry) {\n return entry[0] + ':' + entry[1].toString().trim().replace(/\\s+/g, ' ')\n }).join('\\n')\n}\n\nRequestSigner.prototype.signedHeaders = function() {\n if (!this.filteredHeaders) this.filterHeaders()\n\n return this.filteredHeaders.map(function(entry) { return entry[0] }).join(';')\n}\n\nRequestSigner.prototype.credentialString = function() {\n return [\n this.getDate(),\n this.region,\n this.service,\n 'aws4_request',\n ].join('/')\n}\n\nRequestSigner.prototype.defaultCredentials = function() {\n var env = process.env\n return {\n accessKeyId: env.AWS_ACCESS_KEY_ID || env.AWS_ACCESS_KEY,\n secretAccessKey: env.AWS_SECRET_ACCESS_KEY || env.AWS_SECRET_KEY,\n sessionToken: env.AWS_SESSION_TOKEN,\n }\n}\n\nRequestSigner.prototype.parsePath = function() {\n var path = this.request.path || '/'\n\n // S3 doesn't always encode characters > 127 correctly and\n // all services don't encode characters > 255 correctly\n // So if there are non-reserved chars (and it's not already all % encoded), just encode them all\n if (/[^0-9A-Za-z;,/?:@&=+$\\-_.!~*'()#%]/.test(path)) {\n path = encodeURI(decodeURI(path))\n }\n\n var queryIx = path.indexOf('?'),\n query = null\n\n if (queryIx >= 0) {\n query = querystring.parse(path.slice(queryIx + 1))\n path = path.slice(0, queryIx)\n }\n\n this.parsedPath = {\n path: path,\n query: query,\n }\n}\n\nRequestSigner.prototype.formatPath = function() {\n var path = this.parsedPath.path,\n query = this.parsedPath.query\n\n if (!query) return path\n\n // Services don't support empty query string keys\n if (query[''] != null) delete query['']\n\n return path + '?' + encodeRfc3986(querystring.stringify(query))\n}\n\naws4.RequestSigner = RequestSigner\n\naws4.sign = function(request, credentials) {\n return new RequestSigner(request, credentials).sign()\n}\n", "// Copyright (c) 2012, Mark Cavage. All rights reserved.\n// Copyright 2015 Joyent, Inc.\n\nvar assert = require('assert');\nvar Stream = require('stream').Stream;\nvar util = require('util');\n\n\n///--- Globals\n\n/* JSSTYLED */\nvar UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;\n\n\n///--- Internal\n\nfunction _capitalize(str) {\n return (str.charAt(0).toUpperCase() + str.slice(1));\n}\n\nfunction _toss(name, expected, oper, arg, actual) {\n throw new assert.AssertionError({\n message: util.format('%s (%s) is required', name, expected),\n actual: (actual === undefined) ? typeof (arg) : actual(arg),\n expected: expected,\n operator: oper || '===',\n stackStartFunction: _toss.caller\n });\n}\n\nfunction _getClass(arg) {\n return (Object.prototype.toString.call(arg).slice(8, -1));\n}\n\nfunction noop() {\n // Why even bother with asserts?\n}\n\n\n///--- Exports\n\nvar types = {\n bool: {\n check: function (arg) { return typeof (arg) === 'boolean'; }\n },\n func: {\n check: function (arg) { return typeof (arg) === 'function'; }\n },\n string: {\n check: function (arg) { return typeof (arg) === 'string'; }\n },\n object: {\n check: function (arg) {\n return typeof (arg) === 'object' && arg !== null;\n }\n },\n number: {\n check: function (arg) {\n return typeof (arg) === 'number' && !isNaN(arg);\n }\n },\n finite: {\n check: function (arg) {\n return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg);\n }\n },\n buffer: {\n check: function (arg) { return Buffer.isBuffer(arg); },\n operator: 'Buffer.isBuffer'\n },\n array: {\n check: function (arg) { return Array.isArray(arg); },\n operator: 'Array.isArray'\n },\n stream: {\n check: function (arg) { return arg instanceof Stream; },\n operator: 'instanceof',\n actual: _getClass\n },\n date: {\n check: function (arg) { return arg instanceof Date; },\n operator: 'instanceof',\n actual: _getClass\n },\n regexp: {\n check: function (arg) { return arg instanceof RegExp; },\n operator: 'instanceof',\n actual: _getClass\n },\n uuid: {\n check: function (arg) {\n return typeof (arg) === 'string' && UUID_REGEXP.test(arg);\n },\n operator: 'isUUID'\n }\n};\n\nfunction _setExports(ndebug) {\n var keys = Object.keys(types);\n var out;\n\n /* re-export standard assert */\n if (process.env.NODE_NDEBUG) {\n out = noop;\n } else {\n out = function (arg, msg) {\n if (!arg) {\n _toss(msg, 'true', arg);\n }\n };\n }\n\n /* standard checks */\n keys.forEach(function (k) {\n if (ndebug) {\n out[k] = noop;\n return;\n }\n var type = types[k];\n out[k] = function (arg, msg) {\n if (!type.check(arg)) {\n _toss(msg, k, type.operator, arg, type.actual);\n }\n };\n });\n\n /* optional checks */\n keys.forEach(function (k) {\n var name = 'optional' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n out[name] = function (arg, msg) {\n if (arg === undefined || arg === null) {\n return;\n }\n if (!type.check(arg)) {\n _toss(msg, k, type.operator, arg, type.actual);\n }\n };\n });\n\n /* arrayOf checks */\n keys.forEach(function (k) {\n var name = 'arrayOf' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n var expected = '[' + k + ']';\n out[name] = function (arg, msg) {\n if (!Array.isArray(arg)) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n var i;\n for (i = 0; i < arg.length; i++) {\n if (!type.check(arg[i])) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n }\n };\n });\n\n /* optionalArrayOf checks */\n keys.forEach(function (k) {\n var name = 'optionalArrayOf' + _capitalize(k);\n if (ndebug) {\n out[name] = noop;\n return;\n }\n var type = types[k];\n var expected = '[' + k + ']';\n out[name] = function (arg, msg) {\n if (arg === undefined || arg === null) {\n return;\n }\n if (!Array.isArray(arg)) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n var i;\n for (i = 0; i < arg.length; i++) {\n if (!type.check(arg[i])) {\n _toss(msg, expected, type.operator, arg, type.actual);\n }\n }\n };\n });\n\n /* re-export built-in assertions */\n Object.keys(assert).forEach(function (k) {\n if (k === 'AssertionError') {\n out[k] = assert[k];\n return;\n }\n if (ndebug) {\n out[k] = noop;\n return;\n }\n out[k] = assert[k];\n });\n\n /* export ourselves (for unit tests _only_) */\n out._setExports = _setExports;\n\n return out;\n}\n\nmodule.exports = _setExports(process.env.NODE_NDEBUG);\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n", "// Copyright 2015 Joyent, Inc.\n\nvar Buffer = require('safer-buffer').Buffer;\n\nvar algInfo = {\n\t'dsa': {\n\t\tparts: ['p', 'q', 'g', 'y'],\n\t\tsizePart: 'p'\n\t},\n\t'rsa': {\n\t\tparts: ['e', 'n'],\n\t\tsizePart: 'n'\n\t},\n\t'ecdsa': {\n\t\tparts: ['curve', 'Q'],\n\t\tsizePart: 'Q'\n\t},\n\t'ed25519': {\n\t\tparts: ['A'],\n\t\tsizePart: 'A'\n\t}\n};\nalgInfo['curve25519'] = algInfo['ed25519'];\n\nvar algPrivInfo = {\n\t'dsa': {\n\t\tparts: ['p', 'q', 'g', 'y', 'x']\n\t},\n\t'rsa': {\n\t\tparts: ['n', 'e', 'd', 'iqmp', 'p', 'q']\n\t},\n\t'ecdsa': {\n\t\tparts: ['curve', 'Q', 'd']\n\t},\n\t'ed25519': {\n\t\tparts: ['A', 'k']\n\t}\n};\nalgPrivInfo['curve25519'] = algPrivInfo['ed25519'];\n\nvar hashAlgs = {\n\t'md5': true,\n\t'sha1': true,\n\t'sha256': true,\n\t'sha384': true,\n\t'sha512': true\n};\n\n/*\n * Taken from\n * http://csrc.nist.gov/groups/ST/toolkit/documents/dss/NISTReCur.pdf\n */\nvar curves = {\n\t'nistp256': {\n\t\tsize: 256,\n\t\tpkcs8oid: '1.2.840.10045.3.1.7',\n\t\tp: Buffer.from(('00' +\n\t\t 'ffffffff 00000001 00000000 00000000' +\n\t\t '00000000 ffffffff ffffffff ffffffff').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ta: Buffer.from(('00' +\n\t\t 'FFFFFFFF 00000001 00000000 00000000' +\n\t\t '00000000 FFFFFFFF FFFFFFFF FFFFFFFC').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tb: Buffer.from((\n\t\t '5ac635d8 aa3a93e7 b3ebbd55 769886bc' +\n\t\t '651d06b0 cc53b0f6 3bce3c3e 27d2604b').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ts: Buffer.from(('00' +\n\t\t 'c49d3608 86e70493 6a6678e1 139d26b7' +\n\t\t '819f7e90').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tn: Buffer.from(('00' +\n\t\t 'ffffffff 00000000 ffffffff ffffffff' +\n\t\t 'bce6faad a7179e84 f3b9cac2 fc632551').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tG: Buffer.from(('04' +\n\t\t '6b17d1f2 e12c4247 f8bce6e5 63a440f2' +\n\t\t '77037d81 2deb33a0 f4a13945 d898c296' +\n\t\t '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16' +\n\t\t '2bce3357 6b315ece cbb64068 37bf51f5').\n\t\t replace(/ /g, ''), 'hex')\n\t},\n\t'nistp384': {\n\t\tsize: 384,\n\t\tpkcs8oid: '1.3.132.0.34',\n\t\tp: Buffer.from(('00' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff fffffffe' +\n\t\t 'ffffffff 00000000 00000000 ffffffff').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ta: Buffer.from(('00' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE' +\n\t\t 'FFFFFFFF 00000000 00000000 FFFFFFFC').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tb: Buffer.from((\n\t\t 'b3312fa7 e23ee7e4 988e056b e3f82d19' +\n\t\t '181d9c6e fe814112 0314088f 5013875a' +\n\t\t 'c656398d 8a2ed19d 2a85c8ed d3ec2aef').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ts: Buffer.from(('00' +\n\t\t 'a335926a a319a27a 1d00896a 6773a482' +\n\t\t '7acdac73').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tn: Buffer.from(('00' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff c7634d81 f4372ddf' +\n\t\t '581a0db2 48b0a77a ecec196a ccc52973').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tG: Buffer.from(('04' +\n\t\t 'aa87ca22 be8b0537 8eb1c71e f320ad74' +\n\t\t '6e1d3b62 8ba79b98 59f741e0 82542a38' +\n\t\t '5502f25d bf55296c 3a545e38 72760ab7' +\n\t\t '3617de4a 96262c6f 5d9e98bf 9292dc29' +\n\t\t 'f8f41dbd 289a147c e9da3113 b5f0b8c0' +\n\t\t '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f').\n\t\t replace(/ /g, ''), 'hex')\n\t},\n\t'nistp521': {\n\t\tsize: 521,\n\t\tpkcs8oid: '1.3.132.0.35',\n\t\tp: Buffer.from((\n\t\t '01ffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffff').replace(/ /g, ''), 'hex'),\n\t\ta: Buffer.from(('01FF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' +\n\t\t 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tb: Buffer.from(('51' +\n\t\t '953eb961 8e1c9a1f 929a21a0 b68540ee' +\n\t\t 'a2da725b 99b315f3 b8b48991 8ef109e1' +\n\t\t '56193951 ec7e937b 1652c0bd 3bb1bf07' +\n\t\t '3573df88 3d2c34f1 ef451fd4 6b503f00').\n\t\t replace(/ /g, ''), 'hex'),\n\t\ts: Buffer.from(('00' +\n\t\t 'd09e8800 291cb853 96cc6717 393284aa' +\n\t\t 'a0da64ba').replace(/ /g, ''), 'hex'),\n\t\tn: Buffer.from(('01ff' +\n\t\t 'ffffffff ffffffff ffffffff ffffffff' +\n\t\t 'ffffffff ffffffff ffffffff fffffffa' +\n\t\t '51868783 bf2f966b 7fcc0148 f709a5d0' +\n\t\t '3bb5c9b8 899c47ae bb6fb71e 91386409').\n\t\t replace(/ /g, ''), 'hex'),\n\t\tG: Buffer.from(('04' +\n\t\t '00c6 858e06b7 0404e9cd 9e3ecb66 2395b442' +\n\t\t '9c648139 053fb521 f828af60 6b4d3dba' +\n\t\t 'a14b5e77 efe75928 fe1dc127 a2ffa8de' +\n\t\t '3348b3c1 856a429b f97e7e31 c2e5bd66' +\n\t\t '0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9' +\n\t\t '98f54449 579b4468 17afbd17 273e662c' +\n\t\t '97ee7299 5ef42640 c550b901 3fad0761' +\n\t\t '353c7086 a272c240 88be9476 9fd16650').\n\t\t replace(/ /g, ''), 'hex')\n\t}\n};\n\nmodule.exports = {\n\tinfo: algInfo,\n\tprivInfo: algPrivInfo,\n\thashAlgs: hashAlgs,\n\tcurves: curves\n};\n", "// Copyright 2015 Joyent, Inc.\n\nvar assert = require('assert-plus');\nvar util = require('util');\n\nfunction FingerprintFormatError(fp, format) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, FingerprintFormatError);\n\tthis.name = 'FingerprintFormatError';\n\tthis.fingerprint = fp;\n\tthis.format = format;\n\tthis.message = 'Fingerprint format is not supported, or is invalid: ';\n\tif (fp !== undefined)\n\t\tthis.message += ' fingerprint = ' + fp;\n\tif (format !== undefined)\n\t\tthis.message += ' format = ' + format;\n}\nutil.inherits(FingerprintFormatError, Error);\n\nfunction InvalidAlgorithmError(alg) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, InvalidAlgorithmError);\n\tthis.name = 'InvalidAlgorithmError';\n\tthis.algorithm = alg;\n\tthis.message = 'Algorithm \"' + alg + '\" is not supported';\n}\nutil.inherits(InvalidAlgorithmError, Error);\n\nfunction KeyParseError(name, format, innerErr) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, KeyParseError);\n\tthis.name = 'KeyParseError';\n\tthis.format = format;\n\tthis.keyName = name;\n\tthis.innerErr = innerErr;\n\tthis.message = 'Failed to parse ' + name + ' as a valid ' + format +\n\t ' format key: ' + innerErr.message;\n}\nutil.inherits(KeyParseError, Error);\n\nfunction SignatureParseError(type, format, innerErr) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, SignatureParseError);\n\tthis.name = 'SignatureParseError';\n\tthis.type = type;\n\tthis.format = format;\n\tthis.innerErr = innerErr;\n\tthis.message = 'Failed to parse the given data as a ' + type +\n\t ' signature in ' + format + ' format: ' + innerErr.message;\n}\nutil.inherits(SignatureParseError, Error);\n\nfunction CertificateParseError(name, format, innerErr) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, CertificateParseError);\n\tthis.name = 'CertificateParseError';\n\tthis.format = format;\n\tthis.certName = name;\n\tthis.innerErr = innerErr;\n\tthis.message = 'Failed to parse ' + name + ' as a valid ' + format +\n\t ' format certificate: ' + innerErr.message;\n}\nutil.inherits(CertificateParseError, Error);\n\nfunction KeyEncryptedError(name, format) {\n\tif (Error.captureStackTrace)\n\t\tError.captureStackTrace(this, KeyEncryptedError);\n\tthis.name = 'KeyEncryptedError';\n\tthis.format = format;\n\tthis.keyName = name;\n\tthis.message = 'The ' + format + ' format key ' + name + ' is ' +\n\t 'encrypted (password-protected), and no passphrase was ' +\n\t 'provided in `options`';\n}\nutil.inherits(KeyEncryptedError, Error);\n\nmodule.exports = {\n\tFingerprintFormatError: FingerprintFormatError,\n\tInvalidAlgorithmError: InvalidAlgorithmError,\n\tKeyParseError: KeyParseError,\n\tSignatureParseError: SignatureParseError,\n\tKeyEncryptedError: KeyEncryptedError,\n\tCertificateParseError: CertificateParseError\n};\n", "// Copyright 2011 Mark Cavage All rights reserved.\n\n\nmodule.exports = {\n\n newInvalidAsn1Error: function (msg) {\n var e = new Error();\n e.name = 'InvalidAsn1Error';\n e.message = msg || '';\n return e;\n }\n\n};\n", "// Copyright 2011 Mark Cavage All rights reserved.\n\n\nmodule.exports = {\n EOC: 0,\n Boolean: 1,\n Integer: 2,\n BitString: 3,\n OctetString: 4,\n Null: 5,\n OID: 6,\n ObjectDescriptor: 7,\n External: 8,\n Real: 9, // float\n Enumeration: 10,\n PDV: 11,\n Utf8String: 12,\n RelativeOID: 13,\n Sequence: 16,\n Set: 17,\n NumericString: 18,\n PrintableString: 19,\n T61String: 20,\n VideotexString: 21,\n IA5String: 22,\n UTCTime: 23,\n GeneralizedTime: 24,\n GraphicString: 25,\n VisibleString: 26,\n GeneralString: 28,\n UniversalString: 29,\n CharacterString: 30,\n BMPString: 31,\n Constructor: 32,\n Context: 128\n};\n", "// Copyright 2011 Mark Cavage All rights reserved.\n\nvar assert = require('assert');\nvar Buffer = require('safer-buffer').Buffer;\n\nvar ASN1 = require('./types');\nvar errors = require('./errors');\n\n\n// --- Globals\n\nvar newInvalidAsn1Error = errors.newInvalidAsn1Error;\n\n\n\n// --- API\n\nfunction Reader(data) {\n if (!data || !Buffer.isBuffer(data))\n throw new TypeError('data must be a node Buffer');\n\n this._buf = data;\n this._size = data.length;\n\n // These hold the \"current\" state\n this._len = 0;\n this._offset = 0;\n}\n\nObject.defineProperty(Reader.prototype, 'length', {\n enumerable: true,\n get: function () { return (this._len); }\n});\n\nObject.defineProperty(Reader.prototype, 'offset', {\n enumerable: true,\n get: function () { return (this._offset); }\n});\n\nObject.defineProperty(Reader.prototype, 'remain', {\n get: function () { return (this._size - this._offset); }\n});\n\nObject.defineProperty(Reader.prototype, 'buffer', {\n get: function () { return (this._buf.slice(this._offset)); }\n});\n\n\n/**\n * Reads a single byte and advances offset; you can pass in `true` to make this\n * a \"peek\" operation (i.e., get the byte, but don't advance the offset).\n *\n * @param {Boolean} peek true means don't move offset.\n * @return {Number} the next byte, null if not enough data.\n */\nReader.prototype.readByte = function (peek) {\n if (this._size - this._offset < 1)\n return null;\n\n var b = this._buf[this._offset] & 0xff;\n\n if (!peek)\n this._offset += 1;\n\n return b;\n};\n\n\nReader.prototype.peek = function () {\n return this.readByte(true);\n};\n\n\n/**\n * Reads a (potentially) variable length off the BER buffer. This call is\n * not really meant to be called directly, as callers have to manipulate\n * the internal buffer afterwards.\n *\n * As a result of this call, you can call `Reader.length`, until the\n * next thing called that does a readLength.\n *\n * @return {Number} the amount of offset to advance the buffer.\n * @throws {InvalidAsn1Error} on bad ASN.1\n */\nReader.prototype.readLength = function (offset) {\n if (offset === undefined)\n offset = this._offset;\n\n if (offset >= this._size)\n return null;\n\n var lenB = this._buf[offset++] & 0xff;\n if (lenB === null)\n return null;\n\n if ((lenB & 0x80) === 0x80) {\n lenB &= 0x7f;\n\n if (lenB === 0)\n throw newInvalidAsn1Error('Indefinite length not supported');\n\n if (lenB > 4)\n throw newInvalidAsn1Error('encoding too long');\n\n if (this._size - offset < lenB)\n return null;\n\n this._len = 0;\n for (var i = 0; i < lenB; i++)\n this._len = (this._len << 8) + (this._buf[offset++] & 0xff);\n\n } else {\n // Wasn't a variable length\n this._len = lenB;\n }\n\n return offset;\n};\n\n\n/**\n * Parses the next sequence in this BER buffer.\n *\n * To get the length of the sequence, call `Reader.length`.\n *\n * @return {Number} the sequence's tag.\n */\nReader.prototype.readSequence = function (tag) {\n var seq = this.peek();\n if (seq === null)\n return null;\n if (tag !== undefined && tag !== seq)\n throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +\n ': got 0x' + seq.toString(16));\n\n var o = this.readLength(this._offset + 1); // stored in `length`\n if (o === null)\n return null;\n\n this._offset = o;\n return seq;\n};\n\n\nReader.prototype.readInt = function () {\n return this._readTag(ASN1.Integer);\n};\n\n\nReader.prototype.readBoolean = function () {\n return (this._readTag(ASN1.Boolean) === 0 ? false : true);\n};\n\n\nReader.prototype.readEnumeration = function () {\n return this._readTag(ASN1.Enumeration);\n};\n\n\nReader.prototype.readString = function (tag, retbuf) {\n if (!tag)\n tag = ASN1.OctetString;\n\n var b = this.peek();\n if (b === null)\n return null;\n\n if (b !== tag)\n throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +\n ': got 0x' + b.toString(16));\n\n var o = this.readLength(this._offset + 1); // stored in `length`\n\n if (o === null)\n return null;\n\n if (this.length > this._size - o)\n return null;\n\n this._offset = o;\n\n if (this.length === 0)\n return retbuf ? Buffer.alloc(0) : '';\n\n var str = this._buf.slice(this._offset, this._offset + this.length);\n this._offset += this.length;\n\n return retbuf ? str : str.toString('utf8');\n};\n\nReader.prototype.readOID = function (tag) {\n if (!tag)\n tag = ASN1.OID;\n\n var b = this.readString(tag, true);\n if (b === null)\n return null;\n\n var values = [];\n var value = 0;\n\n for (var i = 0; i < b.length; i++) {\n var byte = b[i] & 0xff;\n\n value <<= 7;\n value += byte & 0x7f;\n if ((byte & 0x80) === 0) {\n values.push(value);\n value = 0;\n }\n }\n\n value = values.shift();\n values.unshift(value % 40);\n values.unshift((value / 40) >> 0);\n\n return values.join('.');\n};\n\n\nReader.prototype._readTag = function (tag) {\n assert.ok(tag !== undefined);\n\n var b = this.peek();\n\n if (b === null)\n return null;\n\n if (b !== tag)\n throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) +\n ': got 0x' + b.toString(16));\n\n var o = this.readLength(this._offset + 1); // stored in `length`\n if (o === null)\n return null;\n\n if (this.length > 4)\n throw newInvalidAsn1Error('Integer too long: ' + this.length);\n\n if (this.length > this._size - o)\n return null;\n this._offset = o;\n\n var fb = this._buf[this._offset];\n var value = 0;\n\n for (var i = 0; i < this.length; i++) {\n value <<= 8;\n value |= (this._buf[this._offset++] & 0xff);\n }\n\n if ((fb & 0x80) === 0x80 && i !== 4)\n value -= (1 << (i * 8));\n\n return value >> 0;\n};\n\n\n\n// --- Exported API\n\nmodule.exports = Reader;\n", "// Copyright 2011 Mark Cavage All rights reserved.\n\nvar assert = require('assert');\nvar Buffer = require('safer-buffer').Buffer;\nvar ASN1 = require('./types');\nvar errors = require('./errors');\n\n\n// --- Globals\n\nvar newInvalidAsn1Error = errors.newInvalidAsn1Error;\n\nvar DEFAULT_OPTS = {\n size: 1024,\n growthFactor: 8\n};\n\n\n// --- Helpers\n\nfunction merge(from, to) {\n assert.ok(from);\n assert.equal(typeof (from), 'object');\n assert.ok(to);\n assert.equal(typeof (to), 'object');\n\n var keys = Object.getOwnPropertyNames(from);\n keys.forEach(function (key) {\n if (to[key])\n return;\n\n var value = Object.getOwnPropertyDescriptor(from, key);\n Object.defineProperty(to, key, value);\n });\n\n return to;\n}\n\n\n\n// --- API\n\nfunction Writer(options) {\n options = merge(DEFAULT_OPTS, options || {});\n\n this._buf = Buffer.alloc(options.size || 1024);\n this._size = this._buf.length;\n this._offset = 0;\n this._options = options;\n\n // A list of offsets in the buffer where we need to insert\n // sequence tag/len pairs.\n this._seq = [];\n}\n\nObject.defineProperty(Writer.prototype, 'buffer', {\n get: function () {\n if (this._seq.length)\n throw newInvalidAsn1Error(this._seq.length + ' unended sequence(s)');\n\n return (this._buf.slice(0, this._offset));\n }\n});\n\nWriter.prototype.writeByte = function (b) {\n if (typeof (b) !== 'number')\n throw new TypeError('argument must be a Number');\n\n this._ensure(1);\n this._buf[this._offset++] = b;\n};\n\n\nWriter.prototype.writeInt = function (i, tag) {\n if (typeof (i) !== 'number')\n throw new TypeError('argument must be a Number');\n if (typeof (tag) !== 'number')\n tag = ASN1.Integer;\n\n var sz = 4;\n\n while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000 >> 0)) &&\n (sz > 1)) {\n sz--;\n i <<= 8;\n }\n\n if (sz > 4)\n throw newInvalidAsn1Error('BER ints cannot be > 0xffffffff');\n\n this._ensure(2 + sz);\n this._buf[this._offset++] = tag;\n this._buf[this._offset++] = sz;\n\n while (sz-- > 0) {\n this._buf[this._offset++] = ((i & 0xff000000) >>> 24);\n i <<= 8;\n }\n\n};\n\n\nWriter.prototype.writeNull = function () {\n this.writeByte(ASN1.Null);\n this.writeByte(0x00);\n};\n\n\nWriter.prototype.writeEnumeration = function (i, tag) {\n if (typeof (i) !== 'number')\n throw new TypeError('argument must be a Number');\n if (typeof (tag) !== 'number')\n tag = ASN1.Enumeration;\n\n return this.writeInt(i, tag);\n};\n\n\nWriter.prototype.writeBoolean = function (b, tag) {\n if (typeof (b) !== 'boolean')\n throw new TypeError('argument must be a Boolean');\n if (typeof (tag) !== 'number')\n tag = ASN1.Boolean;\n\n this._ensure(3);\n this._buf[this._offset++] = tag;\n this._buf[this._offset++] = 0x01;\n this._buf[this._offset++] = b ? 0xff : 0x00;\n};\n\n\nWriter.prototype.writeString = function (s, tag) {\n if (typeof (s) !== 'string')\n throw new TypeError('argument must be a string (was: ' + typeof (s) + ')');\n if (typeof (tag) !== 'number')\n tag = ASN1.OctetString;\n\n var len = Buffer.byteLength(s);\n this.writeByte(tag);\n this.writeLength(len);\n if (len) {\n this._ensure(len);\n this._buf.write(s, this._offset);\n this._offset += len;\n }\n};\n\n\nWriter.prototype.writeBuffer = function (buf, tag) {\n if (typeof (tag) !== 'number')\n throw new TypeError('tag must be a number');\n if (!Buffer.isBuffer(buf))\n throw new TypeError('argument must be a buffer');\n\n this.writeByte(tag);\n this.writeLength(buf.length);\n this._ensure(buf.length);\n buf.copy(this._buf, this._offset, 0, buf.length);\n this._offset += buf.length;\n};\n\n\nWriter.prototype.writeStringArray = function (strings) {\n if ((!strings instanceof Array))\n throw new TypeError('argument must be an Array[String]');\n\n var self = this;\n strings.forEach(function (s) {\n self.writeString(s);\n });\n};\n\n// This is really to solve DER cases, but whatever for now\nWriter.prototype.writeOID = function (s, tag) {\n if (typeof (s) !== 'string')\n throw new TypeError('argument must be a string');\n if (typeof (tag) !== 'number')\n tag = ASN1.OID;\n\n if (!/^([0-9]+\\.){3,}[0-9]+$/.test(s))\n throw new Error('argument is not a valid OID string');\n\n function encodeOctet(bytes, octet) {\n if (octet < 128) {\n bytes.push(octet);\n } else if (octet < 16384) {\n bytes.push((octet >>> 7) | 0x80);\n bytes.push(octet & 0x7F);\n } else if (octet < 2097152) {\n bytes.push((octet >>> 14) | 0x80);\n bytes.push(((octet >>> 7) | 0x80) & 0xFF);\n bytes.push(octet & 0x7F);\n } else if (octet < 268435456) {\n bytes.push((octet >>> 21) | 0x80);\n bytes.push(((octet >>> 14) | 0x80) & 0xFF);\n bytes.push(((octet >>> 7) | 0x80) & 0xFF);\n bytes.push(octet & 0x7F);\n } else {\n bytes.push(((octet >>> 28) | 0x80) & 0xFF);\n bytes.push(((octet >>> 21) | 0x80) & 0xFF);\n bytes.push(((octet >>> 14) | 0x80) & 0xFF);\n bytes.push(((octet >>> 7) | 0x80) & 0xFF);\n bytes.push(octet & 0x7F);\n }\n }\n\n var tmp = s.split('.');\n var bytes = [];\n bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10));\n tmp.slice(2).forEach(function (b) {\n encodeOctet(bytes, parseInt(b, 10));\n });\n\n var self = this;\n this._ensure(2 + bytes.length);\n this.writeByte(tag);\n this.writeLength(bytes.length);\n bytes.forEach(function (b) {\n self.writeByte(b);\n });\n};\n\n\nWriter.prototype.writeLength = function (len) {\n if (typeof (len) !== 'number')\n throw new TypeError('argument must be a Number');\n\n this._ensure(4);\n\n if (len <= 0x7f) {\n this._buf[this._offset++] = len;\n } else if (len <= 0xff) {\n this._buf[this._offset++] = 0x81;\n this._buf[this._offset++] = len;\n } else if (len <= 0xffff) {\n this._buf[this._offset++] = 0x82;\n this._buf[this._offset++] = len >> 8;\n this._buf[this._offset++] = len;\n } else if (len <= 0xffffff) {\n this._buf[this._offset++] = 0x83;\n this._buf[this._offset++] = len >> 16;\n this._buf[this._offset++] = len >> 8;\n this._buf[this._offset++] = len;\n } else {\n throw newInvalidAsn1Error('Length too long (> 4 bytes)');\n }\n};\n\nWriter.prototype.startSequence = function (tag) {\n if (typeof (tag) !== 'number')\n tag = ASN1.Sequence | ASN1.Constructor;\n\n this.writeByte(tag);\n this._seq.push(this._offset);\n this._ensure(3);\n this._offset += 3;\n};\n\n\nWriter.prototype.endSequence = function () {\n var seq = this._seq.pop();\n var start = seq + 3;\n var len = this._offset - start;\n\n if (len <= 0x7f) {\n this._shift(start, len, -2);\n this._buf[seq] = len;\n } else if (len <= 0xff) {\n this._shift(start, len, -1);\n this._buf[seq] = 0x81;\n this._buf[seq + 1] = len;\n } else if (len <= 0xffff) {\n this._buf[seq] = 0x82;\n this._buf[seq + 1] = len >> 8;\n this._buf[seq + 2] = len;\n } else if (len <= 0xffffff) {\n this._shift(start, len, 1);\n this._buf[seq] = 0x83;\n this._buf[seq + 1] = len >> 16;\n this._buf[seq + 2] = len >> 8;\n this._buf[seq + 3] = len;\n } else {\n throw newInvalidAsn1Error('Sequence too long');\n }\n};\n\n\nWriter.prototype._shift = function (start, len, shift) {\n assert.ok(start !== undefined);\n assert.ok(len !== undefined);\n assert.ok(shift);\n\n this._buf.copy(this._buf, start + shift, start, start + len);\n this._offset += shift;\n};\n\nWriter.prototype._ensure = function (len) {\n assert.ok(len);\n\n if (this._size - this._offset < len) {\n var sz = this._size * this._options.growthFactor;\n if (sz - this._offset < len)\n sz += len;\n\n var buf = Buffer.alloc(sz);\n\n this._buf.copy(buf, 0, 0, this._offset);\n this._buf = buf;\n this._size = sz;\n }\n};\n\n\n\n// --- Exported API\n\nmodule.exports = Writer;\n", "// Copyright 2011 Mark Cavage All rights reserved.\n\nvar errors = require('./errors');\nvar types = require('./types');\n\nvar Reader = require('./reader');\nvar Writer = require('./writer');\n\n\n// --- Exports\n\nmodule.exports = {\n\n Reader: Reader,\n\n Writer: Writer\n\n};\n\nfor (var t in types) {\n if (types.hasOwnProperty(t))\n module.exports[t] = types[t];\n}\nfor (var e in errors) {\n if (errors.hasOwnProperty(e))\n module.exports[e] = errors[e];\n}\n", "// Copyright 2011 Mark Cavage All rights reserved.\n\n// If you have no idea what ASN.1 or BER is, see this:\n// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc\n\nvar Ber = require('./ber/index');\n\n\n\n// --- Exported API\n\nmodule.exports = {\n\n Ber: Ber,\n\n BerReader: Ber.Reader,\n\n BerWriter: Ber.Writer\n\n};\n", "(function(){\n\n // Copyright (c) 2005 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Basic JavaScript BN library - subset useful for RSA encryption.\n\n // Bits per digit\n var dbits;\n\n // JavaScript engine analysis\n var canary = 0xdeadbeefcafe;\n var j_lm = ((canary&0xffffff)==0xefcafe);\n\n // (public) Constructor\n function BigInteger(a,b,c) {\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n }\n\n // return new, unset BigInteger\n function nbi() { return new BigInteger(null); }\n\n // am: Compute w_j += (x*this_i), propagate carries,\n // c is initial carry, returns final carry.\n // c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n // We need to select the fastest one that works in this environment.\n\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n function am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this[i++]+w[j]+c;\n c = Math.floor(v/0x4000000);\n w[j++] = v&0x3ffffff;\n }\n return c;\n }\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n function am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this[i]&0x7fff;\n var h = this[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w[j++] = l&0x3fffffff;\n }\n return c;\n }\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n function am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this[i]&0x3fff;\n var h = this[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w[j++] = l&0xfffffff;\n }\n return c;\n }\n var inBrowser = typeof navigator !== \"undefined\";\n if(inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n }\n else if(inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n }\n else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n }\n\n BigInteger.prototype.DB = dbits;\n BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n }\n\n // (protected) set from integer value x, -DV <= x < DV\n function bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this[0] = x;\n else if(x < -1) this[0] = x+this.DV;\n else this.t = 0;\n }\n\n // return bigint initialized to value\n function nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n // (protected) set from string and radix\n function bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this[this.t++] = x;\n else if(sh+k > this.DB) {\n this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh));\n }\n else\n this[this.t-1] |= x<= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t;\n }\n\n // (public) return string representation in given radix\n function bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1< 0) {\n if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this[i]&((1<>(p+=this.DB-k);\n }\n else {\n d = (this[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n }\n\n // (public) -this\n function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n // (public) |this|\n function bnAbs() { return (this.s<0)?this.negate():this; }\n\n // (public) return + if this > a, - if this < a, 0 if equal\n function bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n return 0;\n }\n\n // returns bit length of the integer x\n function nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n }\n\n // (public) return the number of bits in \"this\"\n function bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n }\n\n // (protected) r = this << n*DB\n function bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n for(i = n-1; i >= 0; --i) r[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n }\n\n // (protected) r = this >> n*DB\n function bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n }\n\n // (protected) r = this << n\n function bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r[i+ds+1] = (this[i]>>cbs)|c;\n c = (this[i]&bm)<= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n }\n\n // (protected) r = this >> n\n function bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r[i-ds-1] |= (this[i]&bm)<>bs;\n }\n if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c -= a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r[i++] = this.DV+c;\n else if(c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n }\n\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n }\n\n // (protected) r = this^2, r != this (HAC 14.16)\n function bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x[i],r,2*i,0,1);\n if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r[i+x.t] -= x.DV;\n r[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n }\n\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n function bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y); // \"negative\" y so we can replace sub with am later\n while(y.t < ys) y[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n }\n\n // (public) this mod a\n function bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n }\n\n // Modular reduction using \"classic\" algorithm\n function Classic(m) { this.m = m; }\n function cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n }\n function cRevert(x) { return x; }\n function cReduce(x) { x.divRemTo(this.m,null,x); }\n function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n Classic.prototype.convert = cConvert;\n Classic.prototype.revert = cRevert;\n Classic.prototype.reduce = cReduce;\n Classic.prototype.mulTo = cMulTo;\n Classic.prototype.sqrTo = cSqrTo;\n\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n function bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this[0];\n if((x&1) == 0) return 0;\n var y = x&3; // y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n }\n\n // Montgomery reduction\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n }\n\n // xR mod m\n function montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n }\n\n // x/R mod m\n function montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n\n // x = x/R mod m (HAC 14.32)\n function montReduce(x) {\n while(x.t <= this.mt2) // pad x so am has enough room later\n x[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = \"x^2/R mod m\"; x != r\n function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = \"xy/R mod m\"; x,y != r\n function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Montgomery.prototype.convert = montConvert;\n Montgomery.prototype.revert = montRevert;\n Montgomery.prototype.reduce = montReduce;\n Montgomery.prototype.mulTo = montMulTo;\n Montgomery.prototype.sqrTo = montSqrTo;\n\n // (protected) true iff this is even\n function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n function bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n }\n\n // (public) this^e % m, 0 <= e < 2^32\n function bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n }\n\n // protected\n BigInteger.prototype.copyTo = bnpCopyTo;\n BigInteger.prototype.fromInt = bnpFromInt;\n BigInteger.prototype.fromString = bnpFromString;\n BigInteger.prototype.clamp = bnpClamp;\n BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n BigInteger.prototype.lShiftTo = bnpLShiftTo;\n BigInteger.prototype.rShiftTo = bnpRShiftTo;\n BigInteger.prototype.subTo = bnpSubTo;\n BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n BigInteger.prototype.squareTo = bnpSquareTo;\n BigInteger.prototype.divRemTo = bnpDivRemTo;\n BigInteger.prototype.invDigit = bnpInvDigit;\n BigInteger.prototype.isEven = bnpIsEven;\n BigInteger.prototype.exp = bnpExp;\n\n // public\n BigInteger.prototype.toString = bnToString;\n BigInteger.prototype.negate = bnNegate;\n BigInteger.prototype.abs = bnAbs;\n BigInteger.prototype.compareTo = bnCompareTo;\n BigInteger.prototype.bitLength = bnBitLength;\n BigInteger.prototype.mod = bnMod;\n BigInteger.prototype.modPowInt = bnModPowInt;\n\n // \"constants\"\n BigInteger.ZERO = nbv(0);\n BigInteger.ONE = nbv(1);\n\n // Copyright (c) 2005-2009 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Extended JavaScript BN functions, required for RSA private ops.\n\n // Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n // Version 1.2: square() API, isProbablePrime fix\n\n // (public)\n function bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n // (public) return value as integer\n function bnIntValue() {\n if(this.s < 0) {\n if(this.t == 1) return this[0]-this.DV;\n else if(this.t == 0) return -1;\n }\n else if(this.t == 1) return this[0];\n else if(this.t == 0) return 0;\n // assumes 16 < DB < 32\n return ((this[1]&((1<<(32-this.DB))-1))<>24; }\n\n // (public) return value as short (assumes DB>=16)\n function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }\n\n // (protected) return x s.t. r^x < DV\n function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n // (public) 0 if this == 0, 1 if this > 0\n function bnSigNum() {\n if(this.s < 0) return -1;\n else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n else return 1;\n }\n\n // (protected) convert to radix string\n function bnpToRadix(b) {\n if(b == null) b = 10;\n if(this.signum() == 0 || b < 2 || b > 36) return \"0\";\n var cs = this.chunkSize(b);\n var a = Math.pow(b,cs);\n var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n this.divRemTo(d,y,z);\n while(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n }\n return z.intValue().toString(b) + r;\n }\n\n // (protected) convert from radix string\n function bnpFromRadix(s,b) {\n this.fromInt(0);\n if(b == null) b = 10;\n var cs = this.chunkSize(b);\n var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\n for(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n }\n if(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n }\n if(mi) BigInteger.ZERO.subTo(this,this);\n }\n\n // (protected) alternate constructor\n function bnpFromNumber(a,b,c) {\n if(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1))\t// force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1< 0) {\n if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this[i]&((1<>(p+=this.DB-8);\n }\n else {\n d = (this[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n }\n return r;\n }\n\n function bnEquals(a) { return(this.compareTo(a)==0); }\n function bnMin(a) { return(this.compareTo(a)<0)?this:a; }\n function bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n // (protected) r = this op a (bitwise)\n function bnpBitwiseTo(a,op,r) {\n var i, f, m = Math.min(a.t,this.t);\n for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);\n if(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r[i] = op(this[i],f);\n r.t = this.t;\n }\n else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);\n r.t = a.t;\n }\n r.s = op(this.s,a.s);\n r.clamp();\n }\n\n // (public) this & a\n function op_and(x,y) { return x&y; }\n function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n // (public) this | a\n function op_or(x,y) { return x|y; }\n function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n // (public) this ^ a\n function op_xor(x,y) { return x^y; }\n function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n // (public) this & ~a\n function op_andnot(x,y) { return x&~y; }\n function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n // (public) ~this\n function bnNot() {\n var r = nbi();\n for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];\n r.t = this.t;\n r.s = ~this.s;\n return r;\n }\n\n // (public) this << n\n function bnShiftLeft(n) {\n var r = nbi();\n if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\n return r;\n }\n\n // (public) this >> n\n function bnShiftRight(n) {\n var r = nbi();\n if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\n return r;\n }\n\n // return index of lowest 1-bit in x, x < 2^31\n function lbit(x) {\n if(x == 0) return -1;\n var r = 0;\n if((x&0xffff) == 0) { x >>= 16; r += 16; }\n if((x&0xff) == 0) { x >>= 8; r += 8; }\n if((x&0xf) == 0) { x >>= 4; r += 4; }\n if((x&3) == 0) { x >>= 2; r += 2; }\n if((x&1) == 0) ++r;\n return r;\n }\n\n // (public) returns index of lowest 1-bit (or -1 if none)\n function bnGetLowestSetBit() {\n for(var i = 0; i < this.t; ++i)\n if(this[i] != 0) return i*this.DB+lbit(this[i]);\n if(this.s < 0) return this.t*this.DB;\n return -1;\n }\n\n // return number of 1 bits in x\n function cbit(x) {\n var r = 0;\n while(x != 0) { x &= x-1; ++r; }\n return r;\n }\n\n // (public) return number of set bits\n function bnBitCount() {\n var r = 0, x = this.s&this.DM;\n for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);\n return r;\n }\n\n // (public) true iff nth bit is set\n function bnTestBit(n) {\n var j = Math.floor(n/this.DB);\n if(j >= this.t) return(this.s!=0);\n return((this[j]&(1<<(n%this.DB)))!=0);\n }\n\n // (protected) this op (1<>= this.DB;\n }\n if(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c += a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c<0)?-1:0;\n if(c > 0) r[i++] = c;\n else if(c < -1) r[i++] = this.DV+c;\n r.t = i;\n r.clamp();\n }\n\n // (public) this + a\n function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n // (public) this - a\n function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n // (public) this * a\n function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n // (public) this^2\n function bnSquare() { var r = nbi(); this.squareTo(r); return r; }\n\n // (public) this / a\n function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n // (public) this % a\n function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n // (public) [this/a,this%a]\n function bnDivideAndRemainder(a) {\n var q = nbi(), r = nbi();\n this.divRemTo(a,q,r);\n return new Array(q,r);\n }\n\n // (protected) this *= n, this >= 0, 1 < n < DV\n function bnpDMultiply(n) {\n this[this.t] = this.am(0,n-1,this,0,0,this.t);\n ++this.t;\n this.clamp();\n }\n\n // (protected) this += n << w words, this >= 0\n function bnpDAddOffset(n,w) {\n if(n == 0) return;\n while(this.t <= w) this[this.t++] = 0;\n this[w] += n;\n while(this[w] >= this.DV) {\n this[w] -= this.DV;\n if(++w >= this.t) this[this.t++] = 0;\n ++this[w];\n }\n }\n\n // A \"null\" reducer\n function NullExp() {}\n function nNop(x) { return x; }\n function nMulTo(x,y,r) { x.multiplyTo(y,r); }\n function nSqrTo(x,r) { x.squareTo(r); }\n\n NullExp.prototype.convert = nNop;\n NullExp.prototype.revert = nNop;\n NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.sqrTo = nSqrTo;\n\n // (public) this^e\n function bnPow(e) { return this.exp(e,new NullExp()); }\n\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyLowerTo(a,n,r) {\n var i = Math.min(this.t+a.t,n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while(i > 0) r[--i] = 0;\n var j;\n for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);\n for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);\n r.clamp();\n }\n\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyUpperTo(a,n,r) {\n --n;\n var i = r.t = this.t+a.t-n;\n r.s = 0; // assumes a,this >= 0\n while(--i >= 0) r[i] = 0;\n for(i = Math.max(n-this.t,0); i < a.t; ++i)\n r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);\n r.clamp();\n r.drShiftTo(1,r);\n }\n\n // Barrett modular reduction\n function Barrett(m) {\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2*m.t,this.r2);\n this.mu = this.r2.divide(m);\n this.m = m;\n }\n\n function barrettConvert(x) {\n if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\n else if(x.compareTo(this.m) < 0) return x;\n else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n }\n\n function barrettRevert(x) { return x; }\n\n // x = x mod m (HAC 14.42)\n function barrettReduce(x) {\n x.drShiftTo(this.m.t-1,this.r2);\n if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\n this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\n this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\n while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\n x.subTo(this.r2,x);\n while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = x^2 mod m; x != r\n function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = x*y mod m; x,y != r\n function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.reduce = barrettReduce;\n Barrett.prototype.mulTo = barrettMulTo;\n Barrett.prototype.sqrTo = barrettSqrTo;\n\n // (public) this^e % m (HAC 14.85)\n function bnModPow(e,m) {\n var i = e.bitLength(), k, r = nbv(1), z;\n if(i <= 0) return r;\n else if(i < 18) k = 1;\n else if(i < 48) k = 3;\n else if(i < 144) k = 4;\n else if(i < 768) k = 5;\n else k = 6;\n if(i < 8)\n z = new Classic(m);\n else if(m.isEven())\n z = new Barrett(m);\n else\n z = new Montgomery(m);\n\n // precomputation\n var g = new Array(), n = 3, k1 = k-1, km = (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n }\n\n var j = e.t-1, w, is1 = true, r2 = nbi(), t;\n i = nbits(e[j])-1;\n while(j >= 0) {\n if(i >= k1) w = (e[j]>>(i-k1))&km;\n else {\n w = (e[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) {\t// ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e[j]&(1< 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n }\n while(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n }\n else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n }\n if(g > 0) y.lShiftTo(g,y);\n return y;\n }\n\n // (protected) this % n, n < 2^26\n function bnpModInt(n) {\n if(n <= 0) return 0;\n var d = this.DV%n, r = (this.s<0)?n-1:0;\n if(this.t > 0)\n if(d == 0) r = this[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;\n return r;\n }\n\n // (public) 1/this % m (HAC 14.61)\n function bnModInverse(m) {\n var ac = m.isEven();\n if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\n var u = m.clone(), v = this.clone();\n var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n while(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n }\n else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n }\n else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n }\n else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n }\n if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\n if(d.compareTo(m) >= 0) return d.subtract(m);\n if(d.signum() < 0) d.addTo(m,d); else return d;\n if(d.signum() < 0) return d.add(m); else return d;\n }\n\n var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];\n var lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n // (public) test primality with certainty >= 1-.5^t\n function bnIsProbablePrime(t) {\n var i, x = this.abs();\n if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x[0] == lowprimes[i]) return true;\n return false;\n }\n if(x.isEven()) return false;\n i = 1;\n while(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n }\n return x.millerRabin(t);\n }\n\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n function bnpMillerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if(k <= 0) return false;\n var r = n1.shiftRight(k);\n t = (t+1)>>1;\n if(t > lowprimes.length) t = lowprimes.length;\n var a = nbi();\n for(var i = 0; i < t; ++i) {\n //Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n }\n return true;\n }\n\n // protected\n BigInteger.prototype.chunkSize = bnpChunkSize;\n BigInteger.prototype.toRadix = bnpToRadix;\n BigInteger.prototype.fromRadix = bnpFromRadix;\n BigInteger.prototype.fromNumber = bnpFromNumber;\n BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n BigInteger.prototype.changeBit = bnpChangeBit;\n BigInteger.prototype.addTo = bnpAddTo;\n BigInteger.prototype.dMultiply = bnpDMultiply;\n BigInteger.prototype.dAddOffset = bnpDAddOffset;\n BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n BigInteger.prototype.modInt = bnpModInt;\n BigInteger.prototype.millerRabin = bnpMillerRabin;\n\n // public\n BigInteger.prototype.clone = bnClone;\n BigInteger.prototype.intValue = bnIntValue;\n BigInteger.prototype.byteValue = bnByteValue;\n BigInteger.prototype.shortValue = bnShortValue;\n BigInteger.prototype.signum = bnSigNum;\n BigInteger.prototype.toByteArray = bnToByteArray;\n BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.min = bnMin;\n BigInteger.prototype.max = bnMax;\n BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.or = bnOr;\n BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.not = bnNot;\n BigInteger.prototype.shiftLeft = bnShiftLeft;\n BigInteger.prototype.shiftRight = bnShiftRight;\n BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n BigInteger.prototype.bitCount = bnBitCount;\n BigInteger.prototype.testBit = bnTestBit;\n BigInteger.prototype.setBit = bnSetBit;\n BigInteger.prototype.clearBit = bnClearBit;\n BigInteger.prototype.flipBit = bnFlipBit;\n BigInteger.prototype.add = bnAdd;\n BigInteger.prototype.subtract = bnSubtract;\n BigInteger.prototype.multiply = bnMultiply;\n BigInteger.prototype.divide = bnDivide;\n BigInteger.prototype.remainder = bnRemainder;\n BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\n BigInteger.prototype.modPow = bnModPow;\n BigInteger.prototype.modInverse = bnModInverse;\n BigInteger.prototype.pow = bnPow;\n BigInteger.prototype.gcd = bnGCD;\n BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n // JSBN-specific extension\n BigInteger.prototype.square = bnSquare;\n\n // Expose the Barrett function\n BigInteger.prototype.Barrett = Barrett\n\n // BigInteger interfaces not implemented in jsbn:\n\n // BigInteger(int signum, byte[] magnitude)\n // double doubleValue()\n // float floatValue()\n // int hashCode()\n // long longValue()\n // static BigInteger valueOf(long val)\n\n\t// Random number generator - requires a PRNG backend, e.g. prng4.js\n\n\t// For best results, put code like\n\t// \n\t// in your main HTML document.\n\n\tvar rng_state;\n\tvar rng_pool;\n\tvar rng_pptr;\n\n\t// Mix in a 32-bit integer into the pool\n\tfunction rng_seed_int(x) {\n\t rng_pool[rng_pptr++] ^= x & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 8) & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 16) & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 24) & 255;\n\t if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;\n\t}\n\n\t// Mix in the current time (w/milliseconds) into the pool\n\tfunction rng_seed_time() {\n\t rng_seed_int(new Date().getTime());\n\t}\n\n\t// Initialize the pool with junk if needed.\n\tif(rng_pool == null) {\n\t rng_pool = new Array();\n\t rng_pptr = 0;\n\t var t;\n\t if(typeof window !== \"undefined\" && window.crypto) {\n\t\tif (window.crypto.getRandomValues) {\n\t\t // Use webcrypto if available\n\t\t var ua = new Uint8Array(32);\n\t\t window.crypto.getRandomValues(ua);\n\t\t for(t = 0; t < 32; ++t)\n\t\t\trng_pool[rng_pptr++] = ua[t];\n\t\t}\n\t\telse if(navigator.appName == \"Netscape\" && navigator.appVersion < \"5\") {\n\t\t // Extract entropy (256 bits) from NS4 RNG if available\n\t\t var z = window.crypto.random(32);\n\t\t for(t = 0; t < z.length; ++t)\n\t\t\trng_pool[rng_pptr++] = z.charCodeAt(t) & 255;\n\t\t}\n\t }\n\t while(rng_pptr < rng_psize) { // extract some randomness from Math.random()\n\t\tt = Math.floor(65536 * Math.random());\n\t\trng_pool[rng_pptr++] = t >>> 8;\n\t\trng_pool[rng_pptr++] = t & 255;\n\t }\n\t rng_pptr = 0;\n\t rng_seed_time();\n\t //rng_seed_int(window.screenX);\n\t //rng_seed_int(window.screenY);\n\t}\n\n\tfunction rng_get_byte() {\n\t if(rng_state == null) {\n\t\trng_seed_time();\n\t\trng_state = prng_newstate();\n\t\trng_state.init(rng_pool);\n\t\tfor(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\n\t\t rng_pool[rng_pptr] = 0;\n\t\trng_pptr = 0;\n\t\t//rng_pool = null;\n\t }\n\t // TODO: allow reseeding after first request\n\t return rng_state.next();\n\t}\n\n\tfunction rng_get_bytes(ba) {\n\t var i;\n\t for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();\n\t}\n\n\tfunction SecureRandom() {}\n\n\tSecureRandom.prototype.nextBytes = rng_get_bytes;\n\n\t// prng4.js - uses Arcfour as a PRNG\n\n\tfunction Arcfour() {\n\t this.i = 0;\n\t this.j = 0;\n\t this.S = new Array();\n\t}\n\n\t// Initialize arcfour context from key, an array of ints, each from [0..255]\n\tfunction ARC4init(key) {\n\t var i, j, t;\n\t for(i = 0; i < 256; ++i)\n\t\tthis.S[i] = i;\n\t j = 0;\n\t for(i = 0; i < 256; ++i) {\n\t\tj = (j + this.S[i] + key[i % key.length]) & 255;\n\t\tt = this.S[i];\n\t\tthis.S[i] = this.S[j];\n\t\tthis.S[j] = t;\n\t }\n\t this.i = 0;\n\t this.j = 0;\n\t}\n\n\tfunction ARC4next() {\n\t var t;\n\t this.i = (this.i + 1) & 255;\n\t this.j = (this.j + this.S[this.i]) & 255;\n\t t = this.S[this.i];\n\t this.S[this.i] = this.S[this.j];\n\t this.S[this.j] = t;\n\t return this.S[(t + this.S[this.i]) & 255];\n\t}\n\n\tArcfour.prototype.init = ARC4init;\n\tArcfour.prototype.next = ARC4next;\n\n\t// Plug in your RNG constructor here\n\tfunction prng_newstate() {\n\t return new Arcfour();\n\t}\n\n\t// Pool size must be a multiple of 4 and greater than 32.\n\t// An array of bytes the size of the pool will be passed to init()\n\tvar rng_psize = 256;\n\n BigInteger.SecureRandom = SecureRandom;\n BigInteger.BigInteger = BigInteger;\n if (typeof exports !== 'undefined') {\n exports = module.exports = BigInteger;\n } else {\n this.BigInteger = BigInteger;\n this.SecureRandom = SecureRandom;\n }\n\n}).call(this);\n", "// Basic Javascript Elliptic Curve implementation\n// Ported loosely from BouncyCastle's Java EC code\n// Only Fp curves implemented for now\n\n// Requires jsbn.js and jsbn2.js\nvar BigInteger = require('jsbn').BigInteger\nvar Barrett = BigInteger.prototype.Barrett\n\n// ----------------\n// ECFieldElementFp\n\n// constructor\nfunction ECFieldElementFp(q,x) {\n this.x = x;\n // TODO if(x.compareTo(q) >= 0) error\n this.q = q;\n}\n\nfunction feFpEquals(other) {\n if(other == this) return true;\n return (this.q.equals(other.q) && this.x.equals(other.x));\n}\n\nfunction feFpToBigInteger() {\n return this.x;\n}\n\nfunction feFpNegate() {\n return new ECFieldElementFp(this.q, this.x.negate().mod(this.q));\n}\n\nfunction feFpAdd(b) {\n return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpSubtract(b) {\n return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpMultiply(b) {\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpSquare() {\n return new ECFieldElementFp(this.q, this.x.square().mod(this.q));\n}\n\nfunction feFpDivide(b) {\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q));\n}\n\nECFieldElementFp.prototype.equals = feFpEquals;\nECFieldElementFp.prototype.toBigInteger = feFpToBigInteger;\nECFieldElementFp.prototype.negate = feFpNegate;\nECFieldElementFp.prototype.add = feFpAdd;\nECFieldElementFp.prototype.subtract = feFpSubtract;\nECFieldElementFp.prototype.multiply = feFpMultiply;\nECFieldElementFp.prototype.square = feFpSquare;\nECFieldElementFp.prototype.divide = feFpDivide;\n\n// ----------------\n// ECPointFp\n\n// constructor\nfunction ECPointFp(curve,x,y,z) {\n this.curve = curve;\n this.x = x;\n this.y = y;\n // Projective coordinates: either zinv == null or z * zinv == 1\n // z and zinv are just BigIntegers, not fieldElements\n if(z == null) {\n this.z = BigInteger.ONE;\n }\n else {\n this.z = z;\n }\n this.zinv = null;\n //TODO: compression flag\n}\n\nfunction pointFpGetX() {\n if(this.zinv == null) {\n this.zinv = this.z.modInverse(this.curve.q);\n }\n var r = this.x.toBigInteger().multiply(this.zinv);\n this.curve.reduce(r);\n return this.curve.fromBigInteger(r);\n}\n\nfunction pointFpGetY() {\n if(this.zinv == null) {\n this.zinv = this.z.modInverse(this.curve.q);\n }\n var r = this.y.toBigInteger().multiply(this.zinv);\n this.curve.reduce(r);\n return this.curve.fromBigInteger(r);\n}\n\nfunction pointFpEquals(other) {\n if(other == this) return true;\n if(this.isInfinity()) return other.isInfinity();\n if(other.isInfinity()) return this.isInfinity();\n var u, v;\n // u = Y2 * Z1 - Y1 * Z2\n u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q);\n if(!u.equals(BigInteger.ZERO)) return false;\n // v = X2 * Z1 - X1 * Z2\n v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q);\n return v.equals(BigInteger.ZERO);\n}\n\nfunction pointFpIsInfinity() {\n if((this.x == null) && (this.y == null)) return true;\n return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO);\n}\n\nfunction pointFpNegate() {\n return new ECPointFp(this.curve, this.x, this.y.negate(), this.z);\n}\n\nfunction pointFpAdd(b) {\n if(this.isInfinity()) return b;\n if(b.isInfinity()) return this;\n\n // u = Y2 * Z1 - Y1 * Z2\n var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q);\n // v = X2 * Z1 - X1 * Z2\n var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q);\n\n if(BigInteger.ZERO.equals(v)) {\n if(BigInteger.ZERO.equals(u)) {\n return this.twice(); // this == b, so double\n }\n\treturn this.curve.getInfinity(); // this = -b, so infinity\n }\n\n var THREE = new BigInteger(\"3\");\n var x1 = this.x.toBigInteger();\n var y1 = this.y.toBigInteger();\n var x2 = b.x.toBigInteger();\n var y2 = b.y.toBigInteger();\n\n var v2 = v.square();\n var v3 = v2.multiply(v);\n var x1v2 = x1.multiply(v2);\n var zu2 = u.square().multiply(this.z);\n\n // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)\n var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q);\n // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3\n var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q);\n // z3 = v^3 * z1 * z2\n var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q);\n\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);\n}\n\nfunction pointFpTwice() {\n if(this.isInfinity()) return this;\n if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity();\n\n // TODO: optimized handling of constants\n var THREE = new BigInteger(\"3\");\n var x1 = this.x.toBigInteger();\n var y1 = this.y.toBigInteger();\n\n var y1z1 = y1.multiply(this.z);\n var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q);\n var a = this.curve.a.toBigInteger();\n\n // w = 3 * x1^2 + a * z1^2\n var w = x1.square().multiply(THREE);\n if(!BigInteger.ZERO.equals(a)) {\n w = w.add(this.z.square().multiply(a));\n }\n w = w.mod(this.curve.q);\n //this.curve.reduce(w);\n // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)\n var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q);\n // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3\n var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q);\n // z3 = 8 * (y1 * z1)^3\n var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q);\n\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);\n}\n\n// Simple NAF (Non-Adjacent Form) multiplication algorithm\n// TODO: modularize the multiplication algorithm\nfunction pointFpMultiply(k) {\n if(this.isInfinity()) return this;\n if(k.signum() == 0) return this.curve.getInfinity();\n\n var e = k;\n var h = e.multiply(new BigInteger(\"3\"));\n\n var neg = this.negate();\n var R = this;\n\n var i;\n for(i = h.bitLength() - 2; i > 0; --i) {\n\tR = R.twice();\n\n\tvar hBit = h.testBit(i);\n\tvar eBit = e.testBit(i);\n\n\tif (hBit != eBit) {\n\t R = R.add(hBit ? this : neg);\n\t}\n }\n\n return R;\n}\n\n// Compute this*j + x*k (simultaneous multiplication)\nfunction pointFpMultiplyTwo(j,x,k) {\n var i;\n if(j.bitLength() > k.bitLength())\n i = j.bitLength() - 1;\n else\n i = k.bitLength() - 1;\n\n var R = this.curve.getInfinity();\n var both = this.add(x);\n while(i >= 0) {\n R = R.twice();\n if(j.testBit(i)) {\n if(k.testBit(i)) {\n R = R.add(both);\n }\n else {\n R = R.add(this);\n }\n }\n else {\n if(k.testBit(i)) {\n R = R.add(x);\n }\n }\n --i;\n }\n\n return R;\n}\n\nECPointFp.prototype.getX = pointFpGetX;\nECPointFp.prototype.getY = pointFpGetY;\nECPointFp.prototype.equals = pointFpEquals;\nECPointFp.prototype.isInfinity = pointFpIsInfinity;\nECPointFp.prototype.negate = pointFpNegate;\nECPointFp.prototype.add = pointFpAdd;\nECPointFp.prototype.twice = pointFpTwice;\nECPointFp.prototype.multiply = pointFpMultiply;\nECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo;\n\n// ----------------\n// ECCurveFp\n\n// constructor\nfunction ECCurveFp(q,a,b) {\n this.q = q;\n this.a = this.fromBigInteger(a);\n this.b = this.fromBigInteger(b);\n this.infinity = new ECPointFp(this, null, null);\n this.reducer = new Barrett(this.q);\n}\n\nfunction curveFpGetQ() {\n return this.q;\n}\n\nfunction curveFpGetA() {\n return this.a;\n}\n\nfunction curveFpGetB() {\n return this.b;\n}\n\nfunction curveFpEquals(other) {\n if(other == this) return true;\n return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b));\n}\n\nfunction curveFpGetInfinity() {\n return this.infinity;\n}\n\nfunction curveFpFromBigInteger(x) {\n return new ECFieldElementFp(this.q, x);\n}\n\nfunction curveReduce(x) {\n this.reducer.reduce(x);\n}\n\n// for now, work with hex strings because they're easier in JS\nfunction curveFpDecodePointHex(s) {\n switch(parseInt(s.substr(0,2), 16)) { // first byte\n case 0:\n\treturn this.infinity;\n case 2:\n case 3:\n\t// point compression not supported yet\n\treturn null;\n case 4:\n case 6:\n case 7:\n\tvar len = (s.length - 2) / 2;\n\tvar xHex = s.substr(2, len);\n\tvar yHex = s.substr(len+2, len);\n\n\treturn new ECPointFp(this,\n\t\t\t this.fromBigInteger(new BigInteger(xHex, 16)),\n\t\t\t this.fromBigInteger(new BigInteger(yHex, 16)));\n\n default: // unsupported\n\treturn null;\n }\n}\n\nfunction curveFpEncodePointHex(p) {\n\tif (p.isInfinity()) return \"00\";\n\tvar xHex = p.getX().toBigInteger().toString(16);\n\tvar yHex = p.getY().toBigInteger().toString(16);\n\tvar oLen = this.getQ().toString(16).length;\n\tif ((oLen % 2) != 0) oLen++;\n\twhile (xHex.length < oLen) {\n\t\txHex = \"0\" + xHex;\n\t}\n\twhile (yHex.length < oLen) {\n\t\tyHex = \"0\" + yHex;\n\t}\n\treturn \"04\" + xHex + yHex;\n}\n\nECCurveFp.prototype.getQ = curveFpGetQ;\nECCurveFp.prototype.getA = curveFpGetA;\nECCurveFp.prototype.getB = curveFpGetB;\nECCurveFp.prototype.equals = curveFpEquals;\nECCurveFp.prototype.getInfinity = curveFpGetInfinity;\nECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger;\nECCurveFp.prototype.reduce = curveReduce;\n//ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex;\nECCurveFp.prototype.encodePointHex = curveFpEncodePointHex;\n\n// from: https://github.com/kaielvin/jsbn-ec-point-compression\nECCurveFp.prototype.decodePointHex = function(s)\n{\n\tvar yIsEven;\n switch(parseInt(s.substr(0,2), 16)) { // first byte\n case 0:\n\treturn this.infinity;\n case 2:\n\tyIsEven = false;\n case 3:\n\tif(yIsEven == undefined) yIsEven = true;\n\tvar len = s.length - 2;\n\tvar xHex = s.substr(2, len);\n\tvar x = this.fromBigInteger(new BigInteger(xHex,16));\n\tvar alpha = x.multiply(x.square().add(this.getA())).add(this.getB());\n\tvar beta = alpha.sqrt();\n\n if (beta == null) throw \"Invalid point compression\";\n\n var betaValue = beta.toBigInteger();\n if (betaValue.testBit(0) != yIsEven)\n {\n // Use the other root\n beta = this.fromBigInteger(this.getQ().subtract(betaValue));\n }\n return new ECPointFp(this,x,beta);\n case 4:\n case 6:\n case 7:\n\tvar len = (s.length - 2) / 2;\n\tvar xHex = s.substr(2, len);\n\tvar yHex = s.substr(len+2, len);\n\n\treturn new ECPointFp(this,\n\t\t\t this.fromBigInteger(new BigInteger(xHex, 16)),\n\t\t\t this.fromBigInteger(new BigInteger(yHex, 16)));\n\n default: // unsupported\n\treturn null;\n }\n}\nECCurveFp.prototype.encodeCompressedPointHex = function(p)\n{\n\tif (p.isInfinity()) return \"00\";\n\tvar xHex = p.getX().toBigInteger().toString(16);\n\tvar oLen = this.getQ().toString(16).length;\n\tif ((oLen % 2) != 0) oLen++;\n\twhile (xHex.length < oLen)\n\t\txHex = \"0\" + xHex;\n\tvar yPrefix;\n\tif(p.getY().toBigInteger().isEven()) yPrefix = \"02\";\n\telse yPrefix = \"03\";\n\n\treturn yPrefix + xHex;\n}\n\n\nECFieldElementFp.prototype.getR = function()\n{\n\tif(this.r != undefined) return this.r;\n\n this.r = null;\n var bitLength = this.q.bitLength();\n if (bitLength > 128)\n {\n var firstWord = this.q.shiftRight(bitLength - 64);\n if (firstWord.intValue() == -1)\n {\n this.r = BigInteger.ONE.shiftLeft(bitLength).subtract(this.q);\n }\n }\n return this.r;\n}\nECFieldElementFp.prototype.modMult = function(x1,x2)\n{\n return this.modReduce(x1.multiply(x2));\n}\nECFieldElementFp.prototype.modReduce = function(x)\n{\n if (this.getR() != null)\n {\n var qLen = q.bitLength();\n while (x.bitLength() > (qLen + 1))\n {\n var u = x.shiftRight(qLen);\n var v = x.subtract(u.shiftLeft(qLen));\n if (!this.getR().equals(BigInteger.ONE))\n {\n u = u.multiply(this.getR());\n }\n x = u.add(v); \n }\n while (x.compareTo(q) >= 0)\n {\n x = x.subtract(q);\n }\n }\n else\n {\n x = x.mod(q);\n }\n return x;\n}\nECFieldElementFp.prototype.sqrt = function()\n{\n if (!this.q.testBit(0)) throw \"unsupported\";\n\n // p mod 4 == 3\n if (this.q.testBit(1))\n {\n \tvar z = new ECFieldElementFp(this.q,this.x.modPow(this.q.shiftRight(2).add(BigInteger.ONE),this.q));\n \treturn z.square().equals(this) ? z : null;\n }\n\n // p mod 4 == 1\n var qMinusOne = this.q.subtract(BigInteger.ONE);\n\n var legendreExponent = qMinusOne.shiftRight(1);\n if (!(this.x.modPow(legendreExponent, this.q).equals(BigInteger.ONE)))\n {\n return null;\n }\n\n var u = qMinusOne.shiftRight(2);\n var k = u.shiftLeft(1).add(BigInteger.ONE);\n\n var Q = this.x;\n var fourQ = modDouble(modDouble(Q));\n\n var U, V;\n do\n {\n var P;\n do\n {\n P = new BigInteger(this.q.bitLength(), new SecureRandom());\n }\n while (P.compareTo(this.q) >= 0\n || !(P.multiply(P).subtract(fourQ).modPow(legendreExponent, this.q).equals(qMinusOne)));\n\n var result = this.lucasSequence(P, Q, k);\n U = result[0];\n V = result[1];\n\n if (this.modMult(V, V).equals(fourQ))\n {\n // Integer division by 2, mod q\n if (V.testBit(0))\n {\n V = V.add(q);\n }\n\n V = V.shiftRight(1);\n\n return new ECFieldElementFp(q,V);\n }\n }\n while (U.equals(BigInteger.ONE) || U.equals(qMinusOne));\n\n return null;\n}\nECFieldElementFp.prototype.lucasSequence = function(P,Q,k)\n{\n var n = k.bitLength();\n var s = k.getLowestSetBit();\n\n var Uh = BigInteger.ONE;\n var Vl = BigInteger.TWO;\n var Vh = P;\n var Ql = BigInteger.ONE;\n var Qh = BigInteger.ONE;\n\n for (var j = n - 1; j >= s + 1; --j)\n {\n Ql = this.modMult(Ql, Qh);\n\n if (k.testBit(j))\n {\n Qh = this.modMult(Ql, Q);\n Uh = this.modMult(Uh, Vh);\n Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Vh = this.modReduce(Vh.multiply(Vh).subtract(Qh.shiftLeft(1)));\n }\n else\n {\n Qh = Ql;\n Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql));\n Vh = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1)));\n }\n }\n\n Ql = this.modMult(Ql, Qh);\n Qh = this.modMult(Ql, Q);\n Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql));\n Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Ql = this.modMult(Ql, Qh);\n\n for (var j = 1; j <= s; ++j)\n {\n Uh = this.modMult(Uh, Vl);\n Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1)));\n Ql = this.modMult(Ql, Ql);\n }\n\n return [ Uh, Vl ];\n}\n\nvar exports = {\n ECCurveFp: ECCurveFp,\n ECPointFp: ECPointFp,\n ECFieldElementFp: ECFieldElementFp\n}\n\nmodule.exports = exports\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\n// TODO: Completely remove this in v0.15.\nif (!nacl.util) {\n nacl.util = {};\n nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() {\n throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js');\n };\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return false;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n if (arguments.length !== 2)\n throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?');\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tbufferSplit: bufferSplit,\n\taddRSAMissing: addRSAMissing,\n\tcalculateDSAPublic: calculateDSAPublic,\n\tcalculateED25519Public: calculateED25519Public,\n\tcalculateX25519Public: calculateX25519Public,\n\tmpNormalize: mpNormalize,\n\tmpDenormalize: mpDenormalize,\n\tecNormalize: ecNormalize,\n\tcountZeros: countZeros,\n\tassertCompatible: assertCompatible,\n\tisCompatible: isCompatible,\n\topensslKeyDeriv: opensslKeyDeriv,\n\topensshCipherInfo: opensshCipherInfo,\n\tpublicFromPrivateECDSA: publicFromPrivateECDSA,\n\tzeroPadToLength: zeroPadToLength,\n\twriteBitString: writeBitString,\n\treadBitString: readBitString,\n\tpbkdf2: pbkdf2\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar PrivateKey = require('./private-key');\nvar Key = require('./key');\nvar crypto = require('crypto');\nvar algs = require('./algs');\nvar asn1 = require('asn1');\n\nvar ec = require('ecc-jsbn/lib/ec');\nvar jsbn = require('jsbn').BigInteger;\nvar nacl = require('tweetnacl');\n\nvar MAX_CLASS_DEPTH = 3;\n\nfunction isCompatible(obj, klass, needVer) {\n\tif (obj === null || typeof (obj) !== 'object')\n\t\treturn (false);\n\tif (needVer === undefined)\n\t\tneedVer = klass.prototype._sshpkApiVersion;\n\tif (obj instanceof klass &&\n\t klass.prototype._sshpkApiVersion[0] == needVer[0])\n\t\treturn (true);\n\tvar proto = Object.getPrototypeOf(obj);\n\tvar depth = 0;\n\twhile (proto.constructor.name !== klass.name) {\n\t\tproto = Object.getPrototypeOf(proto);\n\t\tif (!proto || ++depth > MAX_CLASS_DEPTH)\n\t\t\treturn (false);\n\t}\n\tif (proto.constructor.name !== klass.name)\n\t\treturn (false);\n\tvar ver = proto._sshpkApiVersion;\n\tif (ver === undefined)\n\t\tver = klass._oldVersionDetect(obj);\n\tif (ver[0] != needVer[0] || ver[1] < needVer[1])\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction assertCompatible(obj, klass, needVer, name) {\n\tif (name === undefined)\n\t\tname = 'object';\n\tassert.ok(obj, name + ' must not be null');\n\tassert.object(obj, name + ' must be an object');\n\tif (needVer === undefined)\n\t\tneedVer = klass.prototype._sshpkApiVersion;\n\tif (obj instanceof klass &&\n\t klass.prototype._sshpkApiVersion[0] == needVer[0])\n\t\treturn;\n\tvar proto = Object.getPrototypeOf(obj);\n\tvar depth = 0;\n\twhile (proto.constructor.name !== klass.name) {\n\t\tproto = Object.getPrototypeOf(proto);\n\t\tassert.ok(proto && ++depth <= MAX_CLASS_DEPTH,\n\t\t name + ' must be a ' + klass.name + ' instance');\n\t}\n\tassert.strictEqual(proto.constructor.name, klass.name,\n\t name + ' must be a ' + klass.name + ' instance');\n\tvar ver = proto._sshpkApiVersion;\n\tif (ver === undefined)\n\t\tver = klass._oldVersionDetect(obj);\n\tassert.ok(ver[0] == needVer[0] && ver[1] >= needVer[1],\n\t name + ' must be compatible with ' + klass.name + ' klass ' +\n\t 'version ' + needVer[0] + '.' + needVer[1]);\n}\n\nvar CIPHER_LEN = {\n\t'des-ede3-cbc': { key: 24, iv: 8 },\n\t'aes-128-cbc': { key: 16, iv: 16 },\n\t'aes-256-cbc': { key: 32, iv: 16 }\n};\nvar PKCS5_SALT_LEN = 8;\n\nfunction opensslKeyDeriv(cipher, salt, passphrase, count) {\n\tassert.buffer(salt, 'salt');\n\tassert.buffer(passphrase, 'passphrase');\n\tassert.number(count, 'iteration count');\n\n\tvar clen = CIPHER_LEN[cipher];\n\tassert.object(clen, 'supported cipher');\n\n\tsalt = salt.slice(0, PKCS5_SALT_LEN);\n\n\tvar D, D_prev, bufs;\n\tvar material = Buffer.alloc(0);\n\twhile (material.length < clen.key + clen.iv) {\n\t\tbufs = [];\n\t\tif (D_prev)\n\t\t\tbufs.push(D_prev);\n\t\tbufs.push(passphrase);\n\t\tbufs.push(salt);\n\t\tD = Buffer.concat(bufs);\n\t\tfor (var j = 0; j < count; ++j)\n\t\t\tD = crypto.createHash('md5').update(D).digest();\n\t\tmaterial = Buffer.concat([material, D]);\n\t\tD_prev = D;\n\t}\n\n\treturn ({\n\t key: material.slice(0, clen.key),\n\t iv: material.slice(clen.key, clen.key + clen.iv)\n\t});\n}\n\n/* See: RFC2898 */\nfunction pbkdf2(hashAlg, salt, iterations, size, passphrase) {\n\tvar hkey = Buffer.alloc(salt.length + 4);\n\tsalt.copy(hkey);\n\n\tvar gen = 0, ts = [];\n\tvar i = 1;\n\twhile (gen < size) {\n\t\tvar t = T(i++);\n\t\tgen += t.length;\n\t\tts.push(t);\n\t}\n\treturn (Buffer.concat(ts).slice(0, size));\n\n\tfunction T(I) {\n\t\thkey.writeUInt32BE(I, hkey.length - 4);\n\n\t\tvar hmac = crypto.createHmac(hashAlg, passphrase);\n\t\thmac.update(hkey);\n\n\t\tvar Ti = hmac.digest();\n\t\tvar Uc = Ti;\n\t\tvar c = 1;\n\t\twhile (c++ < iterations) {\n\t\t\thmac = crypto.createHmac(hashAlg, passphrase);\n\t\t\thmac.update(Uc);\n\t\t\tUc = hmac.digest();\n\t\t\tfor (var x = 0; x < Ti.length; ++x)\n\t\t\t\tTi[x] ^= Uc[x];\n\t\t}\n\t\treturn (Ti);\n\t}\n}\n\n/* Count leading zero bits on a buffer */\nfunction countZeros(buf) {\n\tvar o = 0, obit = 8;\n\twhile (o < buf.length) {\n\t\tvar mask = (1 << obit);\n\t\tif ((buf[o] & mask) === mask)\n\t\t\tbreak;\n\t\tobit--;\n\t\tif (obit < 0) {\n\t\t\to++;\n\t\t\tobit = 8;\n\t\t}\n\t}\n\treturn (o*8 + (8 - obit) - 1);\n}\n\nfunction bufferSplit(buf, chr) {\n\tassert.buffer(buf);\n\tassert.string(chr);\n\n\tvar parts = [];\n\tvar lastPart = 0;\n\tvar matches = 0;\n\tfor (var i = 0; i < buf.length; ++i) {\n\t\tif (buf[i] === chr.charCodeAt(matches))\n\t\t\t++matches;\n\t\telse if (buf[i] === chr.charCodeAt(0))\n\t\t\tmatches = 1;\n\t\telse\n\t\t\tmatches = 0;\n\n\t\tif (matches >= chr.length) {\n\t\t\tvar newPart = i + 1;\n\t\t\tparts.push(buf.slice(lastPart, newPart - matches));\n\t\t\tlastPart = newPart;\n\t\t\tmatches = 0;\n\t\t}\n\t}\n\tif (lastPart <= buf.length)\n\t\tparts.push(buf.slice(lastPart, buf.length));\n\n\treturn (parts);\n}\n\nfunction ecNormalize(buf, addZero) {\n\tassert.buffer(buf);\n\tif (buf[0] === 0x00 && buf[1] === 0x04) {\n\t\tif (addZero)\n\t\t\treturn (buf);\n\t\treturn (buf.slice(1));\n\t} else if (buf[0] === 0x04) {\n\t\tif (!addZero)\n\t\t\treturn (buf);\n\t} else {\n\t\twhile (buf[0] === 0x00)\n\t\t\tbuf = buf.slice(1);\n\t\tif (buf[0] === 0x02 || buf[0] === 0x03)\n\t\t\tthrow (new Error('Compressed elliptic curve points ' +\n\t\t\t 'are not supported'));\n\t\tif (buf[0] !== 0x04)\n\t\t\tthrow (new Error('Not a valid elliptic curve point'));\n\t\tif (!addZero)\n\t\t\treturn (buf);\n\t}\n\tvar b = Buffer.alloc(buf.length + 1);\n\tb[0] = 0x0;\n\tbuf.copy(b, 1);\n\treturn (b);\n}\n\nfunction readBitString(der, tag) {\n\tif (tag === undefined)\n\t\ttag = asn1.Ber.BitString;\n\tvar buf = der.readString(tag, true);\n\tassert.strictEqual(buf[0], 0x00, 'bit strings with unused bits are ' +\n\t 'not supported (0x' + buf[0].toString(16) + ')');\n\treturn (buf.slice(1));\n}\n\nfunction writeBitString(der, buf, tag) {\n\tif (tag === undefined)\n\t\ttag = asn1.Ber.BitString;\n\tvar b = Buffer.alloc(buf.length + 1);\n\tb[0] = 0x00;\n\tbuf.copy(b, 1);\n\tder.writeBuffer(b, tag);\n}\n\nfunction mpNormalize(buf) {\n\tassert.buffer(buf);\n\twhile (buf.length > 1 && buf[0] === 0x00 && (buf[1] & 0x80) === 0x00)\n\t\tbuf = buf.slice(1);\n\tif ((buf[0] & 0x80) === 0x80) {\n\t\tvar b = Buffer.alloc(buf.length + 1);\n\t\tb[0] = 0x00;\n\t\tbuf.copy(b, 1);\n\t\tbuf = b;\n\t}\n\treturn (buf);\n}\n\nfunction mpDenormalize(buf) {\n\tassert.buffer(buf);\n\twhile (buf.length > 1 && buf[0] === 0x00)\n\t\tbuf = buf.slice(1);\n\treturn (buf);\n}\n\nfunction zeroPadToLength(buf, len) {\n\tassert.buffer(buf);\n\tassert.number(len);\n\twhile (buf.length > len) {\n\t\tassert.equal(buf[0], 0x00);\n\t\tbuf = buf.slice(1);\n\t}\n\twhile (buf.length < len) {\n\t\tvar b = Buffer.alloc(buf.length + 1);\n\t\tb[0] = 0x00;\n\t\tbuf.copy(b, 1);\n\t\tbuf = b;\n\t}\n\treturn (buf);\n}\n\nfunction bigintToMpBuf(bigint) {\n\tvar buf = Buffer.from(bigint.toByteArray());\n\tbuf = mpNormalize(buf);\n\treturn (buf);\n}\n\nfunction calculateDSAPublic(g, p, x) {\n\tassert.buffer(g);\n\tassert.buffer(p);\n\tassert.buffer(x);\n\tg = new jsbn(g);\n\tp = new jsbn(p);\n\tx = new jsbn(x);\n\tvar y = g.modPow(x, p);\n\tvar ybuf = bigintToMpBuf(y);\n\treturn (ybuf);\n}\n\nfunction calculateED25519Public(k) {\n\tassert.buffer(k);\n\n\tvar kp = nacl.sign.keyPair.fromSeed(new Uint8Array(k));\n\treturn (Buffer.from(kp.publicKey));\n}\n\nfunction calculateX25519Public(k) {\n\tassert.buffer(k);\n\n\tvar kp = nacl.box.keyPair.fromSeed(new Uint8Array(k));\n\treturn (Buffer.from(kp.publicKey));\n}\n\nfunction addRSAMissing(key) {\n\tassert.object(key);\n\tassertCompatible(key, PrivateKey, [1, 1]);\n\n\tvar d = new jsbn(key.part.d.data);\n\tvar buf;\n\n\tif (!key.part.dmodp) {\n\t\tvar p = new jsbn(key.part.p.data);\n\t\tvar dmodp = d.mod(p.subtract(1));\n\n\t\tbuf = bigintToMpBuf(dmodp);\n\t\tkey.part.dmodp = {name: 'dmodp', data: buf};\n\t\tkey.parts.push(key.part.dmodp);\n\t}\n\tif (!key.part.dmodq) {\n\t\tvar q = new jsbn(key.part.q.data);\n\t\tvar dmodq = d.mod(q.subtract(1));\n\n\t\tbuf = bigintToMpBuf(dmodq);\n\t\tkey.part.dmodq = {name: 'dmodq', data: buf};\n\t\tkey.parts.push(key.part.dmodq);\n\t}\n}\n\nfunction publicFromPrivateECDSA(curveName, priv) {\n\tassert.string(curveName, 'curveName');\n\tassert.buffer(priv);\n\tvar params = algs.curves[curveName];\n\tvar p = new jsbn(params.p);\n\tvar a = new jsbn(params.a);\n\tvar b = new jsbn(params.b);\n\tvar curve = new ec.ECCurveFp(p, a, b);\n\tvar G = curve.decodePointHex(params.G.toString('hex'));\n\n\tvar d = new jsbn(mpNormalize(priv));\n\tvar pub = G.multiply(d);\n\tpub = Buffer.from(curve.encodePointHex(pub), 'hex');\n\n\tvar parts = [];\n\tparts.push({name: 'curve', data: Buffer.from(curveName)});\n\tparts.push({name: 'Q', data: pub});\n\n\tvar key = new Key({type: 'ecdsa', curve: curve, parts: parts});\n\treturn (key);\n}\n\nfunction opensshCipherInfo(cipher) {\n\tvar inf = {};\n\tswitch (cipher) {\n\tcase '3des-cbc':\n\t\tinf.keySize = 24;\n\t\tinf.blockSize = 8;\n\t\tinf.opensslName = 'des-ede3-cbc';\n\t\tbreak;\n\tcase 'blowfish-cbc':\n\t\tinf.keySize = 16;\n\t\tinf.blockSize = 8;\n\t\tinf.opensslName = 'bf-cbc';\n\t\tbreak;\n\tcase 'aes128-cbc':\n\tcase 'aes128-ctr':\n\tcase 'aes128-gcm@openssh.com':\n\t\tinf.keySize = 16;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-128-' + cipher.slice(7, 10);\n\t\tbreak;\n\tcase 'aes192-cbc':\n\tcase 'aes192-ctr':\n\tcase 'aes192-gcm@openssh.com':\n\t\tinf.keySize = 24;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-192-' + cipher.slice(7, 10);\n\t\tbreak;\n\tcase 'aes256-cbc':\n\tcase 'aes256-ctr':\n\tcase 'aes256-gcm@openssh.com':\n\t\tinf.keySize = 32;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-256-' + cipher.slice(7, 10);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error(\n\t\t 'Unsupported openssl cipher \"' + cipher + '\"'));\n\t}\n\treturn (inf);\n}\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = SSHBuffer;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\n\nfunction SSHBuffer(opts) {\n\tassert.object(opts, 'options');\n\tif (opts.buffer !== undefined)\n\t\tassert.buffer(opts.buffer, 'options.buffer');\n\n\tthis._size = opts.buffer ? opts.buffer.length : 1024;\n\tthis._buffer = opts.buffer || Buffer.alloc(this._size);\n\tthis._offset = 0;\n}\n\nSSHBuffer.prototype.toBuffer = function () {\n\treturn (this._buffer.slice(0, this._offset));\n};\n\nSSHBuffer.prototype.atEnd = function () {\n\treturn (this._offset >= this._buffer.length);\n};\n\nSSHBuffer.prototype.remainder = function () {\n\treturn (this._buffer.slice(this._offset));\n};\n\nSSHBuffer.prototype.skip = function (n) {\n\tthis._offset += n;\n};\n\nSSHBuffer.prototype.expand = function () {\n\tthis._size *= 2;\n\tvar buf = Buffer.alloc(this._size);\n\tthis._buffer.copy(buf, 0);\n\tthis._buffer = buf;\n};\n\nSSHBuffer.prototype.readPart = function () {\n\treturn ({data: this.readBuffer()});\n};\n\nSSHBuffer.prototype.readBuffer = function () {\n\tvar len = this._buffer.readUInt32BE(this._offset);\n\tthis._offset += 4;\n\tassert.ok(this._offset + len <= this._buffer.length,\n\t 'length out of bounds at +0x' + this._offset.toString(16) +\n\t ' (data truncated?)');\n\tvar buf = this._buffer.slice(this._offset, this._offset + len);\n\tthis._offset += len;\n\treturn (buf);\n};\n\nSSHBuffer.prototype.readString = function () {\n\treturn (this.readBuffer().toString());\n};\n\nSSHBuffer.prototype.readCString = function () {\n\tvar offset = this._offset;\n\twhile (offset < this._buffer.length &&\n\t this._buffer[offset] !== 0x00)\n\t\toffset++;\n\tassert.ok(offset < this._buffer.length, 'c string does not terminate');\n\tvar str = this._buffer.slice(this._offset, offset).toString();\n\tthis._offset = offset + 1;\n\treturn (str);\n};\n\nSSHBuffer.prototype.readInt = function () {\n\tvar v = this._buffer.readUInt32BE(this._offset);\n\tthis._offset += 4;\n\treturn (v);\n};\n\nSSHBuffer.prototype.readInt64 = function () {\n\tassert.ok(this._offset + 8 < this._buffer.length,\n\t 'buffer not long enough to read Int64');\n\tvar v = this._buffer.slice(this._offset, this._offset + 8);\n\tthis._offset += 8;\n\treturn (v);\n};\n\nSSHBuffer.prototype.readChar = function () {\n\tvar v = this._buffer[this._offset++];\n\treturn (v);\n};\n\nSSHBuffer.prototype.writeBuffer = function (buf) {\n\twhile (this._offset + 4 + buf.length > this._size)\n\t\tthis.expand();\n\tthis._buffer.writeUInt32BE(buf.length, this._offset);\n\tthis._offset += 4;\n\tbuf.copy(this._buffer, this._offset);\n\tthis._offset += buf.length;\n};\n\nSSHBuffer.prototype.writeString = function (str) {\n\tthis.writeBuffer(Buffer.from(str, 'utf8'));\n};\n\nSSHBuffer.prototype.writeCString = function (str) {\n\twhile (this._offset + 1 + str.length > this._size)\n\t\tthis.expand();\n\tthis._buffer.write(str, this._offset);\n\tthis._offset += str.length;\n\tthis._buffer[this._offset++] = 0;\n};\n\nSSHBuffer.prototype.writeInt = function (v) {\n\twhile (this._offset + 4 > this._size)\n\t\tthis.expand();\n\tthis._buffer.writeUInt32BE(v, this._offset);\n\tthis._offset += 4;\n};\n\nSSHBuffer.prototype.writeInt64 = function (v) {\n\tassert.buffer(v, 'value');\n\tif (v.length > 8) {\n\t\tvar lead = v.slice(0, v.length - 8);\n\t\tfor (var i = 0; i < lead.length; ++i) {\n\t\t\tassert.strictEqual(lead[i], 0,\n\t\t\t 'must fit in 64 bits of precision');\n\t\t}\n\t\tv = v.slice(v.length - 8, v.length);\n\t}\n\twhile (this._offset + 8 > this._size)\n\t\tthis.expand();\n\tv.copy(this._buffer, this._offset);\n\tthis._offset += 8;\n};\n\nSSHBuffer.prototype.writeChar = function (v) {\n\twhile (this._offset + 1 > this._size)\n\t\tthis.expand();\n\tthis._buffer[this._offset++] = v;\n};\n\nSSHBuffer.prototype.writePart = function (p) {\n\tthis.writeBuffer(p.data);\n};\n\nSSHBuffer.prototype.write = function (buf) {\n\twhile (this._offset + buf.length > this._size)\n\t\tthis.expand();\n\tbuf.copy(this._buffer, this._offset);\n\tthis._offset += buf.length;\n};\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = Signature;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar errs = require('./errors');\nvar utils = require('./utils');\nvar asn1 = require('asn1');\nvar SSHBuffer = require('./ssh-buffer');\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar SignatureParseError = errs.SignatureParseError;\n\nfunction Signature(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.parts, 'options.parts');\n\tassert.string(opts.type, 'options.type');\n\n\tvar partLookup = {};\n\tfor (var i = 0; i < opts.parts.length; ++i) {\n\t\tvar part = opts.parts[i];\n\t\tpartLookup[part.name] = part;\n\t}\n\n\tthis.type = opts.type;\n\tthis.hashAlgorithm = opts.hashAlgo;\n\tthis.curve = opts.curve;\n\tthis.parts = opts.parts;\n\tthis.part = partLookup;\n}\n\nSignature.prototype.toBuffer = function (format) {\n\tif (format === undefined)\n\t\tformat = 'asn1';\n\tassert.string(format, 'format');\n\n\tvar buf;\n\tvar stype = 'ssh-' + this.type;\n\n\tswitch (this.type) {\n\tcase 'rsa':\n\t\tswitch (this.hashAlgorithm) {\n\t\tcase 'sha256':\n\t\t\tstype = 'rsa-sha2-256';\n\t\t\tbreak;\n\t\tcase 'sha512':\n\t\t\tstype = 'rsa-sha2-512';\n\t\t\tbreak;\n\t\tcase 'sha1':\n\t\tcase undefined:\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('SSH signature ' +\n\t\t\t 'format does not support hash ' +\n\t\t\t 'algorithm ' + this.hashAlgorithm));\n\t\t}\n\t\tif (format === 'ssh') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString(stype);\n\t\t\tbuf.writePart(this.part.sig);\n\t\t\treturn (buf.toBuffer());\n\t\t} else {\n\t\t\treturn (this.part.sig.data);\n\t\t}\n\t\tbreak;\n\n\tcase 'ed25519':\n\t\tif (format === 'ssh') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString(stype);\n\t\t\tbuf.writePart(this.part.sig);\n\t\t\treturn (buf.toBuffer());\n\t\t} else {\n\t\t\treturn (this.part.sig.data);\n\t\t}\n\t\tbreak;\n\n\tcase 'dsa':\n\tcase 'ecdsa':\n\t\tvar r, s;\n\t\tif (format === 'asn1') {\n\t\t\tvar der = new asn1.BerWriter();\n\t\t\tder.startSequence();\n\t\t\tr = utils.mpNormalize(this.part.r.data);\n\t\t\ts = utils.mpNormalize(this.part.s.data);\n\t\t\tder.writeBuffer(r, asn1.Ber.Integer);\n\t\t\tder.writeBuffer(s, asn1.Ber.Integer);\n\t\t\tder.endSequence();\n\t\t\treturn (der.buffer);\n\t\t} else if (format === 'ssh' && this.type === 'dsa') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString('ssh-dss');\n\t\t\tr = this.part.r.data;\n\t\t\tif (r.length > 20 && r[0] === 0x00)\n\t\t\t\tr = r.slice(1);\n\t\t\ts = this.part.s.data;\n\t\t\tif (s.length > 20 && s[0] === 0x00)\n\t\t\t\ts = s.slice(1);\n\t\t\tif ((this.hashAlgorithm &&\n\t\t\t this.hashAlgorithm !== 'sha1') ||\n\t\t\t r.length + s.length !== 40) {\n\t\t\t\tthrow (new Error('OpenSSH only supports ' +\n\t\t\t\t 'DSA signatures with SHA1 hash'));\n\t\t\t}\n\t\t\tbuf.writeBuffer(Buffer.concat([r, s]));\n\t\t\treturn (buf.toBuffer());\n\t\t} else if (format === 'ssh' && this.type === 'ecdsa') {\n\t\t\tvar inner = new SSHBuffer({});\n\t\t\tr = this.part.r.data;\n\t\t\tinner.writeBuffer(r);\n\t\t\tinner.writePart(this.part.s);\n\n\t\t\tbuf = new SSHBuffer({});\n\t\t\t/* XXX: find a more proper way to do this? */\n\t\t\tvar curve;\n\t\t\tif (r[0] === 0x00)\n\t\t\t\tr = r.slice(1);\n\t\t\tvar sz = r.length * 8;\n\t\t\tif (sz === 256)\n\t\t\t\tcurve = 'nistp256';\n\t\t\telse if (sz === 384)\n\t\t\t\tcurve = 'nistp384';\n\t\t\telse if (sz === 528)\n\t\t\t\tcurve = 'nistp521';\n\t\t\tbuf.writeString('ecdsa-sha2-' + curve);\n\t\t\tbuf.writeBuffer(inner.toBuffer());\n\t\t\treturn (buf.toBuffer());\n\t\t}\n\t\tthrow (new Error('Invalid signature format'));\n\tdefault:\n\t\tthrow (new Error('Invalid signature data'));\n\t}\n};\n\nSignature.prototype.toString = function (format) {\n\tassert.optionalString(format, 'format');\n\treturn (this.toBuffer(format).toString('base64'));\n};\n\nSignature.parse = function (data, type, format) {\n\tif (typeof (data) === 'string')\n\t\tdata = Buffer.from(data, 'base64');\n\tassert.buffer(data, 'data');\n\tassert.string(format, 'format');\n\tassert.string(type, 'type');\n\n\tvar opts = {};\n\topts.type = type.toLowerCase();\n\topts.parts = [];\n\n\ttry {\n\t\tassert.ok(data.length > 0, 'signature must not be empty');\n\t\tswitch (opts.type) {\n\t\tcase 'rsa':\n\t\t\treturn (parseOneNum(data, type, format, opts));\n\t\tcase 'ed25519':\n\t\t\treturn (parseOneNum(data, type, format, opts));\n\n\t\tcase 'dsa':\n\t\tcase 'ecdsa':\n\t\t\tif (format === 'asn1')\n\t\t\t\treturn (parseDSAasn1(data, type, format, opts));\n\t\t\telse if (opts.type === 'dsa')\n\t\t\t\treturn (parseDSA(data, type, format, opts));\n\t\t\telse\n\t\t\t\treturn (parseECDSA(data, type, format, opts));\n\n\t\tdefault:\n\t\t\tthrow (new InvalidAlgorithmError(type));\n\t\t}\n\n\t} catch (e) {\n\t\tif (e instanceof InvalidAlgorithmError)\n\t\t\tthrow (e);\n\t\tthrow (new SignatureParseError(type, format, e));\n\t}\n};\n\nfunction parseOneNum(data, type, format, opts) {\n\tif (format === 'ssh') {\n\t\ttry {\n\t\t\tvar buf = new SSHBuffer({buffer: data});\n\t\t\tvar head = buf.readString();\n\t\t} catch (e) {\n\t\t\t/* fall through */\n\t\t}\n\t\tif (buf !== undefined) {\n\t\t\tvar msg = 'SSH signature does not match expected ' +\n\t\t\t 'type (expected ' + type + ', got ' + head + ')';\n\t\t\tswitch (head) {\n\t\t\tcase 'ssh-rsa':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha1';\n\t\t\t\tbreak;\n\t\t\tcase 'rsa-sha2-256':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha256';\n\t\t\t\tbreak;\n\t\t\tcase 'rsa-sha2-512':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha512';\n\t\t\t\tbreak;\n\t\t\tcase 'ssh-ed25519':\n\t\t\t\tassert.strictEqual(type, 'ed25519', msg);\n\t\t\t\topts.hashAlgo = 'sha512';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow (new Error('Unknown SSH signature ' +\n\t\t\t\t 'type: ' + head));\n\t\t\t}\n\t\t\tvar sig = buf.readPart();\n\t\t\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\t\t\tsig.name = 'sig';\n\t\t\topts.parts.push(sig);\n\t\t\treturn (new Signature(opts));\n\t\t}\n\t}\n\topts.parts.push({name: 'sig', data: data});\n\treturn (new Signature(opts));\n}\n\nfunction parseDSAasn1(data, type, format, opts) {\n\tvar der = new asn1.BerReader(data);\n\tder.readSequence();\n\tvar r = der.readString(asn1.Ber.Integer, true);\n\tvar s = der.readString(asn1.Ber.Integer, true);\n\n\topts.parts.push({name: 'r', data: utils.mpNormalize(r)});\n\topts.parts.push({name: 's', data: utils.mpNormalize(s)});\n\n\treturn (new Signature(opts));\n}\n\nfunction parseDSA(data, type, format, opts) {\n\tif (data.length != 40) {\n\t\tvar buf = new SSHBuffer({buffer: data});\n\t\tvar d = buf.readBuffer();\n\t\tif (d.toString('ascii') === 'ssh-dss')\n\t\t\td = buf.readBuffer();\n\t\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\t\tassert.strictEqual(d.length, 40, 'invalid inner length');\n\t\tdata = d;\n\t}\n\topts.parts.push({name: 'r', data: data.slice(0, 20)});\n\topts.parts.push({name: 's', data: data.slice(20, 40)});\n\treturn (new Signature(opts));\n}\n\nfunction parseECDSA(data, type, format, opts) {\n\tvar buf = new SSHBuffer({buffer: data});\n\n\tvar r, s;\n\tvar inner = buf.readBuffer();\n\tvar stype = inner.toString('ascii');\n\tif (stype.slice(0, 6) === 'ecdsa-') {\n\t\tvar parts = stype.split('-');\n\t\tassert.strictEqual(parts[0], 'ecdsa');\n\t\tassert.strictEqual(parts[1], 'sha2');\n\t\topts.curve = parts[2];\n\t\tswitch (opts.curve) {\n\t\tcase 'nistp256':\n\t\t\topts.hashAlgo = 'sha256';\n\t\t\tbreak;\n\t\tcase 'nistp384':\n\t\t\topts.hashAlgo = 'sha384';\n\t\t\tbreak;\n\t\tcase 'nistp521':\n\t\t\topts.hashAlgo = 'sha512';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('Unsupported ECDSA curve: ' +\n\t\t\t opts.curve));\n\t\t}\n\t\tinner = buf.readBuffer();\n\t\tassert.ok(buf.atEnd(), 'extra trailing bytes on outer');\n\t\tbuf = new SSHBuffer({buffer: inner});\n\t\tr = buf.readPart();\n\t} else {\n\t\tr = {data: inner};\n\t}\n\n\ts = buf.readPart();\n\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\n\tr.name = 'r';\n\ts.name = 's';\n\n\topts.parts.push(r);\n\topts.parts.push(s);\n\treturn (new Signature(opts));\n}\n\nSignature.isSignature = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Signature, ver));\n};\n\n/*\n * API versions for Signature:\n * [1,0] -- initial ver\n * [2,0] -- support for rsa in full ssh format, compat with sshpk-agent\n * hashAlgorithm property\n * [2,1] -- first tagged version\n */\nSignature.prototype._sshpkApiVersion = [2, 1];\n\nSignature._oldVersionDetect = function (obj) {\n\tassert.func(obj.toBuffer);\n\tif (obj.hasOwnProperty('hashAlgorithm'))\n\t\treturn ([2, 0]);\n\treturn ([1, 0]);\n};\n", "// Named EC curves\n\n// Requires ec.js, jsbn.js, and jsbn2.js\nvar BigInteger = require('jsbn').BigInteger\nvar ECCurveFp = require('./ec.js').ECCurveFp\n\n\n// ----------------\n// X9ECParameters\n\n// constructor\nfunction X9ECParameters(curve,g,n,h) {\n this.curve = curve;\n this.g = g;\n this.n = n;\n this.h = h;\n}\n\nfunction x9getCurve() {\n return this.curve;\n}\n\nfunction x9getG() {\n return this.g;\n}\n\nfunction x9getN() {\n return this.n;\n}\n\nfunction x9getH() {\n return this.h;\n}\n\nX9ECParameters.prototype.getCurve = x9getCurve;\nX9ECParameters.prototype.getG = x9getG;\nX9ECParameters.prototype.getN = x9getN;\nX9ECParameters.prototype.getH = x9getH;\n\n// ----------------\n// SECNamedCurves\n\nfunction fromHex(s) { return new BigInteger(s, 16); }\n\nfunction secp128r1() {\n // p = 2^128 - 2^97 - 1\n var p = fromHex(\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"E87579C11079F43DD824993C2CEE5ED3\");\n //byte[] S = Hex.decode(\"000E0D4D696E6768756151750CC03A4473D03679\");\n var n = fromHex(\"FFFFFFFE0000000075A30D1B9038A115\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"161FF7528B899B2D0C28607CA52C5B86\"\n\t\t+ \"CF5AC8395BAFEB13C02DA292DDED7A83\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp160k1() {\n // p = 2^160 - 2^32 - 2^14 - 2^12 - 2^9 - 2^8 - 2^7 - 2^3 - 2^2 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\");\n var a = BigInteger.ZERO;\n var b = fromHex(\"7\");\n //byte[] S = null;\n var n = fromHex(\"0100000000000000000001B8FA16DFAB9ACA16B6B3\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\"\n + \"938CF935318FDCED6BC28286531733C3F03C4FEE\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp160r1() {\n // p = 2^160 - 2^31 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\");\n var b = fromHex(\"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\");\n //byte[] S = Hex.decode(\"1053CDE42C14D696E67687561517533BF3F83345\");\n var n = fromHex(\"0100000000000000000001F4C8F927AED3CA752257\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n\t\t+ \"4A96B5688EF573284664698968C38BB913CBFC82\"\n\t\t+ \"23A628553168947D59DCC912042351377AC5FB32\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp192k1() {\n // p = 2^192 - 2^32 - 2^12 - 2^8 - 2^7 - 2^6 - 2^3 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\");\n var a = BigInteger.ZERO;\n var b = fromHex(\"3\");\n //byte[] S = null;\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\"\n + \"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp192r1() {\n // p = 2^192 - 2^64 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\");\n //byte[] S = Hex.decode(\"3045AE6FC8422F64ED579528D38120EAE12196D5\");\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\"\n + \"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp224r1() {\n // p = 2^224 - 2^96 + 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\");\n var b = fromHex(\"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\");\n //byte[] S = Hex.decode(\"BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5\");\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\"\n + \"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp256r1() {\n // p = 2^224 (2^32 - 1) + 2^192 + 2^96 - 1\n var p = fromHex(\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\");\n //byte[] S = Hex.decode(\"C49D360886E704936A6678E1139D26B7819F7E90\");\n var n = fromHex(\"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\"\n\t\t+ \"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\");\n return new X9ECParameters(curve, G, n, h);\n}\n\n// TODO: make this into a proper hashtable\nfunction getSECCurveByName(name) {\n if(name == \"secp128r1\") return secp128r1();\n if(name == \"secp160k1\") return secp160k1();\n if(name == \"secp160r1\") return secp160r1();\n if(name == \"secp192k1\") return secp192k1();\n if(name == \"secp192r1\") return secp192r1();\n if(name == \"secp224r1\") return secp224r1();\n if(name == \"secp256r1\") return secp256r1();\n return null;\n}\n\nmodule.exports = {\n \"secp128r1\":secp128r1,\n \"secp160k1\":secp160k1,\n \"secp160r1\":secp160r1,\n \"secp192k1\":secp192k1,\n \"secp192r1\":secp192r1,\n \"secp224r1\":secp224r1,\n \"secp256r1\":secp256r1\n}\n", "var crypto = require(\"crypto\");\nvar BigInteger = require(\"jsbn\").BigInteger;\nvar ECPointFp = require(\"./lib/ec.js\").ECPointFp;\nvar Buffer = require(\"safer-buffer\").Buffer;\nexports.ECCurves = require(\"./lib/sec.js\");\n\n// zero prepad\nfunction unstupid(hex,len)\n{\n\treturn (hex.length >= len) ? hex : unstupid(\"0\"+hex,len);\n}\n\nexports.ECKey = function(curve, key, isPublic)\n{\n var priv;\n\tvar c = curve();\n\tvar n = c.getN();\n var bytes = Math.floor(n.bitLength()/8);\n\n if(key)\n {\n if(isPublic)\n {\n var curve = c.getCurve();\n// var x = key.slice(1,bytes+1); // skip the 04 for uncompressed format\n// var y = key.slice(bytes+1);\n// this.P = new ECPointFp(curve,\n// curve.fromBigInteger(new BigInteger(x.toString(\"hex\"), 16)),\n// curve.fromBigInteger(new BigInteger(y.toString(\"hex\"), 16))); \n this.P = curve.decodePointHex(key.toString(\"hex\"));\n }else{\n if(key.length != bytes) return false;\n priv = new BigInteger(key.toString(\"hex\"), 16); \n }\n }else{\n var n1 = n.subtract(BigInteger.ONE);\n var r = new BigInteger(crypto.randomBytes(n.bitLength()));\n priv = r.mod(n1).add(BigInteger.ONE);\n this.P = c.getG().multiply(priv);\n }\n if(this.P)\n {\n// var pubhex = unstupid(this.P.getX().toBigInteger().toString(16),bytes*2)+unstupid(this.P.getY().toBigInteger().toString(16),bytes*2);\n// this.PublicKey = Buffer.from(\"04\"+pubhex,\"hex\");\n this.PublicKey = Buffer.from(c.getCurve().encodeCompressedPointHex(this.P),\"hex\");\n }\n if(priv)\n {\n this.PrivateKey = Buffer.from(unstupid(priv.toString(16),bytes*2),\"hex\");\n this.deriveSharedSecret = function(key)\n {\n if(!key || !key.P) return false;\n var S = key.P.multiply(priv);\n return Buffer.from(unstupid(S.getX().toBigInteger().toString(16),bytes*2),\"hex\");\n } \n }\n}\n\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tDiffieHellman: DiffieHellman,\n\tgenerateECDSA: generateECDSA,\n\tgenerateED25519: generateED25519\n};\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar utils = require('./utils');\nvar nacl = require('tweetnacl');\n\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\n\nvar CRYPTO_HAVE_ECDH = (crypto.createECDH !== undefined);\n\nvar ecdh = require('ecc-jsbn');\nvar ec = require('ecc-jsbn/lib/ec');\nvar jsbn = require('jsbn').BigInteger;\n\nfunction DiffieHellman(key) {\n\tutils.assertCompatible(key, Key, [1, 4], 'key');\n\tthis._isPriv = PrivateKey.isPrivateKey(key, [1, 3]);\n\tthis._algo = key.type;\n\tthis._curve = key.curve;\n\tthis._key = key;\n\tif (key.type === 'dsa') {\n\t\tif (!CRYPTO_HAVE_ECDH) {\n\t\t\tthrow (new Error('Due to bugs in the node 0.10 ' +\n\t\t\t 'crypto API, node 0.12.x or later is required ' +\n\t\t\t 'to use DH'));\n\t\t}\n\t\tthis._dh = crypto.createDiffieHellman(\n\t\t key.part.p.data, undefined,\n\t\t key.part.g.data, undefined);\n\t\tthis._p = key.part.p;\n\t\tthis._g = key.part.g;\n\t\tif (this._isPriv)\n\t\t\tthis._dh.setPrivateKey(key.part.x.data);\n\t\tthis._dh.setPublicKey(key.part.y.data);\n\n\t} else if (key.type === 'ecdsa') {\n\t\tif (!CRYPTO_HAVE_ECDH) {\n\t\t\tthis._ecParams = new X9ECParameters(this._curve);\n\n\t\t\tif (this._isPriv) {\n\t\t\t\tthis._priv = new ECPrivate(\n\t\t\t\t this._ecParams, key.part.d.data);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tvar curve = {\n\t\t\t'nistp256': 'prime256v1',\n\t\t\t'nistp384': 'secp384r1',\n\t\t\t'nistp521': 'secp521r1'\n\t\t}[key.curve];\n\t\tthis._dh = crypto.createECDH(curve);\n\t\tif (typeof (this._dh) !== 'object' ||\n\t\t typeof (this._dh.setPrivateKey) !== 'function') {\n\t\t\tCRYPTO_HAVE_ECDH = false;\n\t\t\tDiffieHellman.call(this, key);\n\t\t\treturn;\n\t\t}\n\t\tif (this._isPriv)\n\t\t\tthis._dh.setPrivateKey(key.part.d.data);\n\t\tthis._dh.setPublicKey(key.part.Q.data);\n\n\t} else if (key.type === 'curve25519') {\n\t\tif (this._isPriv) {\n\t\t\tutils.assertCompatible(key, PrivateKey, [1, 5], 'key');\n\t\t\tthis._priv = key.part.k.data;\n\t\t}\n\n\t} else {\n\t\tthrow (new Error('DH not supported for ' + key.type + ' keys'));\n\t}\n}\n\nDiffieHellman.prototype.getPublicKey = function () {\n\tif (this._isPriv)\n\t\treturn (this._key.toPublic());\n\treturn (this._key);\n};\n\nDiffieHellman.prototype.getPrivateKey = function () {\n\tif (this._isPriv)\n\t\treturn (this._key);\n\telse\n\t\treturn (undefined);\n};\nDiffieHellman.prototype.getKey = DiffieHellman.prototype.getPrivateKey;\n\nDiffieHellman.prototype._keyCheck = function (pk, isPub) {\n\tassert.object(pk, 'key');\n\tif (!isPub)\n\t\tutils.assertCompatible(pk, PrivateKey, [1, 3], 'key');\n\tutils.assertCompatible(pk, Key, [1, 4], 'key');\n\n\tif (pk.type !== this._algo) {\n\t\tthrow (new Error('A ' + pk.type + ' key cannot be used in ' +\n\t\t this._algo + ' Diffie-Hellman'));\n\t}\n\n\tif (pk.curve !== this._curve) {\n\t\tthrow (new Error('A key from the ' + pk.curve + ' curve ' +\n\t\t 'cannot be used with a ' + this._curve +\n\t\t ' Diffie-Hellman'));\n\t}\n\n\tif (pk.type === 'dsa') {\n\t\tassert.deepEqual(pk.part.p, this._p,\n\t\t 'DSA key prime does not match');\n\t\tassert.deepEqual(pk.part.g, this._g,\n\t\t 'DSA key generator does not match');\n\t}\n};\n\nDiffieHellman.prototype.setKey = function (pk) {\n\tthis._keyCheck(pk);\n\n\tif (pk.type === 'dsa') {\n\t\tthis._dh.setPrivateKey(pk.part.x.data);\n\t\tthis._dh.setPublicKey(pk.part.y.data);\n\n\t} else if (pk.type === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\tthis._dh.setPrivateKey(pk.part.d.data);\n\t\t\tthis._dh.setPublicKey(pk.part.Q.data);\n\t\t} else {\n\t\t\tthis._priv = new ECPrivate(\n\t\t\t this._ecParams, pk.part.d.data);\n\t\t}\n\n\t} else if (pk.type === 'curve25519') {\n\t\tvar k = pk.part.k;\n\t\tif (!pk.part.k)\n\t\t\tk = pk.part.r;\n\t\tthis._priv = k.data;\n\t\tif (this._priv[0] === 0x00)\n\t\t\tthis._priv = this._priv.slice(1);\n\t\tthis._priv = this._priv.slice(0, 32);\n\t}\n\tthis._key = pk;\n\tthis._isPriv = true;\n};\nDiffieHellman.prototype.setPrivateKey = DiffieHellman.prototype.setKey;\n\nDiffieHellman.prototype.computeSecret = function (otherpk) {\n\tthis._keyCheck(otherpk, true);\n\tif (!this._isPriv)\n\t\tthrow (new Error('DH exchange has not been initialized with ' +\n\t\t 'a private key yet'));\n\n\tvar pub;\n\tif (this._algo === 'dsa') {\n\t\treturn (this._dh.computeSecret(\n\t\t otherpk.part.y.data));\n\n\t} else if (this._algo === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\treturn (this._dh.computeSecret(\n\t\t\t otherpk.part.Q.data));\n\t\t} else {\n\t\t\tpub = new ECPublic(\n\t\t\t this._ecParams, otherpk.part.Q.data);\n\t\t\treturn (this._priv.deriveSharedSecret(pub));\n\t\t}\n\n\t} else if (this._algo === 'curve25519') {\n\t\tpub = otherpk.part.A.data;\n\t\twhile (pub[0] === 0x00 && pub.length > 32)\n\t\t\tpub = pub.slice(1);\n\t\tvar priv = this._priv;\n\t\tassert.strictEqual(pub.length, 32);\n\t\tassert.strictEqual(priv.length, 32);\n\n\t\tvar secret = nacl.box.before(new Uint8Array(pub),\n\t\t new Uint8Array(priv));\n\n\t\treturn (Buffer.from(secret));\n\t}\n\n\tthrow (new Error('Invalid algorithm: ' + this._algo));\n};\n\nDiffieHellman.prototype.generateKey = function () {\n\tvar parts = [];\n\tvar priv, pub;\n\tif (this._algo === 'dsa') {\n\t\tthis._dh.generateKeys();\n\n\t\tparts.push({name: 'p', data: this._p.data});\n\t\tparts.push({name: 'q', data: this._key.part.q.data});\n\t\tparts.push({name: 'g', data: this._g.data});\n\t\tparts.push({name: 'y', data: this._dh.getPublicKey()});\n\t\tparts.push({name: 'x', data: this._dh.getPrivateKey()});\n\t\tthis._key = new PrivateKey({\n\t\t\ttype: 'dsa',\n\t\t\tparts: parts\n\t\t});\n\t\tthis._isPriv = true;\n\t\treturn (this._key);\n\n\t} else if (this._algo === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\tthis._dh.generateKeys();\n\n\t\t\tparts.push({name: 'curve',\n\t\t\t data: Buffer.from(this._curve)});\n\t\t\tparts.push({name: 'Q', data: this._dh.getPublicKey()});\n\t\t\tparts.push({name: 'd', data: this._dh.getPrivateKey()});\n\t\t\tthis._key = new PrivateKey({\n\t\t\t\ttype: 'ecdsa',\n\t\t\t\tcurve: this._curve,\n\t\t\t\tparts: parts\n\t\t\t});\n\t\t\tthis._isPriv = true;\n\t\t\treturn (this._key);\n\n\t\t} else {\n\t\t\tvar n = this._ecParams.getN();\n\t\t\tvar r = new jsbn(crypto.randomBytes(n.bitLength()));\n\t\t\tvar n1 = n.subtract(jsbn.ONE);\n\t\t\tpriv = r.mod(n1).add(jsbn.ONE);\n\t\t\tpub = this._ecParams.getG().multiply(priv);\n\n\t\t\tpriv = Buffer.from(priv.toByteArray());\n\t\t\tpub = Buffer.from(this._ecParams.getCurve().\n\t\t\t encodePointHex(pub), 'hex');\n\n\t\t\tthis._priv = new ECPrivate(this._ecParams, priv);\n\n\t\t\tparts.push({name: 'curve',\n\t\t\t data: Buffer.from(this._curve)});\n\t\t\tparts.push({name: 'Q', data: pub});\n\t\t\tparts.push({name: 'd', data: priv});\n\n\t\t\tthis._key = new PrivateKey({\n\t\t\t\ttype: 'ecdsa',\n\t\t\t\tcurve: this._curve,\n\t\t\t\tparts: parts\n\t\t\t});\n\t\t\tthis._isPriv = true;\n\t\t\treturn (this._key);\n\t\t}\n\n\t} else if (this._algo === 'curve25519') {\n\t\tvar pair = nacl.box.keyPair();\n\t\tpriv = Buffer.from(pair.secretKey);\n\t\tpub = Buffer.from(pair.publicKey);\n\t\tpriv = Buffer.concat([priv, pub]);\n\t\tassert.strictEqual(priv.length, 64);\n\t\tassert.strictEqual(pub.length, 32);\n\n\t\tparts.push({name: 'A', data: pub});\n\t\tparts.push({name: 'k', data: priv});\n\t\tthis._key = new PrivateKey({\n\t\t\ttype: 'curve25519',\n\t\t\tparts: parts\n\t\t});\n\t\tthis._isPriv = true;\n\t\treturn (this._key);\n\t}\n\n\tthrow (new Error('Invalid algorithm: ' + this._algo));\n};\nDiffieHellman.prototype.generateKeys = DiffieHellman.prototype.generateKey;\n\n/* These are helpers for using ecc-jsbn (for node 0.10 compatibility). */\n\nfunction X9ECParameters(name) {\n\tvar params = algs.curves[name];\n\tassert.object(params);\n\n\tvar p = new jsbn(params.p);\n\tvar a = new jsbn(params.a);\n\tvar b = new jsbn(params.b);\n\tvar n = new jsbn(params.n);\n\tvar h = jsbn.ONE;\n\tvar curve = new ec.ECCurveFp(p, a, b);\n\tvar G = curve.decodePointHex(params.G.toString('hex'));\n\n\tthis.curve = curve;\n\tthis.g = G;\n\tthis.n = n;\n\tthis.h = h;\n}\nX9ECParameters.prototype.getCurve = function () { return (this.curve); };\nX9ECParameters.prototype.getG = function () { return (this.g); };\nX9ECParameters.prototype.getN = function () { return (this.n); };\nX9ECParameters.prototype.getH = function () { return (this.h); };\n\nfunction ECPublic(params, buffer) {\n\tthis._params = params;\n\tif (buffer[0] === 0x00)\n\t\tbuffer = buffer.slice(1);\n\tthis._pub = params.getCurve().decodePointHex(buffer.toString('hex'));\n}\n\nfunction ECPrivate(params, buffer) {\n\tthis._params = params;\n\tthis._priv = new jsbn(utils.mpNormalize(buffer));\n}\nECPrivate.prototype.deriveSharedSecret = function (pubKey) {\n\tassert.ok(pubKey instanceof ECPublic);\n\tvar S = pubKey._pub.multiply(this._priv);\n\treturn (Buffer.from(S.getX().toBigInteger().toByteArray()));\n};\n\nfunction generateED25519() {\n\tvar pair = nacl.sign.keyPair();\n\tvar priv = Buffer.from(pair.secretKey);\n\tvar pub = Buffer.from(pair.publicKey);\n\tassert.strictEqual(priv.length, 64);\n\tassert.strictEqual(pub.length, 32);\n\n\tvar parts = [];\n\tparts.push({name: 'A', data: pub});\n\tparts.push({name: 'k', data: priv.slice(0, 32)});\n\tvar key = new PrivateKey({\n\t\ttype: 'ed25519',\n\t\tparts: parts\n\t});\n\treturn (key);\n}\n\n/* Generates a new ECDSA private key on a given curve. */\nfunction generateECDSA(curve) {\n\tvar parts = [];\n\tvar key;\n\n\tif (CRYPTO_HAVE_ECDH) {\n\t\t/*\n\t\t * Node crypto doesn't expose key generation directly, but the\n\t\t * ECDH instances can generate keys. It turns out this just\n\t\t * calls into the OpenSSL generic key generator, and we can\n\t\t * read its output happily without doing an actual DH. So we\n\t\t * use that here.\n\t\t */\n\t\tvar osCurve = {\n\t\t\t'nistp256': 'prime256v1',\n\t\t\t'nistp384': 'secp384r1',\n\t\t\t'nistp521': 'secp521r1'\n\t\t}[curve];\n\n\t\tvar dh = crypto.createECDH(osCurve);\n\t\tdh.generateKeys();\n\n\t\tparts.push({name: 'curve',\n\t\t data: Buffer.from(curve)});\n\t\tparts.push({name: 'Q', data: dh.getPublicKey()});\n\t\tparts.push({name: 'd', data: dh.getPrivateKey()});\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tparts: parts\n\t\t});\n\t\treturn (key);\n\t} else {\n\n\t\tvar ecParams = new X9ECParameters(curve);\n\n\t\t/* This algorithm taken from FIPS PUB 186-4 (section B.4.1) */\n\t\tvar n = ecParams.getN();\n\t\t/*\n\t\t * The crypto.randomBytes() function can only give us whole\n\t\t * bytes, so taking a nod from X9.62, we round up.\n\t\t */\n\t\tvar cByteLen = Math.ceil((n.bitLength() + 64) / 8);\n\t\tvar c = new jsbn(crypto.randomBytes(cByteLen));\n\n\t\tvar n1 = n.subtract(jsbn.ONE);\n\t\tvar priv = c.mod(n1).add(jsbn.ONE);\n\t\tvar pub = ecParams.getG().multiply(priv);\n\n\t\tpriv = Buffer.from(priv.toByteArray());\n\t\tpub = Buffer.from(ecParams.getCurve().\n\t\t encodePointHex(pub), 'hex');\n\n\t\tparts.push({name: 'curve', data: Buffer.from(curve)});\n\t\tparts.push({name: 'Q', data: pub});\n\t\tparts.push({name: 'd', data: priv});\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tparts: parts\n\t\t});\n\t\treturn (key);\n\t}\n}\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tVerifier: Verifier,\n\tSigner: Signer\n};\n\nvar nacl = require('tweetnacl');\nvar stream = require('stream');\nvar util = require('util');\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar Signature = require('./signature');\n\nfunction Verifier(key, hashAlgo) {\n\tif (hashAlgo.toLowerCase() !== 'sha512')\n\t\tthrow (new Error('ED25519 only supports the use of ' +\n\t\t 'SHA-512 hashes'));\n\n\tthis.key = key;\n\tthis.chunks = [];\n\n\tstream.Writable.call(this, {});\n}\nutil.inherits(Verifier, stream.Writable);\n\nVerifier.prototype._write = function (chunk, enc, cb) {\n\tthis.chunks.push(chunk);\n\tcb();\n};\n\nVerifier.prototype.update = function (chunk) {\n\tif (typeof (chunk) === 'string')\n\t\tchunk = Buffer.from(chunk, 'binary');\n\tthis.chunks.push(chunk);\n};\n\nVerifier.prototype.verify = function (signature, fmt) {\n\tvar sig;\n\tif (Signature.isSignature(signature, [2, 0])) {\n\t\tif (signature.type !== 'ed25519')\n\t\t\treturn (false);\n\t\tsig = signature.toBuffer('raw');\n\n\t} else if (typeof (signature) === 'string') {\n\t\tsig = Buffer.from(signature, 'base64');\n\n\t} else if (Signature.isSignature(signature, [1, 0])) {\n\t\tthrow (new Error('signature was created by too old ' +\n\t\t 'a version of sshpk and cannot be verified'));\n\t}\n\n\tassert.buffer(sig);\n\treturn (nacl.sign.detached.verify(\n\t new Uint8Array(Buffer.concat(this.chunks)),\n\t new Uint8Array(sig),\n\t new Uint8Array(this.key.part.A.data)));\n};\n\nfunction Signer(key, hashAlgo) {\n\tif (hashAlgo.toLowerCase() !== 'sha512')\n\t\tthrow (new Error('ED25519 only supports the use of ' +\n\t\t 'SHA-512 hashes'));\n\n\tthis.key = key;\n\tthis.chunks = [];\n\n\tstream.Writable.call(this, {});\n}\nutil.inherits(Signer, stream.Writable);\n\nSigner.prototype._write = function (chunk, enc, cb) {\n\tthis.chunks.push(chunk);\n\tcb();\n};\n\nSigner.prototype.update = function (chunk) {\n\tif (typeof (chunk) === 'string')\n\t\tchunk = Buffer.from(chunk, 'binary');\n\tthis.chunks.push(chunk);\n};\n\nSigner.prototype.sign = function () {\n\tvar sig = nacl.sign.detached(\n\t new Uint8Array(Buffer.concat(this.chunks)),\n\t new Uint8Array(Buffer.concat([\n\t\tthis.key.part.k.data, this.key.part.A.data])));\n\tvar sigBuf = Buffer.from(sig);\n\tvar sigObj = Signature.parse(sigBuf, 'ed25519', 'raw');\n\tsigObj.hashAlgorithm = 'sha512';\n\treturn (sigObj);\n};\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadPkcs8: readPkcs8,\n\twrite: write,\n\twritePkcs8: writePkcs8,\n\tpkcs8ToBuffer: pkcs8ToBuffer,\n\n\treadECDSACurve: readECDSACurve,\n\twriteECDSACurve: writeECDSACurve\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options, 'pkcs8'));\n}\n\nfunction write(key, options) {\n\treturn (pem.write(key, options, 'pkcs8'));\n}\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction readPkcs8(alg, type, der) {\n\t/* Private keys in pkcs#8 format have a weird extra int */\n\tif (der.peek() === asn1.Ber.Integer) {\n\t\tassert.strictEqual(type, 'private',\n\t\t 'unexpected Integer at start of public key');\n\t\tder.readString(asn1.Ber.Integer, true);\n\t}\n\n\tder.readSequence();\n\tvar next = der.offset + der.length;\n\n\tvar oid = der.readOID();\n\tswitch (oid) {\n\tcase '1.2.840.113549.1.1.1':\n\t\tder._offset = next;\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8RSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8RSAPrivate(der));\n\tcase '1.2.840.10040.4.1':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8DSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8DSAPrivate(der));\n\tcase '1.2.840.10045.2.1':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8ECDSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8ECDSAPrivate(der));\n\tcase '1.3.101.112':\n\t\tif (type === 'public') {\n\t\t\treturn (readPkcs8EdDSAPublic(der));\n\t\t} else {\n\t\t\treturn (readPkcs8EdDSAPrivate(der));\n\t\t}\n\tcase '1.3.101.110':\n\t\tif (type === 'public') {\n\t\t\treturn (readPkcs8X25519Public(der));\n\t\t} else {\n\t\t\treturn (readPkcs8X25519Private(der));\n\t\t}\n\tdefault:\n\t\tthrow (new Error('Unknown key type OID ' + oid));\n\t}\n}\n\nfunction readPkcs8RSAPublic(der) {\n\t// bit string sequence\n\tder.readSequence(asn1.Ber.BitString);\n\tder.readByte();\n\tder.readSequence();\n\n\t// modulus\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'exponent');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tsource: der.originalInput,\n\t\tparts: [\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'n', data: n }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8RSAPrivate(der) {\n\tder.readSequence(asn1.Ber.OctetString);\n\tder.readSequence();\n\n\tvar ver = readMPInt(der, 'version');\n\tassert.equal(ver[0], 0x0, 'unknown RSA private key version');\n\n\t// modulus then public exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'public exponent');\n\tvar d = readMPInt(der, 'private exponent');\n\tvar p = readMPInt(der, 'prime1');\n\tvar q = readMPInt(der, 'prime2');\n\tvar dmodp = readMPInt(der, 'exponent1');\n\tvar dmodq = readMPInt(der, 'exponent2');\n\tvar iqmp = readMPInt(der, 'iqmp');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'n', data: n },\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'd', data: d },\n\t\t\t{ name: 'iqmp', data: iqmp },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'dmodp', data: dmodp },\n\t\t\t{ name: 'dmodq', data: dmodq }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8DSAPublic(der) {\n\tder.readSequence();\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\t// bit string sequence\n\tder.readSequence(asn1.Ber.BitString);\n\tder.readByte();\n\n\tvar y = readMPInt(der, 'y');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8DSAPrivate(der) {\n\tder.readSequence();\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar x = readMPInt(der, 'x');\n\n\t/* The pkcs#8 format does not include the public key */\n\tvar y = utils.calculateDSAPublic(g, p, x);\n\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'x', data: x }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readECDSACurve(der) {\n\tvar curveName, curveNames;\n\tvar j, c, cd;\n\n\tif (der.peek() === asn1.Ber.OID) {\n\t\tvar oid = der.readOID();\n\n\t\tcurveNames = Object.keys(algs.curves);\n\t\tfor (j = 0; j < curveNames.length; ++j) {\n\t\t\tc = curveNames[j];\n\t\t\tcd = algs.curves[c];\n\t\t\tif (cd.pkcs8oid === oid) {\n\t\t\t\tcurveName = c;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// ECParameters sequence\n\t\tder.readSequence();\n\t\tvar version = der.readString(asn1.Ber.Integer, true);\n\t\tassert.strictEqual(version[0], 1, 'ECDSA key not version 1');\n\n\t\tvar curve = {};\n\n\t\t// FieldID sequence\n\t\tder.readSequence();\n\t\tvar fieldTypeOid = der.readOID();\n\t\tassert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1',\n\t\t 'ECDSA key is not from a prime-field');\n\t\tvar p = curve.p = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\t/*\n\t\t * p always starts with a 1 bit, so count the zeros to get its\n\t\t * real size.\n\t\t */\n\t\tcurve.size = p.length * 8 - utils.countZeros(p);\n\n\t\t// Curve sequence\n\t\tder.readSequence();\n\t\tcurve.a = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.OctetString, true));\n\t\tcurve.b = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.OctetString, true));\n\t\tif (der.peek() === asn1.Ber.BitString)\n\t\t\tcurve.s = der.readString(asn1.Ber.BitString, true);\n\n\t\t// Combined Gx and Gy\n\t\tcurve.G = der.readString(asn1.Ber.OctetString, true);\n\t\tassert.strictEqual(curve.G[0], 0x4,\n\t\t 'uncompressed G is required');\n\n\t\tcurve.n = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\tcurve.h = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\tassert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' +\n\t\t 'required');\n\n\t\tcurveNames = Object.keys(algs.curves);\n\t\tvar ks = Object.keys(curve);\n\t\tfor (j = 0; j < curveNames.length; ++j) {\n\t\t\tc = curveNames[j];\n\t\t\tcd = algs.curves[c];\n\t\t\tvar equal = true;\n\t\t\tfor (var i = 0; i < ks.length; ++i) {\n\t\t\t\tvar k = ks[i];\n\t\t\t\tif (cd[k] === undefined)\n\t\t\t\t\tcontinue;\n\t\t\t\tif (typeof (cd[k]) === 'object' &&\n\t\t\t\t cd[k].equals !== undefined) {\n\t\t\t\t\tif (!cd[k].equals(curve[k])) {\n\t\t\t\t\t\tequal = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else if (Buffer.isBuffer(cd[k])) {\n\t\t\t\t\tif (cd[k].toString('binary')\n\t\t\t\t\t !== curve[k].toString('binary')) {\n\t\t\t\t\t\tequal = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (cd[k] !== curve[k]) {\n\t\t\t\t\t\tequal = false;\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 (equal) {\n\t\t\t\tcurveName = c;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn (curveName);\n}\n\nfunction readPkcs8ECDSAPrivate(der) {\n\tvar curveName = readECDSACurve(der);\n\tassert.string(curveName, 'a known elliptic curve');\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tder.readSequence();\n\n\tvar version = readMPInt(der, 'version');\n\tassert.equal(version[0], 1, 'unknown version of ECDSA key');\n\n\tvar d = der.readString(asn1.Ber.OctetString, true);\n\tvar Q;\n\n\tif (der.peek() == 0xa0) {\n\t\tder.readSequence(0xa0);\n\t\tder._offset += der.length;\n\t}\n\tif (der.peek() == 0xa1) {\n\t\tder.readSequence(0xa1);\n\t\tQ = der.readString(asn1.Ber.BitString, true);\n\t\tQ = utils.ecNormalize(Q);\n\t}\n\n\tif (Q === undefined) {\n\t\tvar pub = utils.publicFromPrivateECDSA(curveName, d);\n\t\tQ = pub.part.Q.data;\n\t}\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curveName) },\n\t\t\t{ name: 'Q', data: Q },\n\t\t\t{ name: 'd', data: d }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8ECDSAPublic(der) {\n\tvar curveName = readECDSACurve(der);\n\tassert.string(curveName, 'a known elliptic curve');\n\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curveName) },\n\t\t\t{ name: 'Q', data: Q }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8EdDSAPublic(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8X25519Public(der) {\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'curve25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8EdDSAPrivate(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\tk = utils.zeroPadToLength(k, 32);\n\n\tvar A, tag;\n\twhile ((tag = der.peek()) !== null) {\n\t\tif (tag === (asn1.Ber.Context | 1)) {\n\t\t\tA = utils.readBitString(der, tag);\n\t\t} else {\n\t\t\tder.readSequence(tag);\n\t\t\tder._offset += der.length;\n\t\t}\n\t}\n\tif (A === undefined)\n\t\tA = utils.calculateED25519Public(k);\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: utils.zeroPadToLength(k, 32) }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8X25519Private(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\tk = utils.zeroPadToLength(k, 32);\n\n\tvar A = utils.calculateX25519Public(k);\n\n\tvar key = {\n\t\ttype: 'curve25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: utils.zeroPadToLength(k, 32) }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction pkcs8ToBuffer(key) {\n\tvar der = new asn1.BerWriter();\n\twritePkcs8(der, key);\n\treturn (der.buffer);\n}\n\nfunction writePkcs8(der, key) {\n\tder.startSequence();\n\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tvar version = 0;\n\t\tif (key.type === 'ed25519')\n\t\t\tversion = 1;\n\t\tvar vbuf = Buffer.from([version]);\n\t\tder.writeBuffer(vbuf, asn1.Ber.Integer);\n\t}\n\n\tder.startSequence();\n\tswitch (key.type) {\n\tcase 'rsa':\n\t\tder.writeOID('1.2.840.113549.1.1.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8RSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8RSAPublic(key, der);\n\t\tbreak;\n\tcase 'dsa':\n\t\tder.writeOID('1.2.840.10040.4.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8DSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8DSAPublic(key, der);\n\t\tbreak;\n\tcase 'ecdsa':\n\t\tder.writeOID('1.2.840.10045.2.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8ECDSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8ECDSAPublic(key, der);\n\t\tbreak;\n\tcase 'ed25519':\n\t\tder.writeOID('1.3.101.112');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8EdDSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8EdDSAPublic(key, der);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unsupported key type: ' + key.type));\n\t}\n\n\tder.endSequence();\n}\n\nfunction writePkcs8RSAPrivate(key, der) {\n\tder.writeNull();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.startSequence();\n\n\tvar version = Buffer.from([0]);\n\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.d.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tif (!key.part.dmodp || !key.part.dmodq)\n\t\tutils.addRSAMissing(key);\n\tder.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer);\n\n\tder.endSequence();\n\tder.endSequence();\n}\n\nfunction writePkcs8RSAPublic(key, der) {\n\tder.writeNull();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.BitString);\n\tder.writeByte(0x00);\n\n\tder.startSequence();\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.endSequence();\n\n\tder.endSequence();\n}\n\nfunction writePkcs8DSAPrivate(key, der) {\n\tder.startSequence();\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.endSequence();\n\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.writeBuffer(key.part.x.data, asn1.Ber.Integer);\n\tder.endSequence();\n}\n\nfunction writePkcs8DSAPublic(key, der) {\n\tder.startSequence();\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.endSequence();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.BitString);\n\tder.writeByte(0x00);\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.endSequence();\n}\n\nfunction writeECDSACurve(key, der) {\n\tvar curve = algs.curves[key.curve];\n\tif (curve.pkcs8oid) {\n\t\t/* This one has a name in pkcs#8, so just write the oid */\n\t\tder.writeOID(curve.pkcs8oid);\n\n\t} else {\n\t\t// ECParameters sequence\n\t\tder.startSequence();\n\n\t\tvar version = Buffer.from([1]);\n\t\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\t\t// FieldID sequence\n\t\tder.startSequence();\n\t\tder.writeOID('1.2.840.10045.1.1'); // prime-field\n\t\tder.writeBuffer(curve.p, asn1.Ber.Integer);\n\t\tder.endSequence();\n\n\t\t// Curve sequence\n\t\tder.startSequence();\n\t\tvar a = curve.p;\n\t\tif (a[0] === 0x0)\n\t\t\ta = a.slice(1);\n\t\tder.writeBuffer(a, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.b, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.s, asn1.Ber.BitString);\n\t\tder.endSequence();\n\n\t\tder.writeBuffer(curve.G, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.n, asn1.Ber.Integer);\n\t\tvar h = curve.h;\n\t\tif (!h) {\n\t\t\th = Buffer.from([1]);\n\t\t}\n\t\tder.writeBuffer(h, asn1.Ber.Integer);\n\n\t\t// ECParameters\n\t\tder.endSequence();\n\t}\n}\n\nfunction writePkcs8ECDSAPublic(key, der) {\n\twriteECDSACurve(key, der);\n\tder.endSequence();\n\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n}\n\nfunction writePkcs8ECDSAPrivate(key, der) {\n\twriteECDSACurve(key, der);\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.startSequence();\n\n\tvar version = Buffer.from([1]);\n\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.d.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa1);\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n\tder.endSequence();\n\n\tder.endSequence();\n\tder.endSequence();\n}\n\nfunction writePkcs8EdDSAPublic(key, der) {\n\tder.endSequence();\n\n\tutils.writeBitString(der, key.part.A.data);\n}\n\nfunction writePkcs8EdDSAPrivate(key, der) {\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tvar k = utils.mpNormalize(key.part.k.data);\n\t/* RFCs call for storing exactly 32 bytes, so strip any leading zeros */\n\twhile (k.length > 32 && k[0] === 0x00)\n\t\tk = k.slice(1);\n\tder.writeBuffer(k, asn1.Ber.OctetString);\n\tder.endSequence();\n\n\tutils.writeBitString(der, key.part.A.data, asn1.Ber.Context | 1);\n}\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadPkcs1: readPkcs1,\n\twrite: write,\n\twritePkcs1: writePkcs1\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\n\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\n\nvar pkcs8 = require('./pkcs8');\nvar readECDSACurve = pkcs8.readECDSACurve;\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options, 'pkcs1'));\n}\n\nfunction write(key, options) {\n\treturn (pem.write(key, options, 'pkcs1'));\n}\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction readPkcs1(alg, type, der) {\n\tswitch (alg) {\n\tcase 'RSA':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs1RSAPublic(der));\n\t\telse if (type === 'private')\n\t\t\treturn (readPkcs1RSAPrivate(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'DSA':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs1DSAPublic(der));\n\t\telse if (type === 'private')\n\t\t\treturn (readPkcs1DSAPrivate(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'EC':\n\tcase 'ECDSA':\n\t\tif (type === 'private')\n\t\t\treturn (readPkcs1ECDSAPrivate(der));\n\t\telse if (type === 'public')\n\t\t\treturn (readPkcs1ECDSAPublic(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'EDDSA':\n\tcase 'EdDSA':\n\t\tif (type === 'private')\n\t\t\treturn (readPkcs1EdDSAPrivate(der));\n\t\tthrow (new Error(type + ' keys not supported with EdDSA'));\n\tdefault:\n\t\tthrow (new Error('Unknown key algo: ' + alg));\n\t}\n}\n\nfunction readPkcs1RSAPublic(der) {\n\t// modulus and exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'exponent');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'n', data: n }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1RSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version[0], 0);\n\n\t// modulus then public exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'public exponent');\n\tvar d = readMPInt(der, 'private exponent');\n\tvar p = readMPInt(der, 'prime1');\n\tvar q = readMPInt(der, 'prime2');\n\tvar dmodp = readMPInt(der, 'exponent1');\n\tvar dmodq = readMPInt(der, 'exponent2');\n\tvar iqmp = readMPInt(der, 'iqmp');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'n', data: n },\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'd', data: d },\n\t\t\t{ name: 'iqmp', data: iqmp },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'dmodp', data: dmodp },\n\t\t\t{ name: 'dmodq', data: dmodq }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1DSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 0);\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\tvar y = readMPInt(der, 'y');\n\tvar x = readMPInt(der, 'x');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'x', data: x }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1EdDSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 1);\n\n\t// private key\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\n\tder.readSequence(0xa0);\n\tvar oid = der.readOID();\n\tassert.strictEqual(oid, '1.3.101.112', 'the ed25519 curve identifier');\n\n\tder.readSequence(0xa1);\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: k }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1DSAPublic(der) {\n\tvar y = readMPInt(der, 'y');\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1ECDSAPublic(der) {\n\tder.readSequence();\n\n\tvar oid = der.readOID();\n\tassert.strictEqual(oid, '1.2.840.10045.2.1', 'must be ecPublicKey');\n\n\tvar curveOid = der.readOID();\n\n\tvar curve;\n\tvar curves = Object.keys(algs.curves);\n\tfor (var j = 0; j < curves.length; ++j) {\n\t\tvar c = curves[j];\n\t\tvar cd = algs.curves[c];\n\t\tif (cd.pkcs8oid === curveOid) {\n\t\t\tcurve = c;\n\t\t\tbreak;\n\t\t}\n\t}\n\tassert.string(curve, 'a known ECDSA named curve');\n\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curve) },\n\t\t\t{ name: 'Q', data: Q }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1ECDSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 1);\n\n\t// private key\n\tvar d = der.readString(asn1.Ber.OctetString, true);\n\n\tder.readSequence(0xa0);\n\tvar curve = readECDSACurve(der);\n\tassert.string(curve, 'a known elliptic curve');\n\n\tder.readSequence(0xa1);\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curve) },\n\t\t\t{ name: 'Q', data: Q },\n\t\t\t{ name: 'd', data: d }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction writePkcs1(der, key) {\n\tder.startSequence();\n\n\tswitch (key.type) {\n\tcase 'rsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1RSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1RSAPublic(der, key);\n\t\tbreak;\n\tcase 'dsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1DSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1DSAPublic(der, key);\n\t\tbreak;\n\tcase 'ecdsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1ECDSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1ECDSAPublic(der, key);\n\t\tbreak;\n\tcase 'ed25519':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1EdDSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1EdDSAPublic(der, key);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unknown key algo: ' + key.type));\n\t}\n\n\tder.endSequence();\n}\n\nfunction writePkcs1RSAPublic(der, key) {\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1RSAPrivate(der, key) {\n\tvar ver = Buffer.from([0]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.d.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tif (!key.part.dmodp || !key.part.dmodq)\n\t\tutils.addRSAMissing(key);\n\tder.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1DSAPrivate(der, key) {\n\tvar ver = Buffer.from([0]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.x.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1DSAPublic(der, key) {\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1ECDSAPublic(der, key) {\n\tder.startSequence();\n\n\tder.writeOID('1.2.840.10045.2.1'); /* ecPublicKey */\n\tvar curve = key.part.curve.data.toString();\n\tvar curveOid = algs.curves[curve].pkcs8oid;\n\tassert.string(curveOid, 'a known ECDSA named curve');\n\tder.writeOID(curveOid);\n\n\tder.endSequence();\n\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n}\n\nfunction writePkcs1ECDSAPrivate(der, key) {\n\tvar ver = Buffer.from([1]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.d.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa0);\n\tvar curve = key.part.curve.data.toString();\n\tvar curveOid = algs.curves[curve].pkcs8oid;\n\tassert.string(curveOid, 'a known ECDSA named curve');\n\tder.writeOID(curveOid);\n\tder.endSequence();\n\n\tder.startSequence(0xa1);\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n\tder.endSequence();\n}\n\nfunction writePkcs1EdDSAPrivate(der, key) {\n\tvar ver = Buffer.from([1]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.k.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa0);\n\tder.writeOID('1.3.101.112');\n\tder.endSequence();\n\n\tder.startSequence(0xa1);\n\tutils.writeBitString(der, key.part.A.data);\n\tder.endSequence();\n}\n\nfunction writePkcs1EdDSAPublic(der, key) {\n\tthrow (new Error('Public keys are not supported for EdDSA PKCS#1'));\n}\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read.bind(undefined, false, undefined),\n\treadType: read.bind(undefined, false),\n\twrite: write,\n\t/* semi-private api, used by sshpk-agent */\n\treadPartial: read.bind(undefined, true),\n\n\t/* shared with ssh format */\n\treadInternal: read,\n\tkeyTypeToAlg: keyTypeToAlg,\n\talgToKeyType: algToKeyType\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar SSHBuffer = require('../ssh-buffer');\n\nfunction algToKeyType(alg) {\n\tassert.string(alg);\n\tif (alg === 'ssh-dss')\n\t\treturn ('dsa');\n\telse if (alg === 'ssh-rsa')\n\t\treturn ('rsa');\n\telse if (alg === 'ssh-ed25519')\n\t\treturn ('ed25519');\n\telse if (alg === 'ssh-curve25519')\n\t\treturn ('curve25519');\n\telse if (alg.match(/^ecdsa-sha2-/))\n\t\treturn ('ecdsa');\n\telse\n\t\tthrow (new Error('Unknown algorithm ' + alg));\n}\n\nfunction keyTypeToAlg(key) {\n\tassert.object(key);\n\tif (key.type === 'dsa')\n\t\treturn ('ssh-dss');\n\telse if (key.type === 'rsa')\n\t\treturn ('ssh-rsa');\n\telse if (key.type === 'ed25519')\n\t\treturn ('ssh-ed25519');\n\telse if (key.type === 'curve25519')\n\t\treturn ('ssh-curve25519');\n\telse if (key.type === 'ecdsa')\n\t\treturn ('ecdsa-sha2-' + key.part.curve.data.toString());\n\telse\n\t\tthrow (new Error('Unknown key type ' + key.type));\n}\n\nfunction read(partial, type, buf, options) {\n\tif (typeof (buf) === 'string')\n\t\tbuf = Buffer.from(buf);\n\tassert.buffer(buf, 'buf');\n\n\tvar key = {};\n\n\tvar parts = key.parts = [];\n\tvar sshbuf = new SSHBuffer({buffer: buf});\n\n\tvar alg = sshbuf.readString();\n\tassert.ok(!sshbuf.atEnd(), 'key must have at least one part');\n\n\tkey.type = algToKeyType(alg);\n\n\tvar partCount = algs.info[key.type].parts.length;\n\tif (type && type === 'private')\n\t\tpartCount = algs.privInfo[key.type].parts.length;\n\n\twhile (!sshbuf.atEnd() && parts.length < partCount)\n\t\tparts.push(sshbuf.readPart());\n\twhile (!partial && !sshbuf.atEnd())\n\t\tparts.push(sshbuf.readPart());\n\n\tassert.ok(parts.length >= 1,\n\t 'key must have at least one part');\n\tassert.ok(partial || sshbuf.atEnd(),\n\t 'leftover bytes at end of key');\n\n\tvar Constructor = Key;\n\tvar algInfo = algs.info[key.type];\n\tif (type === 'private' || algInfo.parts.length !== parts.length) {\n\t\talgInfo = algs.privInfo[key.type];\n\t\tConstructor = PrivateKey;\n\t}\n\tassert.strictEqual(algInfo.parts.length, parts.length);\n\n\tif (key.type === 'ecdsa') {\n\t\tvar res = /^ecdsa-sha2-(.+)$/.exec(alg);\n\t\tassert.ok(res !== null);\n\t\tassert.strictEqual(res[1], parts[0].data.toString());\n\t}\n\n\tvar normalized = true;\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tvar p = parts[i];\n\t\tp.name = algInfo.parts[i];\n\t\t/*\n\t\t * OpenSSH stores ed25519 \"private\" keys as seed + public key\n\t\t * concat'd together (k followed by A). We want to keep them\n\t\t * separate for other formats that don't do this.\n\t\t */\n\t\tif (key.type === 'ed25519' && p.name === 'k')\n\t\t\tp.data = p.data.slice(0, 32);\n\n\t\tif (p.name !== 'curve' && algInfo.normalize !== false) {\n\t\t\tvar nd;\n\t\t\tif (key.type === 'ed25519') {\n\t\t\t\tnd = utils.zeroPadToLength(p.data, 32);\n\t\t\t} else {\n\t\t\t\tnd = utils.mpNormalize(p.data);\n\t\t\t}\n\t\t\tif (nd.toString('binary') !==\n\t\t\t p.data.toString('binary')) {\n\t\t\t\tp.data = nd;\n\t\t\t\tnormalized = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (normalized)\n\t\tkey._rfc4253Cache = sshbuf.toBuffer();\n\n\tif (partial && typeof (partial) === 'object') {\n\t\tpartial.remainder = sshbuf.remainder();\n\t\tpartial.consumed = sshbuf._offset;\n\t}\n\n\treturn (new Constructor(key));\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\n\tvar alg = keyTypeToAlg(key);\n\tvar i;\n\n\tvar algInfo = algs.info[key.type];\n\tif (PrivateKey.isPrivateKey(key))\n\t\talgInfo = algs.privInfo[key.type];\n\tvar parts = algInfo.parts;\n\n\tvar buf = new SSHBuffer({});\n\n\tbuf.writeString(alg);\n\n\tfor (i = 0; i < parts.length; ++i) {\n\t\tvar data = key.part[parts[i]].data;\n\t\tif (algInfo.normalize !== false) {\n\t\t\tif (key.type === 'ed25519')\n\t\t\t\tdata = utils.zeroPadToLength(data, 32);\n\t\t\telse\n\t\t\t\tdata = utils.mpNormalize(data);\n\t\t}\n\t\tif (key.type === 'ed25519' && parts[i] === 'k')\n\t\t\tdata = Buffer.concat([data, key.part.A.data]);\n\t\tbuf.writeBuffer(data);\n\t}\n\n\treturn (buf.toBuffer());\n}\n", "'use strict';\n\nvar crypto_hash_sha512 = require('tweetnacl').lowlevel.crypto_hash;\n\n/*\n * This file is a 1:1 port from the OpenBSD blowfish.c and bcrypt_pbkdf.c. As a\n * result, it retains the original copyright and license. The two files are\n * under slightly different (but compatible) licenses, and are here combined in\n * one file.\n *\n * Credit for the actual porting work goes to:\n * Devi Mandiri \n */\n\n/*\n * The Blowfish portions are under the following license:\n *\n * Blowfish block cipher for OpenBSD\n * Copyright 1997 Niels Provos \n * All rights reserved.\n *\n * Implementation advice by David Mazieres .\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. The name of the author may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\n * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/*\n * The bcrypt_pbkdf portions are under the following license:\n *\n * Copyright (c) 2013 Ted Unangst \n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n/*\n * Performance improvements (Javascript-specific):\n *\n * Copyright 2016, Joyent Inc\n * Author: Alex Wilson \n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n// Ported from OpenBSD bcrypt_pbkdf.c v1.9\n\nvar BLF_J = 0;\n\nvar Blowfish = function() {\n this.S = [\n new Uint32Array([\n 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,\n 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,\n 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,\n 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,\n 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,\n 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,\n 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,\n 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,\n 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,\n 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,\n 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,\n 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,\n 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,\n 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,\n 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,\n 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,\n 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,\n 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,\n 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,\n 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,\n 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,\n 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,\n 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,\n 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,\n 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,\n 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,\n 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,\n 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,\n 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,\n 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,\n 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,\n 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,\n 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,\n 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,\n 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,\n 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,\n 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,\n 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,\n 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,\n 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,\n 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,\n 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,\n 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a]),\n new Uint32Array([\n 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,\n 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,\n 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,\n 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,\n 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,\n 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,\n 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,\n 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,\n 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,\n 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,\n 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,\n 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,\n 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,\n 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,\n 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,\n 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,\n 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,\n 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,\n 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,\n 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,\n 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,\n 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,\n 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,\n 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,\n 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,\n 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,\n 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,\n 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,\n 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,\n 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,\n 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,\n 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,\n 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,\n 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,\n 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,\n 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,\n 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,\n 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,\n 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,\n 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,\n 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,\n 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,\n 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,\n 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,\n 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,\n 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,\n 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,\n 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,\n 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,\n 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,\n 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,\n 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,\n 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,\n 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,\n 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,\n 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,\n 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,\n 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,\n 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,\n 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,\n 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,\n 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,\n 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,\n 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7]),\n new Uint32Array([\n 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,\n 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,\n 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,\n 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,\n 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,\n 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,\n 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,\n 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,\n 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,\n 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,\n 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,\n 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,\n 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,\n 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,\n 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,\n 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,\n 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,\n 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,\n 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,\n 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,\n 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,\n 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,\n 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,\n 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,\n 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,\n 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,\n 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,\n 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,\n 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,\n 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,\n 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,\n 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,\n 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,\n 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,\n 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,\n 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,\n 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,\n 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,\n 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,\n 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,\n 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,\n 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,\n 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,\n 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,\n 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,\n 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,\n 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,\n 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,\n 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,\n 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,\n 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,\n 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,\n 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,\n 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,\n 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,\n 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,\n 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,\n 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,\n 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,\n 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,\n 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,\n 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,\n 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,\n 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0]),\n new Uint32Array([\n 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,\n 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,\n 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,\n 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,\n 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,\n 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,\n 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,\n 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,\n 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,\n 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,\n 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,\n 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,\n 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,\n 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,\n 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,\n 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,\n 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,\n 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,\n 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,\n 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,\n 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,\n 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,\n 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,\n 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,\n 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,\n 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,\n 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,\n 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,\n 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,\n 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,\n 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,\n 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,\n 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,\n 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,\n 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,\n 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,\n 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,\n 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,\n 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,\n 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,\n 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,\n 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,\n 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6])\n ];\n this.P = new Uint32Array([\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,\n 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,\n 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,\n 0x9216d5d9, 0x8979fb1b]);\n};\n\nfunction F(S, x8, i) {\n return (((S[0][x8[i+3]] +\n S[1][x8[i+2]]) ^\n S[2][x8[i+1]]) +\n S[3][x8[i]]);\n};\n\nBlowfish.prototype.encipher = function(x, x8) {\n if (x8 === undefined) {\n x8 = new Uint8Array(x.buffer);\n if (x.byteOffset !== 0)\n x8 = x8.subarray(x.byteOffset);\n }\n x[0] ^= this.P[0];\n for (var i = 1; i < 16; i += 2) {\n x[1] ^= F(this.S, x8, 0) ^ this.P[i];\n x[0] ^= F(this.S, x8, 4) ^ this.P[i+1];\n }\n var t = x[0];\n x[0] = x[1] ^ this.P[17];\n x[1] = t;\n};\n\nBlowfish.prototype.decipher = function(x) {\n var x8 = new Uint8Array(x.buffer);\n if (x.byteOffset !== 0)\n x8 = x8.subarray(x.byteOffset);\n x[0] ^= this.P[17];\n for (var i = 16; i > 0; i -= 2) {\n x[1] ^= F(this.S, x8, 0) ^ this.P[i];\n x[0] ^= F(this.S, x8, 4) ^ this.P[i-1];\n }\n var t = x[0];\n x[0] = x[1] ^ this.P[0];\n x[1] = t;\n};\n\nfunction stream2word(data, databytes){\n var i, temp = 0;\n for (i = 0; i < 4; i++, BLF_J++) {\n if (BLF_J >= databytes) BLF_J = 0;\n temp = (temp << 8) | data[BLF_J];\n }\n return temp;\n};\n\nBlowfish.prototype.expand0state = function(key, keybytes) {\n var d = new Uint32Array(2), i, k;\n var d8 = new Uint8Array(d.buffer);\n\n for (i = 0, BLF_J = 0; i < 18; i++) {\n this.P[i] ^= stream2word(key, keybytes);\n }\n BLF_J = 0;\n\n for (i = 0; i < 18; i += 2) {\n this.encipher(d, d8);\n this.P[i] = d[0];\n this.P[i+1] = d[1];\n }\n\n for (i = 0; i < 4; i++) {\n for (k = 0; k < 256; k += 2) {\n this.encipher(d, d8);\n this.S[i][k] = d[0];\n this.S[i][k+1] = d[1];\n }\n }\n};\n\nBlowfish.prototype.expandstate = function(data, databytes, key, keybytes) {\n var d = new Uint32Array(2), i, k;\n\n for (i = 0, BLF_J = 0; i < 18; i++) {\n this.P[i] ^= stream2word(key, keybytes);\n }\n\n for (i = 0, BLF_J = 0; i < 18; i += 2) {\n d[0] ^= stream2word(data, databytes);\n d[1] ^= stream2word(data, databytes);\n this.encipher(d);\n this.P[i] = d[0];\n this.P[i+1] = d[1];\n }\n\n for (i = 0; i < 4; i++) {\n for (k = 0; k < 256; k += 2) {\n d[0] ^= stream2word(data, databytes);\n d[1] ^= stream2word(data, databytes);\n this.encipher(d);\n this.S[i][k] = d[0];\n this.S[i][k+1] = d[1];\n }\n }\n BLF_J = 0;\n};\n\nBlowfish.prototype.enc = function(data, blocks) {\n for (var i = 0; i < blocks; i++) {\n this.encipher(data.subarray(i*2));\n }\n};\n\nBlowfish.prototype.dec = function(data, blocks) {\n for (var i = 0; i < blocks; i++) {\n this.decipher(data.subarray(i*2));\n }\n};\n\nvar BCRYPT_BLOCKS = 8,\n BCRYPT_HASHSIZE = 32;\n\nfunction bcrypt_hash(sha2pass, sha2salt, out) {\n var state = new Blowfish(),\n cdata = new Uint32Array(BCRYPT_BLOCKS), i,\n ciphertext = new Uint8Array([79,120,121,99,104,114,111,109,97,116,105,\n 99,66,108,111,119,102,105,115,104,83,119,97,116,68,121,110,97,109,\n 105,116,101]); //\"OxychromaticBlowfishSwatDynamite\"\n\n state.expandstate(sha2salt, 64, sha2pass, 64);\n for (i = 0; i < 64; i++) {\n state.expand0state(sha2salt, 64);\n state.expand0state(sha2pass, 64);\n }\n\n for (i = 0; i < BCRYPT_BLOCKS; i++)\n cdata[i] = stream2word(ciphertext, ciphertext.byteLength);\n for (i = 0; i < 64; i++)\n state.enc(cdata, cdata.byteLength / 8);\n\n for (i = 0; i < BCRYPT_BLOCKS; i++) {\n out[4*i+3] = cdata[i] >>> 24;\n out[4*i+2] = cdata[i] >>> 16;\n out[4*i+1] = cdata[i] >>> 8;\n out[4*i+0] = cdata[i];\n }\n};\n\nfunction bcrypt_pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds) {\n var sha2pass = new Uint8Array(64),\n sha2salt = new Uint8Array(64),\n out = new Uint8Array(BCRYPT_HASHSIZE),\n tmpout = new Uint8Array(BCRYPT_HASHSIZE),\n countsalt = new Uint8Array(saltlen+4),\n i, j, amt, stride, dest, count,\n origkeylen = keylen;\n\n if (rounds < 1)\n return -1;\n if (passlen === 0 || saltlen === 0 || keylen === 0 ||\n keylen > (out.byteLength * out.byteLength) || saltlen > (1<<20))\n return -1;\n\n stride = Math.floor((keylen + out.byteLength - 1) / out.byteLength);\n amt = Math.floor((keylen + stride - 1) / stride);\n\n for (i = 0; i < saltlen; i++)\n countsalt[i] = salt[i];\n\n crypto_hash_sha512(sha2pass, pass, passlen);\n\n for (count = 1; keylen > 0; count++) {\n countsalt[saltlen+0] = count >>> 24;\n countsalt[saltlen+1] = count >>> 16;\n countsalt[saltlen+2] = count >>> 8;\n countsalt[saltlen+3] = count;\n\n crypto_hash_sha512(sha2salt, countsalt, saltlen + 4);\n bcrypt_hash(sha2pass, sha2salt, tmpout);\n for (i = out.byteLength; i--;)\n out[i] = tmpout[i];\n\n for (i = 1; i < rounds; i++) {\n crypto_hash_sha512(sha2salt, tmpout, tmpout.byteLength);\n bcrypt_hash(sha2pass, sha2salt, tmpout);\n for (j = 0; j < out.byteLength; j++)\n out[j] ^= tmpout[j];\n }\n\n amt = Math.min(amt, keylen);\n for (i = 0; i < amt; i++) {\n dest = i * stride + (count - 1);\n if (dest >= origkeylen)\n break;\n key[dest] = out[i];\n }\n keylen -= i;\n }\n\n return 0;\n};\n\nmodule.exports = {\n BLOCKS: BCRYPT_BLOCKS,\n HASHSIZE: BCRYPT_HASHSIZE,\n hash: bcrypt_hash,\n pbkdf: bcrypt_pbkdf\n};\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadSSHPrivate: readSSHPrivate,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar crypto = require('crypto');\n\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar rfc4253 = require('./rfc4253');\nvar SSHBuffer = require('../ssh-buffer');\nvar errors = require('../errors');\n\nvar bcrypt;\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options));\n}\n\nvar MAGIC = 'openssh-key-v1';\n\nfunction readSSHPrivate(type, buf, options) {\n\tbuf = new SSHBuffer({buffer: buf});\n\n\tvar magic = buf.readCString();\n\tassert.strictEqual(magic, MAGIC, 'bad magic string');\n\n\tvar cipher = buf.readString();\n\tvar kdf = buf.readString();\n\tvar kdfOpts = buf.readBuffer();\n\n\tvar nkeys = buf.readInt();\n\tif (nkeys !== 1) {\n\t\tthrow (new Error('OpenSSH-format key file contains ' +\n\t\t 'multiple keys: this is unsupported.'));\n\t}\n\n\tvar pubKey = buf.readBuffer();\n\n\tif (type === 'public') {\n\t\tassert.ok(buf.atEnd(), 'excess bytes left after key');\n\t\treturn (rfc4253.read(pubKey));\n\t}\n\n\tvar privKeyBlob = buf.readBuffer();\n\tassert.ok(buf.atEnd(), 'excess bytes left after key');\n\n\tvar kdfOptsBuf = new SSHBuffer({ buffer: kdfOpts });\n\tswitch (kdf) {\n\tcase 'none':\n\t\tif (cipher !== 'none') {\n\t\t\tthrow (new Error('OpenSSH-format key uses KDF \"none\" ' +\n\t\t\t 'but specifies a cipher other than \"none\"'));\n\t\t}\n\t\tbreak;\n\tcase 'bcrypt':\n\t\tvar salt = kdfOptsBuf.readBuffer();\n\t\tvar rounds = kdfOptsBuf.readInt();\n\t\tvar cinf = utils.opensshCipherInfo(cipher);\n\t\tif (bcrypt === undefined) {\n\t\t\tbcrypt = require('bcrypt-pbkdf');\n\t\t}\n\n\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\toptions.passphrase = Buffer.from(options.passphrase,\n\t\t\t 'utf-8');\n\t\t}\n\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t options.filename, 'OpenSSH'));\n\t\t}\n\n\t\tvar pass = new Uint8Array(options.passphrase);\n\t\tvar salti = new Uint8Array(salt);\n\t\t/* Use the pbkdf to derive both the key and the IV. */\n\t\tvar out = new Uint8Array(cinf.keySize + cinf.blockSize);\n\t\tvar res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,\n\t\t out, out.length, rounds);\n\t\tif (res !== 0) {\n\t\t\tthrow (new Error('bcrypt_pbkdf function returned ' +\n\t\t\t 'failure, parameters invalid'));\n\t\t}\n\t\tout = Buffer.from(out);\n\t\tvar ckey = out.slice(0, cinf.keySize);\n\t\tvar iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);\n\t\tvar cipherStream = crypto.createDecipheriv(cinf.opensslName,\n\t\t ckey, iv);\n\t\tcipherStream.setAutoPadding(false);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tif (e.toString().indexOf('bad decrypt') !== -1) {\n\t\t\t\tthrow (new Error('Incorrect passphrase ' +\n\t\t\t\t 'supplied, could not decrypt key'));\n\t\t\t}\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(privKeyBlob);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tprivKeyBlob = Buffer.concat(chunks);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error(\n\t\t 'OpenSSH-format key uses unknown KDF \"' + kdf + '\"'));\n\t}\n\n\tbuf = new SSHBuffer({buffer: privKeyBlob});\n\n\tvar checkInt1 = buf.readInt();\n\tvar checkInt2 = buf.readInt();\n\tif (checkInt1 !== checkInt2) {\n\t\tthrow (new Error('Incorrect passphrase supplied, could not ' +\n\t\t 'decrypt key'));\n\t}\n\n\tvar ret = {};\n\tvar key = rfc4253.readInternal(ret, 'private', buf.remainder());\n\n\tbuf.skip(ret.consumed);\n\n\tvar comment = buf.readString();\n\tkey.comment = comment;\n\n\treturn (key);\n}\n\nfunction write(key, options) {\n\tvar pubKey;\n\tif (PrivateKey.isPrivateKey(key))\n\t\tpubKey = key.toPublic();\n\telse\n\t\tpubKey = key;\n\n\tvar cipher = 'none';\n\tvar kdf = 'none';\n\tvar kdfopts = Buffer.alloc(0);\n\tvar cinf = { blockSize: 8 };\n\tvar passphrase;\n\tif (options !== undefined) {\n\t\tpassphrase = options.passphrase;\n\t\tif (typeof (passphrase) === 'string')\n\t\t\tpassphrase = Buffer.from(passphrase, 'utf-8');\n\t\tif (passphrase !== undefined) {\n\t\t\tassert.buffer(passphrase, 'options.passphrase');\n\t\t\tassert.optionalString(options.cipher, 'options.cipher');\n\t\t\tcipher = options.cipher;\n\t\t\tif (cipher === undefined)\n\t\t\t\tcipher = 'aes128-ctr';\n\t\t\tcinf = utils.opensshCipherInfo(cipher);\n\t\t\tkdf = 'bcrypt';\n\t\t}\n\t}\n\n\tvar privBuf;\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tprivBuf = new SSHBuffer({});\n\t\tvar checkInt = crypto.randomBytes(4).readUInt32BE(0);\n\t\tprivBuf.writeInt(checkInt);\n\t\tprivBuf.writeInt(checkInt);\n\t\tprivBuf.write(key.toBuffer('rfc4253'));\n\t\tprivBuf.writeString(key.comment || '');\n\n\t\tvar n = 1;\n\t\twhile (privBuf._offset % cinf.blockSize !== 0)\n\t\t\tprivBuf.writeChar(n++);\n\t\tprivBuf = privBuf.toBuffer();\n\t}\n\n\tswitch (kdf) {\n\tcase 'none':\n\t\tbreak;\n\tcase 'bcrypt':\n\t\tvar salt = crypto.randomBytes(16);\n\t\tvar rounds = 16;\n\t\tvar kdfssh = new SSHBuffer({});\n\t\tkdfssh.writeBuffer(salt);\n\t\tkdfssh.writeInt(rounds);\n\t\tkdfopts = kdfssh.toBuffer();\n\n\t\tif (bcrypt === undefined) {\n\t\t\tbcrypt = require('bcrypt-pbkdf');\n\t\t}\n\t\tvar pass = new Uint8Array(passphrase);\n\t\tvar salti = new Uint8Array(salt);\n\t\t/* Use the pbkdf to derive both the key and the IV. */\n\t\tvar out = new Uint8Array(cinf.keySize + cinf.blockSize);\n\t\tvar res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,\n\t\t out, out.length, rounds);\n\t\tif (res !== 0) {\n\t\t\tthrow (new Error('bcrypt_pbkdf function returned ' +\n\t\t\t 'failure, parameters invalid'));\n\t\t}\n\t\tout = Buffer.from(out);\n\t\tvar ckey = out.slice(0, cinf.keySize);\n\t\tvar iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);\n\n\t\tvar cipherStream = crypto.createCipheriv(cinf.opensslName,\n\t\t ckey, iv);\n\t\tcipherStream.setAutoPadding(false);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(privBuf);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tprivBuf = Buffer.concat(chunks);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unsupported kdf ' + kdf));\n\t}\n\n\tvar buf = new SSHBuffer({});\n\n\tbuf.writeCString(MAGIC);\n\tbuf.writeString(cipher);\t/* cipher */\n\tbuf.writeString(kdf);\t\t/* kdf */\n\tbuf.writeBuffer(kdfopts);\t/* kdfoptions */\n\n\tbuf.writeInt(1);\t\t/* nkeys */\n\tbuf.writeBuffer(pubKey.toBuffer('rfc4253'));\n\n\tif (privBuf)\n\t\tbuf.writeBuffer(privBuf);\n\n\tbuf = buf.toBuffer();\n\n\tvar header;\n\tif (PrivateKey.isPrivateKey(key))\n\t\theader = 'OPENSSH PRIVATE KEY';\n\telse\n\t\theader = 'OPENSSH PUBLIC KEY';\n\n\tvar tmp = buf.toString('base64');\n\tvar len = tmp.length + (tmp.length / 70) +\n\t 18 + 16 + header.length*2 + 10;\n\tbuf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 70;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar pkcs1 = require('./pkcs1');\nvar pkcs8 = require('./pkcs8');\nvar sshpriv = require('./ssh-private');\nvar rfc4253 = require('./rfc4253');\n\nvar errors = require('../errors');\n\nvar OID_PBES2 = '1.2.840.113549.1.5.13';\nvar OID_PBKDF2 = '1.2.840.113549.1.5.12';\n\nvar OID_TO_CIPHER = {\n\t'1.2.840.113549.3.7': '3des-cbc',\n\t'2.16.840.1.101.3.4.1.2': 'aes128-cbc',\n\t'2.16.840.1.101.3.4.1.42': 'aes256-cbc'\n};\nvar CIPHER_TO_OID = {};\nObject.keys(OID_TO_CIPHER).forEach(function (k) {\n\tCIPHER_TO_OID[OID_TO_CIPHER[k]] = k;\n});\n\nvar OID_TO_HASH = {\n\t'1.2.840.113549.2.7': 'sha1',\n\t'1.2.840.113549.2.9': 'sha256',\n\t'1.2.840.113549.2.11': 'sha512'\n};\nvar HASH_TO_OID = {};\nObject.keys(OID_TO_HASH).forEach(function (k) {\n\tHASH_TO_OID[OID_TO_HASH[k]] = k;\n});\n\n/*\n * For reading we support both PKCS#1 and PKCS#8. If we find a private key,\n * we just take the public component of it and use that.\n */\nfunction read(buf, options, forceType) {\n\tvar input = buf;\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar lines = buf.trim().split(/[\\r\\n]+/g);\n\n\tvar m;\n\tvar si = -1;\n\twhile (!m && si < lines.length) {\n\t\tm = lines[++si].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);\n\t}\n\tassert.ok(m, 'invalid PEM header');\n\n\tvar m2;\n\tvar ei = lines.length;\n\twhile (!m2 && ei > 0) {\n\t\tm2 = lines[--ei].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);\n\t}\n\tassert.ok(m2, 'invalid PEM footer');\n\n\t/* Begin and end banners must match key type */\n\tassert.equal(m[2], m2[2]);\n\tvar type = m[2].toLowerCase();\n\n\tvar alg;\n\tif (m[1]) {\n\t\t/* They also must match algorithms, if given */\n\t\tassert.equal(m[1], m2[1], 'PEM header and footer mismatch');\n\t\talg = m[1].trim();\n\t}\n\n\tlines = lines.slice(si, ei + 1);\n\n\tvar headers = {};\n\twhile (true) {\n\t\tlines = lines.slice(1);\n\t\tm = lines[0].match(/*JSSTYLED*/\n\t\t /^([A-Za-z0-9-]+): (.+)$/);\n\t\tif (!m)\n\t\t\tbreak;\n\t\theaders[m[1].toLowerCase()] = m[2];\n\t}\n\n\t/* Chop off the first and last lines */\n\tlines = lines.slice(0, -1).join('');\n\tbuf = Buffer.from(lines, 'base64');\n\n\tvar cipher, key, iv;\n\tif (headers['proc-type']) {\n\t\tvar parts = headers['proc-type'].split(',');\n\t\tif (parts[0] === '4' && parts[1] === 'ENCRYPTED') {\n\t\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\t\toptions.passphrase = Buffer.from(\n\t\t\t\t options.passphrase, 'utf-8');\n\t\t\t}\n\t\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t\t options.filename, 'PEM'));\n\t\t\t} else {\n\t\t\t\tparts = headers['dek-info'].split(',');\n\t\t\t\tassert.ok(parts.length === 2);\n\t\t\t\tcipher = parts[0].toLowerCase();\n\t\t\t\tiv = Buffer.from(parts[1], 'hex');\n\t\t\t\tkey = utils.opensslKeyDeriv(cipher, iv,\n\t\t\t\t options.passphrase, 1).key;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alg && alg.toLowerCase() === 'encrypted') {\n\t\tvar eder = new asn1.BerReader(buf);\n\t\tvar pbesEnd;\n\t\teder.readSequence();\n\n\t\teder.readSequence();\n\t\tpbesEnd = eder.offset + eder.length;\n\n\t\tvar method = eder.readOID();\n\t\tif (method !== OID_PBES2) {\n\t\t\tthrow (new Error('Unsupported PEM/PKCS8 encryption ' +\n\t\t\t 'scheme: ' + method));\n\t\t}\n\n\t\teder.readSequence();\t/* PBES2-params */\n\n\t\teder.readSequence();\t/* keyDerivationFunc */\n\t\tvar kdfEnd = eder.offset + eder.length;\n\t\tvar kdfOid = eder.readOID();\n\t\tif (kdfOid !== OID_PBKDF2)\n\t\t\tthrow (new Error('Unsupported PBES2 KDF: ' + kdfOid));\n\t\teder.readSequence();\n\t\tvar salt = eder.readString(asn1.Ber.OctetString, true);\n\t\tvar iterations = eder.readInt();\n\t\tvar hashAlg = 'sha1';\n\t\tif (eder.offset < kdfEnd) {\n\t\t\teder.readSequence();\n\t\t\tvar hashAlgOid = eder.readOID();\n\t\t\thashAlg = OID_TO_HASH[hashAlgOid];\n\t\t\tif (hashAlg === undefined) {\n\t\t\t\tthrow (new Error('Unsupported PBKDF2 hash: ' +\n\t\t\t\t hashAlgOid));\n\t\t\t}\n\t\t}\n\t\teder._offset = kdfEnd;\n\n\t\teder.readSequence();\t/* encryptionScheme */\n\t\tvar cipherOid = eder.readOID();\n\t\tcipher = OID_TO_CIPHER[cipherOid];\n\t\tif (cipher === undefined) {\n\t\t\tthrow (new Error('Unsupported PBES2 cipher: ' +\n\t\t\t cipherOid));\n\t\t}\n\t\tiv = eder.readString(asn1.Ber.OctetString, true);\n\n\t\teder._offset = pbesEnd;\n\t\tbuf = eder.readString(asn1.Ber.OctetString, true);\n\n\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\toptions.passphrase = Buffer.from(\n\t\t\t options.passphrase, 'utf-8');\n\t\t}\n\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t options.filename, 'PEM'));\n\t\t}\n\n\t\tvar cinfo = utils.opensshCipherInfo(cipher);\n\n\t\tcipher = cinfo.opensslName;\n\t\tkey = utils.pbkdf2(hashAlg, salt, iterations, cinfo.keySize,\n\t\t options.passphrase);\n\t\talg = undefined;\n\t}\n\n\tif (cipher && key && iv) {\n\t\tvar cipherStream = crypto.createDecipheriv(cipher, key, iv);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tif (e.toString().indexOf('bad decrypt') !== -1) {\n\t\t\t\tthrow (new Error('Incorrect passphrase ' +\n\t\t\t\t 'supplied, could not decrypt key'));\n\t\t\t}\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(buf);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tbuf = Buffer.concat(chunks);\n\t}\n\n\t/* The new OpenSSH internal format abuses PEM headers */\n\tif (alg && alg.toLowerCase() === 'openssh')\n\t\treturn (sshpriv.readSSHPrivate(type, buf, options));\n\tif (alg && alg.toLowerCase() === 'ssh2')\n\t\treturn (rfc4253.readType(type, buf, options));\n\n\tvar der = new asn1.BerReader(buf);\n\tder.originalInput = input;\n\n\t/*\n\t * All of the PEM file types start with a sequence tag, so chop it\n\t * off here\n\t */\n\tder.readSequence();\n\n\t/* PKCS#1 type keys name an algorithm in the banner explicitly */\n\tif (alg) {\n\t\tif (forceType)\n\t\t\tassert.strictEqual(forceType, 'pkcs1');\n\t\treturn (pkcs1.readPkcs1(alg, type, der));\n\t} else {\n\t\tif (forceType)\n\t\t\tassert.strictEqual(forceType, 'pkcs8');\n\t\treturn (pkcs8.readPkcs8(alg, type, der));\n\t}\n}\n\nfunction write(key, options, type) {\n\tassert.object(key);\n\n\tvar alg = {\n\t 'ecdsa': 'EC',\n\t 'rsa': 'RSA',\n\t 'dsa': 'DSA',\n\t 'ed25519': 'EdDSA'\n\t}[key.type];\n\tvar header;\n\n\tvar der = new asn1.BerWriter();\n\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tif (type && type === 'pkcs8') {\n\t\t\theader = 'PRIVATE KEY';\n\t\t\tpkcs8.writePkcs8(der, key);\n\t\t} else {\n\t\t\tif (type)\n\t\t\t\tassert.strictEqual(type, 'pkcs1');\n\t\t\theader = alg + ' PRIVATE KEY';\n\t\t\tpkcs1.writePkcs1(der, key);\n\t\t}\n\n\t} else if (Key.isKey(key)) {\n\t\tif (type && type === 'pkcs1') {\n\t\t\theader = alg + ' PUBLIC KEY';\n\t\t\tpkcs1.writePkcs1(der, key);\n\t\t} else {\n\t\t\tif (type)\n\t\t\t\tassert.strictEqual(type, 'pkcs8');\n\t\t\theader = 'PUBLIC KEY';\n\t\t\tpkcs8.writePkcs8(der, key);\n\t\t}\n\n\t} else {\n\t\tthrow (new Error('key is not a Key or PrivateKey'));\n\t}\n\n\tvar tmp = der.buffer.toString('base64');\n\tvar len = tmp.length + (tmp.length / 64) +\n\t 18 + 16 + header.length*2 + 10;\n\tvar buf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 64;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar rfc4253 = require('./rfc4253');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar sshpriv = require('./ssh-private');\n\n/*JSSTYLED*/\nvar SSHKEY_RE = /^([a-z0-9-]+)[ \\t]+([a-zA-Z0-9+\\/]+[=]*)([ \\t]+([^ \\t][^\\n]*[\\n]*)?)?$/;\n/*JSSTYLED*/\nvar SSHKEY_RE2 = /^([a-z0-9-]+)[ \\t\\n]+([a-zA-Z0-9+\\/][a-zA-Z0-9+\\/ \\t\\n=]*)([^a-zA-Z0-9+\\/ \\t\\n=].*)?$/;\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar trimmed = buf.trim().replace(/[\\\\\\r]/g, '');\n\tvar m = trimmed.match(SSHKEY_RE);\n\tif (!m)\n\t\tm = trimmed.match(SSHKEY_RE2);\n\tassert.ok(m, 'key must match regex');\n\n\tvar type = rfc4253.algToKeyType(m[1]);\n\tvar kbuf = Buffer.from(m[2], 'base64');\n\n\t/*\n\t * This is a bit tricky. If we managed to parse the key and locate the\n\t * key comment with the regex, then do a non-partial read and assert\n\t * that we have consumed all bytes. If we couldn't locate the key\n\t * comment, though, there may be whitespace shenanigans going on that\n\t * have conjoined the comment to the rest of the key. We do a partial\n\t * read in this case to try to make the best out of a sorry situation.\n\t */\n\tvar key;\n\tvar ret = {};\n\tif (m[4]) {\n\t\ttry {\n\t\t\tkey = rfc4253.read(kbuf);\n\n\t\t} catch (e) {\n\t\t\tm = trimmed.match(SSHKEY_RE2);\n\t\t\tassert.ok(m, 'key must match regex');\n\t\t\tkbuf = Buffer.from(m[2], 'base64');\n\t\t\tkey = rfc4253.readInternal(ret, 'public', kbuf);\n\t\t}\n\t} else {\n\t\tkey = rfc4253.readInternal(ret, 'public', kbuf);\n\t}\n\n\tassert.strictEqual(type, key.type);\n\n\tif (m[4] && m[4].length > 0) {\n\t\tkey.comment = m[4];\n\n\t} else if (ret.consumed) {\n\t\t/*\n\t\t * Now the magic: trying to recover the key comment when it's\n\t\t * gotten conjoined to the key or otherwise shenanigan'd.\n\t\t *\n\t\t * Work out how much base64 we used, then drop all non-base64\n\t\t * chars from the beginning up to this point in the the string.\n\t\t * Then offset in this and try to make up for missing = chars.\n\t\t */\n\t\tvar data = m[2] + (m[3] ? m[3] : '');\n\t\tvar realOffset = Math.ceil(ret.consumed / 3) * 4;\n\t\tdata = data.slice(0, realOffset - 2). /*JSSTYLED*/\n\t\t replace(/[^a-zA-Z0-9+\\/=]/g, '') +\n\t\t data.slice(realOffset - 2);\n\n\t\tvar padding = ret.consumed % 3;\n\t\tif (padding > 0 &&\n\t\t data.slice(realOffset - 1, realOffset) !== '=')\n\t\t\trealOffset--;\n\t\twhile (data.slice(realOffset, realOffset + 1) === '=')\n\t\t\trealOffset++;\n\n\t\t/* Finally, grab what we think is the comment & clean it up. */\n\t\tvar trailer = data.slice(realOffset);\n\t\ttrailer = trailer.replace(/[\\r\\n]/g, ' ').\n\t\t replace(/^\\s+/, '');\n\t\tif (trailer.match(/^[a-zA-Z0-9]/))\n\t\t\tkey.comment = trailer;\n\t}\n\n\treturn (key);\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\tif (!Key.isKey(key))\n\t\tthrow (new Error('Must be a public key'));\n\n\tvar parts = [];\n\tvar alg = rfc4253.keyTypeToAlg(key);\n\tparts.push(alg);\n\n\tvar buf = rfc4253.write(key);\n\tparts.push(buf.toString('base64'));\n\n\tif (key.comment)\n\t\tparts.push(key.comment);\n\n\treturn (Buffer.from(parts.join(' ')));\n}\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar utils = require('../utils');\nvar SSHBuffer = require('../ssh-buffer');\nvar Dhe = require('../dhe');\n\nvar supportedAlgos = {\n\t'rsa-sha1' : 5,\n\t'rsa-sha256' : 8,\n\t'rsa-sha512' : 10,\n\t'ecdsa-p256-sha256' : 13,\n\t'ecdsa-p384-sha384' : 14\n\t/*\n\t * ed25519 is hypothetically supported with id 15\n\t * but the common tools available don't appear to be\n\t * capable of generating/using ed25519 keys\n\t */\n};\n\nvar supportedAlgosById = {};\nObject.keys(supportedAlgos).forEach(function (k) {\n\tsupportedAlgosById[supportedAlgos[k]] = k.toUpperCase();\n});\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\tvar lines = buf.split('\\n');\n\tif (lines[0].match(/^Private-key-format\\: v1/)) {\n\t\tvar algElems = lines[1].split(' ');\n\t\tvar algoNum = parseInt(algElems[1], 10);\n\t\tvar algoName = algElems[2];\n\t\tif (!supportedAlgosById[algoNum])\n\t\t\tthrow (new Error('Unsupported algorithm: ' + algoName));\n\t\treturn (readDNSSECPrivateKey(algoNum, lines.slice(2)));\n\t}\n\n\t// skip any comment-lines\n\tvar line = 0;\n\t/* JSSTYLED */\n\twhile (lines[line].match(/^\\;/))\n\t\tline++;\n\t// we should now have *one single* line left with our KEY on it.\n\tif ((lines[line].match(/\\. IN KEY /) ||\n\t lines[line].match(/\\. IN DNSKEY /)) && lines[line+1].length === 0) {\n\t\treturn (readRFC3110(lines[line]));\n\t}\n\tthrow (new Error('Cannot parse dnssec key'));\n}\n\nfunction readRFC3110(keyString) {\n\tvar elems = keyString.split(' ');\n\t//unused var flags = parseInt(elems[3], 10);\n\t//unused var protocol = parseInt(elems[4], 10);\n\tvar algorithm = parseInt(elems[5], 10);\n\tif (!supportedAlgosById[algorithm])\n\t\tthrow (new Error('Unsupported algorithm: ' + algorithm));\n\tvar base64key = elems.slice(6, elems.length).join();\n\tvar keyBuffer = Buffer.from(base64key, 'base64');\n\tif (supportedAlgosById[algorithm].match(/^RSA-/)) {\n\t\t// join the rest of the body into a single base64-blob\n\t\tvar publicExponentLen = keyBuffer.readUInt8(0);\n\t\tif (publicExponentLen != 3 && publicExponentLen != 1)\n\t\t\tthrow (new Error('Cannot parse dnssec key: ' +\n\t\t\t 'unsupported exponent length'));\n\n\t\tvar publicExponent = keyBuffer.slice(1, publicExponentLen+1);\n\t\tpublicExponent = utils.mpNormalize(publicExponent);\n\t\tvar modulus = keyBuffer.slice(1+publicExponentLen);\n\t\tmodulus = utils.mpNormalize(modulus);\n\t\t// now, make the key\n\t\tvar rsaKey = {\n\t\t\ttype: 'rsa',\n\t\t\tparts: []\n\t\t};\n\t\trsaKey.parts.push({ name: 'e', data: publicExponent});\n\t\trsaKey.parts.push({ name: 'n', data: modulus});\n\t\treturn (new Key(rsaKey));\n\t}\n\tif (supportedAlgosById[algorithm] === 'ECDSA-P384-SHA384' ||\n\t supportedAlgosById[algorithm] === 'ECDSA-P256-SHA256') {\n\t\tvar curve = 'nistp384';\n\t\tvar size = 384;\n\t\tif (supportedAlgosById[algorithm].match(/^ECDSA-P256-SHA256/)) {\n\t\t\tcurve = 'nistp256';\n\t\t\tsize = 256;\n\t\t}\n\n\t\tvar ecdsaKey = {\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tsize: size,\n\t\t\tparts: [\n\t\t\t\t{name: 'curve', data: Buffer.from(curve) },\n\t\t\t\t{name: 'Q', data: utils.ecNormalize(keyBuffer) }\n\t\t\t]\n\t\t};\n\t\treturn (new Key(ecdsaKey));\n\t}\n\tthrow (new Error('Unsupported algorithm: ' +\n\t supportedAlgosById[algorithm]));\n}\n\nfunction elementToBuf(e) {\n\treturn (Buffer.from(e.split(' ')[1], 'base64'));\n}\n\nfunction readDNSSECRSAPrivateKey(elements) {\n\tvar rsaParams = {};\n\telements.forEach(function (element) {\n\t\tif (element.split(' ')[0] === 'Modulus:')\n\t\t\trsaParams['n'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'PublicExponent:')\n\t\t\trsaParams['e'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'PrivateExponent:')\n\t\t\trsaParams['d'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Prime1:')\n\t\t\trsaParams['p'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Prime2:')\n\t\t\trsaParams['q'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Exponent1:')\n\t\t\trsaParams['dmodp'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Exponent2:')\n\t\t\trsaParams['dmodq'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Coefficient:')\n\t\t\trsaParams['iqmp'] = elementToBuf(element);\n\t});\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'e', data: utils.mpNormalize(rsaParams['e'])},\n\t\t\t{ name: 'n', data: utils.mpNormalize(rsaParams['n'])},\n\t\t\t{ name: 'd', data: utils.mpNormalize(rsaParams['d'])},\n\t\t\t{ name: 'p', data: utils.mpNormalize(rsaParams['p'])},\n\t\t\t{ name: 'q', data: utils.mpNormalize(rsaParams['q'])},\n\t\t\t{ name: 'dmodp',\n\t\t\t data: utils.mpNormalize(rsaParams['dmodp'])},\n\t\t\t{ name: 'dmodq',\n\t\t\t data: utils.mpNormalize(rsaParams['dmodq'])},\n\t\t\t{ name: 'iqmp',\n\t\t\t data: utils.mpNormalize(rsaParams['iqmp'])}\n\t\t]\n\t};\n\treturn (new PrivateKey(key));\n}\n\nfunction readDNSSECPrivateKey(alg, elements) {\n\tif (supportedAlgosById[alg].match(/^RSA-/)) {\n\t\treturn (readDNSSECRSAPrivateKey(elements));\n\t}\n\tif (supportedAlgosById[alg] === 'ECDSA-P384-SHA384' ||\n\t supportedAlgosById[alg] === 'ECDSA-P256-SHA256') {\n\t\tvar d = Buffer.from(elements[0].split(' ')[1], 'base64');\n\t\tvar curve = 'nistp384';\n\t\tvar size = 384;\n\t\tif (supportedAlgosById[alg] === 'ECDSA-P256-SHA256') {\n\t\t\tcurve = 'nistp256';\n\t\t\tsize = 256;\n\t\t}\n\t\t// DNSSEC generates the public-key on the fly (go calculate it)\n\t\tvar publicKey = utils.publicFromPrivateECDSA(curve, d);\n\t\tvar Q = publicKey.part['Q'].data;\n\t\tvar ecdsaKey = {\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tsize: size,\n\t\t\tparts: [\n\t\t\t\t{name: 'curve', data: Buffer.from(curve) },\n\t\t\t\t{name: 'd', data: d },\n\t\t\t\t{name: 'Q', data: Q }\n\t\t\t]\n\t\t};\n\t\treturn (new PrivateKey(ecdsaKey));\n\t}\n\tthrow (new Error('Unsupported algorithm: ' + supportedAlgosById[alg]));\n}\n\nfunction dnssecTimestamp(date) {\n\tvar year = date.getFullYear() + ''; //stringify\n\tvar month = (date.getMonth() + 1);\n\tvar timestampStr = year + month + date.getUTCDate();\n\ttimestampStr += '' + date.getUTCHours() + date.getUTCMinutes();\n\ttimestampStr += date.getUTCSeconds();\n\treturn (timestampStr);\n}\n\nfunction rsaAlgFromOptions(opts) {\n\tif (!opts || !opts.hashAlgo || opts.hashAlgo === 'sha1')\n\t\treturn ('5 (RSASHA1)');\n\telse if (opts.hashAlgo === 'sha256')\n\t\treturn ('8 (RSASHA256)');\n\telse if (opts.hashAlgo === 'sha512')\n\t\treturn ('10 (RSASHA512)');\n\telse\n\t\tthrow (new Error('Unknown or unsupported hash: ' +\n\t\t opts.hashAlgo));\n}\n\nfunction writeRSA(key, options) {\n\t// if we're missing parts, add them.\n\tif (!key.part.dmodp || !key.part.dmodq) {\n\t\tutils.addRSAMissing(key);\n\t}\n\n\tvar out = '';\n\tout += 'Private-key-format: v1.3\\n';\n\tout += 'Algorithm: ' + rsaAlgFromOptions(options) + '\\n';\n\tvar n = utils.mpDenormalize(key.part['n'].data);\n\tout += 'Modulus: ' + n.toString('base64') + '\\n';\n\tvar e = utils.mpDenormalize(key.part['e'].data);\n\tout += 'PublicExponent: ' + e.toString('base64') + '\\n';\n\tvar d = utils.mpDenormalize(key.part['d'].data);\n\tout += 'PrivateExponent: ' + d.toString('base64') + '\\n';\n\tvar p = utils.mpDenormalize(key.part['p'].data);\n\tout += 'Prime1: ' + p.toString('base64') + '\\n';\n\tvar q = utils.mpDenormalize(key.part['q'].data);\n\tout += 'Prime2: ' + q.toString('base64') + '\\n';\n\tvar dmodp = utils.mpDenormalize(key.part['dmodp'].data);\n\tout += 'Exponent1: ' + dmodp.toString('base64') + '\\n';\n\tvar dmodq = utils.mpDenormalize(key.part['dmodq'].data);\n\tout += 'Exponent2: ' + dmodq.toString('base64') + '\\n';\n\tvar iqmp = utils.mpDenormalize(key.part['iqmp'].data);\n\tout += 'Coefficient: ' + iqmp.toString('base64') + '\\n';\n\t// Assume that we're valid as-of now\n\tvar timestamp = new Date();\n\tout += 'Created: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Publish: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Activate: ' + dnssecTimestamp(timestamp) + '\\n';\n\treturn (Buffer.from(out, 'ascii'));\n}\n\nfunction writeECDSA(key, options) {\n\tvar out = '';\n\tout += 'Private-key-format: v1.3\\n';\n\n\tif (key.curve === 'nistp256') {\n\t\tout += 'Algorithm: 13 (ECDSAP256SHA256)\\n';\n\t} else if (key.curve === 'nistp384') {\n\t\tout += 'Algorithm: 14 (ECDSAP384SHA384)\\n';\n\t} else {\n\t\tthrow (new Error('Unsupported curve'));\n\t}\n\tvar base64Key = key.part['d'].data.toString('base64');\n\tout += 'PrivateKey: ' + base64Key + '\\n';\n\n\t// Assume that we're valid as-of now\n\tvar timestamp = new Date();\n\tout += 'Created: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Publish: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Activate: ' + dnssecTimestamp(timestamp) + '\\n';\n\n\treturn (Buffer.from(out, 'ascii'));\n}\n\nfunction write(key, options) {\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tif (key.type === 'rsa') {\n\t\t\treturn (writeRSA(key, options));\n\t\t} else if (key.type === 'ecdsa') {\n\t\t\treturn (writeECDSA(key, options));\n\t\t} else {\n\t\t\tthrow (new Error('Unsupported algorithm: ' + key.type));\n\t\t}\n\t} else if (Key.isKey(key)) {\n\t\t/*\n\t\t * RFC3110 requires a keyname, and a keytype, which we\n\t\t * don't really have a mechanism for specifying such\n\t\t * additional metadata.\n\t\t */\n\t\tthrow (new Error('Format \"dnssec\" only supports ' +\n\t\t 'writing private keys'));\n\t} else {\n\t\tthrow (new Error('key is not a Key or PrivateKey'));\n\t}\n}\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar rfc4253 = require('./rfc4253');\nvar Key = require('../key');\nvar SSHBuffer = require('../ssh-buffer');\nvar crypto = require('crypto');\nvar PrivateKey = require('../private-key');\n\nvar errors = require('../errors');\n\n// https://tartarus.org/~simon/putty-prerel-snapshots/htmldoc/AppendixC.html\nfunction read(buf, options) {\n\tvar lines = buf.toString('ascii').split(/[\\r\\n]+/);\n\tvar found = false;\n\tvar parts;\n\tvar si = 0;\n\tvar formatVersion;\n\twhile (si < lines.length) {\n\t\tparts = splitHeader(lines[si++]);\n\t\tif (parts) {\n\t\t\tformatVersion = {\n\t\t\t\t'putty-user-key-file-2': 2,\n\t\t\t\t'putty-user-key-file-3': 3\n\t\t\t}[parts[0].toLowerCase()];\n\t\t\tif (formatVersion) {\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!found) {\n\t\tthrow (new Error('No PuTTY format first line found'));\n\t}\n\tvar alg = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'encryption');\n\tvar encryption = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'comment');\n\tvar comment = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'public-lines');\n\tvar publicLines = parseInt(parts[1], 10);\n\tif (!isFinite(publicLines) || publicLines < 0 ||\n\t publicLines > lines.length) {\n\t\tthrow (new Error('Invalid public-lines count'));\n\t}\n\n\tvar publicBuf = Buffer.from(\n\t lines.slice(si, si + publicLines).join(''), 'base64');\n\tvar keyType = rfc4253.algToKeyType(alg);\n\tvar key = rfc4253.read(publicBuf);\n\tif (key.type !== keyType) {\n\t\tthrow (new Error('Outer key algorithm mismatch'));\n\t}\n\n\tsi += publicLines;\n\tif (lines[si]) {\n\t\tparts = splitHeader(lines[si++]);\n\t\tassert.equal(parts[0].toLowerCase(), 'private-lines');\n\t\tvar privateLines = parseInt(parts[1], 10);\n\t\tif (!isFinite(privateLines) || privateLines < 0 ||\n\t\t privateLines > lines.length) {\n\t\t\tthrow (new Error('Invalid private-lines count'));\n\t\t}\n\n\t\tvar privateBuf = Buffer.from(\n\t\t\tlines.slice(si, si + privateLines).join(''), 'base64');\n\n\t\tif (encryption !== 'none' && formatVersion === 3) {\n\t\t\tthrow new Error('Encrypted keys arenot supported for' +\n\t\t\t' PuTTY format version 3');\n\t\t}\n\n\t\tif (encryption === 'aes256-cbc') {\n\t\t\tif (!options.passphrase) {\n\t\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t\t\toptions.filename, 'PEM'));\n\t\t\t}\n\n\t\t\tvar iv = Buffer.alloc(16, 0);\n\t\t\tvar decipher = crypto.createDecipheriv(\n\t\t\t\t'aes-256-cbc',\n\t\t\t\tderivePPK2EncryptionKey(options.passphrase),\n\t\t\t\tiv);\n\t\t\tdecipher.setAutoPadding(false);\n\t\t\tprivateBuf = Buffer.concat([\n\t\t\t\tdecipher.update(privateBuf), decipher.final()]);\n\t\t}\n\n\t\tkey = new PrivateKey(key);\n\t\tif (key.type !== keyType) {\n\t\t\tthrow (new Error('Outer key algorithm mismatch'));\n\t\t}\n\n\t\tvar sshbuf = new SSHBuffer({buffer: privateBuf});\n\t\tvar privateKeyParts;\n\t\tif (alg === 'ssh-dss') {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'x',\n\t\t\t\tdata: sshbuf.readBuffer()\n\t\t\t}];\n\t\t} else if (alg === 'ssh-rsa') {\n\t\t\tprivateKeyParts = [\n\t\t\t\t{ name: 'd', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'p', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'q', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'iqmp', data: sshbuf.readBuffer() }\n\t\t\t];\n\t\t} else if (alg.match(/^ecdsa-sha2-nistp/)) {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'd', data: sshbuf.readBuffer()\n\t\t\t} ];\n\t\t} else if (alg === 'ssh-ed25519') {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'k', data: sshbuf.readBuffer()\n\t\t\t} ];\n\t\t} else {\n\t\t\tthrow new Error('Unsupported PPK key type: ' + alg);\n\t\t}\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: key.type,\n\t\t\tparts: key.parts.concat(privateKeyParts)\n\t\t});\n\t}\n\n\tkey.comment = comment;\n\treturn (key);\n}\n\nfunction derivePPK2EncryptionKey(passphrase) {\n\tvar hash1 = crypto.createHash('sha1').update(Buffer.concat([\n\t\tBuffer.from([0, 0, 0, 0]),\n\t\tBuffer.from(passphrase)\n\t])).digest();\n\tvar hash2 = crypto.createHash('sha1').update(Buffer.concat([\n\t\tBuffer.from([0, 0, 0, 1]),\n\t\tBuffer.from(passphrase)\n\t])).digest();\n\treturn (Buffer.concat([hash1, hash2]).slice(0, 32));\n}\n\nfunction splitHeader(line) {\n\tvar idx = line.indexOf(':');\n\tif (idx === -1)\n\t\treturn (null);\n\tvar header = line.slice(0, idx);\n\t++idx;\n\twhile (line[idx] === ' ')\n\t\t++idx;\n\tvar rest = line.slice(idx);\n\treturn ([header, rest]);\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\tif (!Key.isKey(key))\n\t\tthrow (new Error('Must be a public key'));\n\n\tvar alg = rfc4253.keyTypeToAlg(key);\n\tvar buf = rfc4253.write(key);\n\tvar comment = key.comment || '';\n\n\tvar b64 = buf.toString('base64');\n\tvar lines = wrap(b64, 64);\n\n\tlines.unshift('Public-Lines: ' + lines.length);\n\tlines.unshift('Comment: ' + comment);\n\tlines.unshift('Encryption: none');\n\tlines.unshift('PuTTY-User-Key-File-2: ' + alg);\n\n\treturn (Buffer.from(lines.join('\\n') + '\\n'));\n}\n\nfunction wrap(txt, len) {\n\tvar lines = [];\n\tvar pos = 0;\n\twhile (pos < txt.length) {\n\t\tlines.push(txt.slice(pos, pos + 64));\n\t\tpos += 64;\n\t}\n\treturn (lines);\n}\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar pem = require('./pem');\nvar ssh = require('./ssh');\nvar rfc4253 = require('./rfc4253');\nvar dnssec = require('./dnssec');\nvar putty = require('./putty');\n\nvar DNSSEC_PRIVKEY_HEADER_PREFIX = 'Private-key-format: v1';\n\nfunction read(buf, options) {\n\tif (typeof (buf) === 'string') {\n\t\tif (buf.trim().match(/^[-]+[ ]*BEGIN/))\n\t\t\treturn (pem.read(buf, options));\n\t\tif (buf.match(/^\\s*ssh-[a-z]/))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (buf.match(/^\\s*ecdsa-/))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (buf.match(/^putty-user-key-file-2:/i))\n\t\t\treturn (putty.read(buf, options));\n\t\tif (findDNSSECHeader(buf))\n\t\t\treturn (dnssec.read(buf, options));\n\t\tbuf = Buffer.from(buf, 'binary');\n\t} else {\n\t\tassert.buffer(buf);\n\t\tif (findPEMHeader(buf))\n\t\t\treturn (pem.read(buf, options));\n\t\tif (findSSHHeader(buf))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (findPuTTYHeader(buf))\n\t\t\treturn (putty.read(buf, options));\n\t\tif (findDNSSECHeader(buf))\n\t\t\treturn (dnssec.read(buf, options));\n\t}\n\tif (buf.readUInt32BE(0) < buf.length)\n\t\treturn (rfc4253.read(buf, options));\n\tthrow (new Error('Failed to auto-detect format of key'));\n}\n\nfunction findPuTTYHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9))\n\t\t++offset;\n\tif (offset + 22 <= buf.length &&\n\t buf.slice(offset, offset + 22).toString('ascii').toLowerCase() ===\n\t 'putty-user-key-file-2:')\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction findSSHHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9))\n\t\t++offset;\n\tif (offset + 4 <= buf.length &&\n\t buf.slice(offset, offset + 4).toString('ascii') === 'ssh-')\n\t\treturn (true);\n\tif (offset + 6 <= buf.length &&\n\t buf.slice(offset, offset + 6).toString('ascii') === 'ecdsa-')\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction findPEMHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10))\n\t\t++offset;\n\tif (buf[offset] !== 45)\n\t\treturn (false);\n\twhile (offset < buf.length &&\n\t (buf[offset] === 45))\n\t\t++offset;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32))\n\t\t++offset;\n\tif (offset + 5 > buf.length ||\n\t buf.slice(offset, offset + 5).toString('ascii') !== 'BEGIN')\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction findDNSSECHeader(buf) {\n\t// private case first\n\tif (buf.length <= DNSSEC_PRIVKEY_HEADER_PREFIX.length)\n\t\treturn (false);\n\tvar headerCheck = buf.slice(0, DNSSEC_PRIVKEY_HEADER_PREFIX.length);\n\tif (headerCheck.toString('ascii') === DNSSEC_PRIVKEY_HEADER_PREFIX)\n\t\treturn (true);\n\n\t// public-key RFC3110 ?\n\t// 'domain.com. IN KEY ...' or 'domain.com. IN DNSKEY ...'\n\t// skip any comment-lines\n\tif (typeof (buf) !== 'string') {\n\t\tbuf = buf.toString('ascii');\n\t}\n\tvar lines = buf.split('\\n');\n\tvar line = 0;\n\t/* JSSTYLED */\n\twhile (lines[line].match(/^\\;/))\n\t\tline++;\n\tif (lines[line].toString('ascii').match(/\\. IN KEY /))\n\t\treturn (true);\n\tif (lines[line].toString('ascii').match(/\\. IN DNSKEY /))\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction write(key, options) {\n\tthrow (new Error('\"auto\" format cannot be used for writing'));\n}\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = PrivateKey;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar dhe = require('./dhe');\nvar generateECDSA = dhe.generateECDSA;\nvar generateED25519 = dhe.generateED25519;\nvar edCompat = require('./ed-compat');\nvar nacl = require('tweetnacl');\n\nvar Key = require('./key');\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar KeyParseError = errs.KeyParseError;\nvar KeyEncryptedError = errs.KeyEncryptedError;\n\nvar formats = {};\nformats['auto'] = require('./formats/auto');\nformats['pem'] = require('./formats/pem');\nformats['pkcs1'] = require('./formats/pkcs1');\nformats['pkcs8'] = require('./formats/pkcs8');\nformats['rfc4253'] = require('./formats/rfc4253');\nformats['ssh-private'] = require('./formats/ssh-private');\nformats['openssh'] = formats['ssh-private'];\nformats['ssh'] = formats['ssh-private'];\nformats['dnssec'] = require('./formats/dnssec');\nformats['putty'] = require('./formats/putty');\n\nfunction PrivateKey(opts) {\n\tassert.object(opts, 'options');\n\tKey.call(this, opts);\n\n\tthis._pubCache = undefined;\n}\nutil.inherits(PrivateKey, Key);\n\nPrivateKey.formats = formats;\n\nPrivateKey.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'pkcs1';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\treturn (formats[format].write(this, options));\n};\n\nPrivateKey.prototype.hash = function (algo, type) {\n\treturn (this.toPublic().hash(algo, type));\n};\n\nPrivateKey.prototype.fingerprint = function (algo, type) {\n\treturn (this.toPublic().fingerprint(algo, type));\n};\n\nPrivateKey.prototype.toPublic = function () {\n\tif (this._pubCache)\n\t\treturn (this._pubCache);\n\n\tvar algInfo = algs.info[this.type];\n\tvar pubParts = [];\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tvar p = algInfo.parts[i];\n\t\tpubParts.push(this.part[p]);\n\t}\n\n\tthis._pubCache = new Key({\n\t\ttype: this.type,\n\t\tsource: this,\n\t\tparts: pubParts\n\t});\n\tif (this.comment)\n\t\tthis._pubCache.comment = this.comment;\n\treturn (this._pubCache);\n};\n\nPrivateKey.prototype.derive = function (newType) {\n\tassert.string(newType, 'type');\n\tvar priv, pub, pair;\n\n\tif (this.type === 'ed25519' && newType === 'curve25519') {\n\t\tpriv = this.part.k.data;\n\t\tif (priv[0] === 0x00)\n\t\t\tpriv = priv.slice(1);\n\n\t\tpair = nacl.box.keyPair.fromSecretKey(new Uint8Array(priv));\n\t\tpub = Buffer.from(pair.publicKey);\n\n\t\treturn (new PrivateKey({\n\t\t\ttype: 'curve25519',\n\t\t\tparts: [\n\t\t\t\t{ name: 'A', data: utils.mpNormalize(pub) },\n\t\t\t\t{ name: 'k', data: utils.mpNormalize(priv) }\n\t\t\t]\n\t\t}));\n\t} else if (this.type === 'curve25519' && newType === 'ed25519') {\n\t\tpriv = this.part.k.data;\n\t\tif (priv[0] === 0x00)\n\t\t\tpriv = priv.slice(1);\n\n\t\tpair = nacl.sign.keyPair.fromSeed(new Uint8Array(priv));\n\t\tpub = Buffer.from(pair.publicKey);\n\n\t\treturn (new PrivateKey({\n\t\t\ttype: 'ed25519',\n\t\t\tparts: [\n\t\t\t\t{ name: 'A', data: utils.mpNormalize(pub) },\n\t\t\t\t{ name: 'k', data: utils.mpNormalize(priv) }\n\t\t\t]\n\t\t}));\n\t}\n\tthrow (new Error('Key derivation not supported from ' + this.type +\n\t ' to ' + newType));\n};\n\nPrivateKey.prototype.createVerify = function (hashAlgo) {\n\treturn (this.toPublic().createVerify(hashAlgo));\n};\n\nPrivateKey.prototype.createSign = function (hashAlgo) {\n\tif (hashAlgo === undefined)\n\t\thashAlgo = this.defaultHashAlgorithm();\n\tassert.string(hashAlgo, 'hash algorithm');\n\n\t/* ED25519 is not supported by OpenSSL, use a javascript impl. */\n\tif (this.type === 'ed25519' && edCompat !== undefined)\n\t\treturn (new edCompat.Signer(this, hashAlgo));\n\tif (this.type === 'curve25519')\n\t\tthrow (new Error('Curve25519 keys are not suitable for ' +\n\t\t 'signing or verification'));\n\n\tvar v, nm, err;\n\ttry {\n\t\tnm = hashAlgo.toUpperCase();\n\t\tv = crypto.createSign(nm);\n\t} catch (e) {\n\t\terr = e;\n\t}\n\tif (v === undefined || (err instanceof Error &&\n\t err.message.match(/Unknown message digest/))) {\n\t\tnm = 'RSA-';\n\t\tnm += hashAlgo.toUpperCase();\n\t\tv = crypto.createSign(nm);\n\t}\n\tassert.ok(v, 'failed to create verifier');\n\tvar oldSign = v.sign.bind(v);\n\tvar key = this.toBuffer('pkcs1');\n\tvar type = this.type;\n\tvar curve = this.curve;\n\tv.sign = function () {\n\t\tvar sig = oldSign(key);\n\t\tif (typeof (sig) === 'string')\n\t\t\tsig = Buffer.from(sig, 'binary');\n\t\tsig = Signature.parse(sig, type, 'asn1');\n\t\tsig.hashAlgorithm = hashAlgo;\n\t\tsig.curve = curve;\n\t\treturn (sig);\n\t};\n\treturn (v);\n};\n\nPrivateKey.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\tassert.ok(k instanceof PrivateKey, 'key is not a private key');\n\t\tif (!k.comment)\n\t\t\tk.comment = options.filename;\n\t\treturn (k);\n\t} catch (e) {\n\t\tif (e.name === 'KeyEncryptedError')\n\t\t\tthrow (e);\n\t\tthrow (new KeyParseError(options.filename, format, e));\n\t}\n};\n\nPrivateKey.isPrivateKey = function (obj, ver) {\n\treturn (utils.isCompatible(obj, PrivateKey, ver));\n};\n\nPrivateKey.generate = function (type, options) {\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.object(options, 'options');\n\n\tswitch (type) {\n\tcase 'ecdsa':\n\t\tif (options.curve === undefined)\n\t\t\toptions.curve = 'nistp256';\n\t\tassert.string(options.curve, 'options.curve');\n\t\treturn (generateECDSA(options.curve));\n\tcase 'ed25519':\n\t\treturn (generateED25519());\n\tdefault:\n\t\tthrow (new Error('Key generation not supported with key ' +\n\t\t 'type \"' + type + '\"'));\n\t}\n};\n\n/*\n * API versions for PrivateKey:\n * [1,0] -- initial ver\n * [1,1] -- added auto, pkcs[18], openssh/ssh-private formats\n * [1,2] -- added defaultHashAlgorithm\n * [1,3] -- added derive, ed, createDH\n * [1,4] -- first tagged version\n * [1,5] -- changed ed25519 part names and format\n * [1,6] -- type arguments for hash() and fingerprint()\n */\nPrivateKey.prototype._sshpkApiVersion = [1, 6];\n\nPrivateKey._oldVersionDetect = function (obj) {\n\tassert.func(obj.toPublic);\n\tassert.func(obj.createSign);\n\tif (obj.derive)\n\t\treturn ([1, 3]);\n\tif (obj.defaultHashAlgorithm)\n\t\treturn ([1, 2]);\n\tif (obj.formats['auto'])\n\t\treturn ([1, 1]);\n\treturn ([1, 0]);\n};\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = Identity;\n\nvar assert = require('assert-plus');\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\n\n/*JSSTYLED*/\nvar DNS_NAME_RE = /^([*]|[a-z0-9][a-z0-9\\-]{0,62})(?:\\.([*]|[a-z0-9][a-z0-9\\-]{0,62}))*$/i;\n\nvar oids = {};\noids.cn = '2.5.4.3';\noids.o = '2.5.4.10';\noids.ou = '2.5.4.11';\noids.l = '2.5.4.7';\noids.s = '2.5.4.8';\noids.c = '2.5.4.6';\noids.sn = '2.5.4.4';\noids.postalCode = '2.5.4.17';\noids.serialNumber = '2.5.4.5';\noids.street = '2.5.4.9';\noids.x500UniqueIdentifier = '2.5.4.45';\noids.role = '2.5.4.72';\noids.telephoneNumber = '2.5.4.20';\noids.description = '2.5.4.13';\noids.dc = '0.9.2342.19200300.100.1.25';\noids.uid = '0.9.2342.19200300.100.1.1';\noids.mail = '0.9.2342.19200300.100.1.3';\noids.title = '2.5.4.12';\noids.gn = '2.5.4.42';\noids.initials = '2.5.4.43';\noids.pseudonym = '2.5.4.65';\noids.emailAddress = '1.2.840.113549.1.9.1';\n\nvar unoids = {};\nObject.keys(oids).forEach(function (k) {\n\tunoids[oids[k]] = k;\n});\n\nfunction Identity(opts) {\n\tvar self = this;\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.components, 'options.components');\n\tthis.components = opts.components;\n\tthis.componentLookup = {};\n\tthis.components.forEach(function (c) {\n\t\tif (c.name && !c.oid)\n\t\t\tc.oid = oids[c.name];\n\t\tif (c.oid && !c.name)\n\t\t\tc.name = unoids[c.oid];\n\t\tif (self.componentLookup[c.name] === undefined)\n\t\t\tself.componentLookup[c.name] = [];\n\t\tself.componentLookup[c.name].push(c);\n\t});\n\tif (this.componentLookup.cn && this.componentLookup.cn.length > 0) {\n\t\tthis.cn = this.componentLookup.cn[0].value;\n\t}\n\tassert.optionalString(opts.type, 'options.type');\n\tif (opts.type === undefined) {\n\t\tif (this.components.length === 1 &&\n\t\t this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1 &&\n\t\t this.componentLookup.cn[0].value.match(DNS_NAME_RE)) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.cn[0].value;\n\n\t\t} else if (this.componentLookup.dc &&\n\t\t this.components.length === this.componentLookup.dc.length) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.dc.map(\n\t\t\t function (c) {\n\t\t\t\treturn (c.value);\n\t\t\t}).join('.');\n\n\t\t} else if (this.componentLookup.uid &&\n\t\t this.components.length ===\n\t\t this.componentLookup.uid.length) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.uid[0].value;\n\n\t\t} else if (this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1 &&\n\t\t this.componentLookup.cn[0].value.match(DNS_NAME_RE)) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.cn[0].value;\n\n\t\t} else if (this.componentLookup.uid &&\n\t\t this.componentLookup.uid.length === 1) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.uid[0].value;\n\n\t\t} else if (this.componentLookup.mail &&\n\t\t this.componentLookup.mail.length === 1) {\n\t\t\tthis.type = 'email';\n\t\t\tthis.email = this.componentLookup.mail[0].value;\n\n\t\t} else if (this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.cn[0].value;\n\n\t\t} else {\n\t\t\tthis.type = 'unknown';\n\t\t}\n\t} else {\n\t\tthis.type = opts.type;\n\t\tif (this.type === 'host')\n\t\t\tthis.hostname = opts.hostname;\n\t\telse if (this.type === 'user')\n\t\t\tthis.uid = opts.uid;\n\t\telse if (this.type === 'email')\n\t\t\tthis.email = opts.email;\n\t\telse\n\t\t\tthrow (new Error('Unknown type ' + this.type));\n\t}\n}\n\nIdentity.prototype.toString = function () {\n\treturn (this.components.map(function (c) {\n\t\tvar n = c.name.toUpperCase();\n\t\t/*JSSTYLED*/\n\t\tn = n.replace(/=/g, '\\\\=');\n\t\tvar v = c.value;\n\t\t/*JSSTYLED*/\n\t\tv = v.replace(/,/g, '\\\\,');\n\t\treturn (n + '=' + v);\n\t}).join(', '));\n};\n\nIdentity.prototype.get = function (name, asArray) {\n\tassert.string(name, 'name');\n\tvar arr = this.componentLookup[name];\n\tif (arr === undefined || arr.length === 0)\n\t\treturn (undefined);\n\tif (!asArray && arr.length > 1)\n\t\tthrow (new Error('Multiple values for attribute ' + name));\n\tif (!asArray)\n\t\treturn (arr[0].value);\n\treturn (arr.map(function (c) {\n\t\treturn (c.value);\n\t}));\n};\n\nIdentity.prototype.toArray = function (idx) {\n\treturn (this.components.map(function (c) {\n\t\treturn ({\n\t\t\tname: c.name,\n\t\t\tvalue: c.value\n\t\t});\n\t}));\n};\n\n/*\n * These are from X.680 -- PrintableString allowed chars are in section 37.4\n * table 8. Spec for IA5Strings is \"1,6 + SPACE + DEL\" where 1 refers to\n * ISO IR #001 (standard ASCII control characters) and 6 refers to ISO IR #006\n * (the basic ASCII character set).\n */\n/* JSSTYLED */\nvar NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\\/:=?-]/;\n/* JSSTYLED */\nvar NOT_IA5 = /[^\\x00-\\x7f]/;\n\nIdentity.prototype.toAsn1 = function (der, tag) {\n\tder.startSequence(tag);\n\tthis.components.forEach(function (c) {\n\t\tder.startSequence(asn1.Ber.Constructor | asn1.Ber.Set);\n\t\tder.startSequence();\n\t\tder.writeOID(c.oid);\n\t\t/*\n\t\t * If we fit in a PrintableString, use that. Otherwise use an\n\t\t * IA5String or UTF8String.\n\t\t *\n\t\t * If this identity was parsed from a DN, use the ASN.1 types\n\t\t * from the original representation (otherwise this might not\n\t\t * be a full match for the original in some validators).\n\t\t */\n\t\tif (c.asn1type === asn1.Ber.Utf8String ||\n\t\t c.value.match(NOT_IA5)) {\n\t\t\tvar v = Buffer.from(c.value, 'utf8');\n\t\t\tder.writeBuffer(v, asn1.Ber.Utf8String);\n\n\t\t} else if (c.asn1type === asn1.Ber.IA5String ||\n\t\t c.value.match(NOT_PRINTABLE)) {\n\t\t\tder.writeString(c.value, asn1.Ber.IA5String);\n\n\t\t} else {\n\t\t\tvar type = asn1.Ber.PrintableString;\n\t\t\tif (c.asn1type !== undefined)\n\t\t\t\ttype = c.asn1type;\n\t\t\tder.writeString(c.value, type);\n\t\t}\n\t\tder.endSequence();\n\t\tder.endSequence();\n\t});\n\tder.endSequence();\n};\n\nfunction globMatch(a, b) {\n\tif (a === '**' || b === '**')\n\t\treturn (true);\n\tvar aParts = a.split('.');\n\tvar bParts = b.split('.');\n\tif (aParts.length !== bParts.length)\n\t\treturn (false);\n\tfor (var i = 0; i < aParts.length; ++i) {\n\t\tif (aParts[i] === '*' || bParts[i] === '*')\n\t\t\tcontinue;\n\t\tif (aParts[i] !== bParts[i])\n\t\t\treturn (false);\n\t}\n\treturn (true);\n}\n\nIdentity.prototype.equals = function (other) {\n\tif (!Identity.isIdentity(other, [1, 0]))\n\t\treturn (false);\n\tif (other.components.length !== this.components.length)\n\t\treturn (false);\n\tfor (var i = 0; i < this.components.length; ++i) {\n\t\tif (this.components[i].oid !== other.components[i].oid)\n\t\t\treturn (false);\n\t\tif (!globMatch(this.components[i].value,\n\t\t other.components[i].value)) {\n\t\t\treturn (false);\n\t\t}\n\t}\n\treturn (true);\n};\n\nIdentity.forHost = function (hostname) {\n\tassert.string(hostname, 'hostname');\n\treturn (new Identity({\n\t\ttype: 'host',\n\t\thostname: hostname,\n\t\tcomponents: [ { name: 'cn', value: hostname } ]\n\t}));\n};\n\nIdentity.forUser = function (uid) {\n\tassert.string(uid, 'uid');\n\treturn (new Identity({\n\t\ttype: 'user',\n\t\tuid: uid,\n\t\tcomponents: [ { name: 'uid', value: uid } ]\n\t}));\n};\n\nIdentity.forEmail = function (email) {\n\tassert.string(email, 'email');\n\treturn (new Identity({\n\t\ttype: 'email',\n\t\temail: email,\n\t\tcomponents: [ { name: 'mail', value: email } ]\n\t}));\n};\n\nIdentity.parseDN = function (dn) {\n\tassert.string(dn, 'dn');\n\tvar parts = [''];\n\tvar idx = 0;\n\tvar rem = dn;\n\twhile (rem.length > 0) {\n\t\tvar m;\n\t\t/*JSSTYLED*/\n\t\tif ((m = /^,/.exec(rem)) !== null) {\n\t\t\tparts[++idx] = '';\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^\\\\,/.exec(rem)) !== null) {\n\t\t\tparts[idx] += ',';\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^\\\\./.exec(rem)) !== null) {\n\t\t\tparts[idx] += m[0];\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^[^\\\\,]+/.exec(rem)) !== null) {\n\t\t\tparts[idx] += m[0];\n\t\t\trem = rem.slice(m[0].length);\n\t\t} else {\n\t\t\tthrow (new Error('Failed to parse DN'));\n\t\t}\n\t}\n\tvar cmps = parts.map(function (c) {\n\t\tc = c.trim();\n\t\tvar eqPos = c.indexOf('=');\n\t\twhile (eqPos > 0 && c.charAt(eqPos - 1) === '\\\\')\n\t\t\teqPos = c.indexOf('=', eqPos + 1);\n\t\tif (eqPos === -1) {\n\t\t\tthrow (new Error('Failed to parse DN'));\n\t\t}\n\t\t/*JSSTYLED*/\n\t\tvar name = c.slice(0, eqPos).toLowerCase().replace(/\\\\=/g, '=');\n\t\tvar value = c.slice(eqPos + 1);\n\t\treturn ({ name: name, value: value });\n\t});\n\treturn (new Identity({ components: cmps }));\n};\n\nIdentity.fromArray = function (components) {\n\tassert.arrayOfObject(components, 'components');\n\tcomponents.forEach(function (cmp) {\n\t\tassert.object(cmp, 'component');\n\t\tassert.string(cmp.name, 'component.name');\n\t\tif (!Buffer.isBuffer(cmp.value) &&\n\t\t !(typeof (cmp.value) === 'string')) {\n\t\t\tthrow (new Error('Invalid component value'));\n\t\t}\n\t});\n\treturn (new Identity({ components: components }));\n};\n\nIdentity.parseAsn1 = function (der, top) {\n\tvar components = [];\n\tder.readSequence(top);\n\tvar end = der.offset + der.length;\n\twhile (der.offset < end) {\n\t\tder.readSequence(asn1.Ber.Constructor | asn1.Ber.Set);\n\t\tvar after = der.offset + der.length;\n\t\tder.readSequence();\n\t\tvar oid = der.readOID();\n\t\tvar type = der.peek();\n\t\tvar value;\n\t\tswitch (type) {\n\t\tcase asn1.Ber.PrintableString:\n\t\tcase asn1.Ber.IA5String:\n\t\tcase asn1.Ber.OctetString:\n\t\tcase asn1.Ber.T61String:\n\t\t\tvalue = der.readString(type);\n\t\t\tbreak;\n\t\tcase asn1.Ber.Utf8String:\n\t\t\tvalue = der.readString(type, true);\n\t\t\tvalue = value.toString('utf8');\n\t\t\tbreak;\n\t\tcase asn1.Ber.CharacterString:\n\t\tcase asn1.Ber.BMPString:\n\t\t\tvalue = der.readString(type, true);\n\t\t\tvalue = value.toString('utf16le');\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('Unknown asn1 type ' + type));\n\t\t}\n\t\tcomponents.push({ oid: oid, asn1type: type, value: value });\n\t\tder._offset = after;\n\t}\n\tder._offset = end;\n\treturn (new Identity({\n\t\tcomponents: components\n\t}));\n};\n\nIdentity.isIdentity = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Identity, ver));\n};\n\n/*\n * API versions for Identity:\n * [1,0] -- initial ver\n */\nIdentity.prototype._sshpkApiVersion = [1, 0];\n\nIdentity._oldVersionDetect = function (obj) {\n\treturn ([1, 0]);\n};\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\tverify: verify,\n\tsign: sign,\n\tsignAsync: signAsync,\n\twrite: write,\n\n\t/* Internal private API */\n\tfromBuffer: fromBuffer,\n\ttoBuffer: toBuffer\n};\n\nvar assert = require('assert-plus');\nvar SSHBuffer = require('../ssh-buffer');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar Identity = require('../identity');\nvar rfc4253 = require('./rfc4253');\nvar Signature = require('../signature');\nvar utils = require('../utils');\nvar Certificate = require('../certificate');\n\nfunction verify(cert, key) {\n\t/*\n\t * We always give an issuerKey, so if our verify() is being called then\n\t * there was no signature. Return false.\n\t */\n\treturn (false);\n}\n\nvar TYPES = {\n\t'user': 1,\n\t'host': 2\n};\nObject.keys(TYPES).forEach(function (k) { TYPES[TYPES[k]] = k; });\n\nvar ECDSA_ALGO = /^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/;\n\nfunction read(buf, options) {\n\tif (Buffer.isBuffer(buf))\n\t\tbuf = buf.toString('ascii');\n\tvar parts = buf.trim().split(/[ \\t\\n]+/g);\n\tif (parts.length < 2 || parts.length > 3)\n\t\tthrow (new Error('Not a valid SSH certificate line'));\n\n\tvar algo = parts[0];\n\tvar data = parts[1];\n\n\tdata = Buffer.from(data, 'base64');\n\treturn (fromBuffer(data, algo));\n}\n\nfunction fromBuffer(data, algo, partial) {\n\tvar sshbuf = new SSHBuffer({ buffer: data });\n\tvar innerAlgo = sshbuf.readString();\n\tif (algo !== undefined && innerAlgo !== algo)\n\t\tthrow (new Error('SSH certificate algorithm mismatch'));\n\tif (algo === undefined)\n\t\talgo = innerAlgo;\n\n\tvar cert = {};\n\tcert.signatures = {};\n\tcert.signatures.openssh = {};\n\n\tcert.signatures.openssh.nonce = sshbuf.readBuffer();\n\n\tvar key = {};\n\tvar parts = (key.parts = []);\n\tkey.type = getAlg(algo);\n\n\tvar partCount = algs.info[key.type].parts.length;\n\twhile (parts.length < partCount)\n\t\tparts.push(sshbuf.readPart());\n\tassert.ok(parts.length >= 1, 'key must have at least one part');\n\n\tvar algInfo = algs.info[key.type];\n\tif (key.type === 'ecdsa') {\n\t\tvar res = ECDSA_ALGO.exec(algo);\n\t\tassert.ok(res !== null);\n\t\tassert.strictEqual(res[1], parts[0].data.toString());\n\t}\n\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tparts[i].name = algInfo.parts[i];\n\t\tif (parts[i].name !== 'curve' &&\n\t\t algInfo.normalize !== false) {\n\t\t\tvar p = parts[i];\n\t\t\tp.data = utils.mpNormalize(p.data);\n\t\t}\n\t}\n\n\tcert.subjectKey = new Key(key);\n\n\tcert.serial = sshbuf.readInt64();\n\n\tvar type = TYPES[sshbuf.readInt()];\n\tassert.string(type, 'valid cert type');\n\n\tcert.signatures.openssh.keyId = sshbuf.readString();\n\n\tvar principals = [];\n\tvar pbuf = sshbuf.readBuffer();\n\tvar psshbuf = new SSHBuffer({ buffer: pbuf });\n\twhile (!psshbuf.atEnd())\n\t\tprincipals.push(psshbuf.readString());\n\tif (principals.length === 0)\n\t\tprincipals = ['*'];\n\n\tcert.subjects = principals.map(function (pr) {\n\t\tif (type === 'user')\n\t\t\treturn (Identity.forUser(pr));\n\t\telse if (type === 'host')\n\t\t\treturn (Identity.forHost(pr));\n\t\tthrow (new Error('Unknown identity type ' + type));\n\t});\n\n\tcert.validFrom = int64ToDate(sshbuf.readInt64());\n\tcert.validUntil = int64ToDate(sshbuf.readInt64());\n\n\tvar exts = [];\n\tvar extbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() });\n\tvar ext;\n\twhile (!extbuf.atEnd()) {\n\t\text = { critical: true };\n\t\text.name = extbuf.readString();\n\t\text.data = extbuf.readBuffer();\n\t\texts.push(ext);\n\t}\n\textbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() });\n\twhile (!extbuf.atEnd()) {\n\t\text = { critical: false };\n\t\text.name = extbuf.readString();\n\t\text.data = extbuf.readBuffer();\n\t\texts.push(ext);\n\t}\n\tcert.signatures.openssh.exts = exts;\n\n\t/* reserved */\n\tsshbuf.readBuffer();\n\n\tvar signingKeyBuf = sshbuf.readBuffer();\n\tcert.issuerKey = rfc4253.read(signingKeyBuf);\n\n\t/*\n\t * OpenSSH certs don't give the identity of the issuer, just their\n\t * public key. So, we use an Identity that matches anything. The\n\t * isSignedBy() function will later tell you if the key matches.\n\t */\n\tcert.issuer = Identity.forHost('**');\n\n\tvar sigBuf = sshbuf.readBuffer();\n\tcert.signatures.openssh.signature =\n\t Signature.parse(sigBuf, cert.issuerKey.type, 'ssh');\n\n\tif (partial !== undefined) {\n\t\tpartial.remainder = sshbuf.remainder();\n\t\tpartial.consumed = sshbuf._offset;\n\t}\n\n\treturn (new Certificate(cert));\n}\n\nfunction int64ToDate(buf) {\n\tvar i = buf.readUInt32BE(0) * 4294967296;\n\ti += buf.readUInt32BE(4);\n\tvar d = new Date();\n\td.setTime(i * 1000);\n\td.sourceInt64 = buf;\n\treturn (d);\n}\n\nfunction dateToInt64(date) {\n\tif (date.sourceInt64 !== undefined)\n\t\treturn (date.sourceInt64);\n\tvar i = Math.round(date.getTime() / 1000);\n\tvar upper = Math.floor(i / 4294967296);\n\tvar lower = Math.floor(i % 4294967296);\n\tvar buf = Buffer.alloc(8);\n\tbuf.writeUInt32BE(upper, 0);\n\tbuf.writeUInt32BE(lower, 4);\n\treturn (buf);\n}\n\nfunction sign(cert, key) {\n\tif (cert.signatures.openssh === undefined)\n\t\tcert.signatures.openssh = {};\n\ttry {\n\t\tvar blob = toBuffer(cert, true);\n\t} catch (e) {\n\t\tdelete (cert.signatures.openssh);\n\t\treturn (false);\n\t}\n\tvar sig = cert.signatures.openssh;\n\tvar hashAlgo = undefined;\n\tif (key.type === 'rsa' || key.type === 'dsa')\n\t\thashAlgo = 'sha1';\n\tvar signer = key.createSign(hashAlgo);\n\tsigner.write(blob);\n\tsig.signature = signer.sign();\n\treturn (true);\n}\n\nfunction signAsync(cert, signer, done) {\n\tif (cert.signatures.openssh === undefined)\n\t\tcert.signatures.openssh = {};\n\ttry {\n\t\tvar blob = toBuffer(cert, true);\n\t} catch (e) {\n\t\tdelete (cert.signatures.openssh);\n\t\tdone(e);\n\t\treturn;\n\t}\n\tvar sig = cert.signatures.openssh;\n\n\tsigner(blob, function (err, signature) {\n\t\tif (err) {\n\t\t\tdone(err);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\t/*\n\t\t\t * This will throw if the signature isn't of a\n\t\t\t * type/algo that can be used for SSH.\n\t\t\t */\n\t\t\tsignature.toBuffer('ssh');\n\t\t} catch (e) {\n\t\t\tdone(e);\n\t\t\treturn;\n\t\t}\n\t\tsig.signature = signature;\n\t\tdone();\n\t});\n}\n\nfunction write(cert, options) {\n\tif (options === undefined)\n\t\toptions = {};\n\n\tvar blob = toBuffer(cert);\n\tvar out = getCertType(cert.subjectKey) + ' ' + blob.toString('base64');\n\tif (options.comment)\n\t\tout = out + ' ' + options.comment;\n\treturn (out);\n}\n\n\nfunction toBuffer(cert, noSig) {\n\tassert.object(cert.signatures.openssh, 'signature for openssh format');\n\tvar sig = cert.signatures.openssh;\n\n\tif (sig.nonce === undefined)\n\t\tsig.nonce = crypto.randomBytes(16);\n\tvar buf = new SSHBuffer({});\n\tbuf.writeString(getCertType(cert.subjectKey));\n\tbuf.writeBuffer(sig.nonce);\n\n\tvar key = cert.subjectKey;\n\tvar algInfo = algs.info[key.type];\n\talgInfo.parts.forEach(function (part) {\n\t\tbuf.writePart(key.part[part]);\n\t});\n\n\tbuf.writeInt64(cert.serial);\n\n\tvar type = cert.subjects[0].type;\n\tassert.notStrictEqual(type, 'unknown');\n\tcert.subjects.forEach(function (id) {\n\t\tassert.strictEqual(id.type, type);\n\t});\n\ttype = TYPES[type];\n\tbuf.writeInt(type);\n\n\tif (sig.keyId === undefined) {\n\t\tsig.keyId = cert.subjects[0].type + '_' +\n\t\t (cert.subjects[0].uid || cert.subjects[0].hostname);\n\t}\n\tbuf.writeString(sig.keyId);\n\n\tvar sub = new SSHBuffer({});\n\tcert.subjects.forEach(function (id) {\n\t\tif (type === TYPES.host)\n\t\t\tsub.writeString(id.hostname);\n\t\telse if (type === TYPES.user)\n\t\t\tsub.writeString(id.uid);\n\t});\n\tbuf.writeBuffer(sub.toBuffer());\n\n\tbuf.writeInt64(dateToInt64(cert.validFrom));\n\tbuf.writeInt64(dateToInt64(cert.validUntil));\n\n\tvar exts = sig.exts;\n\tif (exts === undefined)\n\t\texts = [];\n\n\tvar extbuf = new SSHBuffer({});\n\texts.forEach(function (ext) {\n\t\tif (ext.critical !== true)\n\t\t\treturn;\n\t\textbuf.writeString(ext.name);\n\t\textbuf.writeBuffer(ext.data);\n\t});\n\tbuf.writeBuffer(extbuf.toBuffer());\n\n\textbuf = new SSHBuffer({});\n\texts.forEach(function (ext) {\n\t\tif (ext.critical === true)\n\t\t\treturn;\n\t\textbuf.writeString(ext.name);\n\t\textbuf.writeBuffer(ext.data);\n\t});\n\tbuf.writeBuffer(extbuf.toBuffer());\n\n\t/* reserved */\n\tbuf.writeBuffer(Buffer.alloc(0));\n\n\tsub = rfc4253.write(cert.issuerKey);\n\tbuf.writeBuffer(sub);\n\n\tif (!noSig)\n\t\tbuf.writeBuffer(sig.signature.toBuffer('ssh'));\n\n\treturn (buf.toBuffer());\n}\n\nfunction getAlg(certType) {\n\tif (certType === 'ssh-rsa-cert-v01@openssh.com')\n\t\treturn ('rsa');\n\tif (certType === 'ssh-dss-cert-v01@openssh.com')\n\t\treturn ('dsa');\n\tif (certType.match(ECDSA_ALGO))\n\t\treturn ('ecdsa');\n\tif (certType === 'ssh-ed25519-cert-v01@openssh.com')\n\t\treturn ('ed25519');\n\tthrow (new Error('Unsupported cert type ' + certType));\n}\n\nfunction getCertType(key) {\n\tif (key.type === 'rsa')\n\t\treturn ('ssh-rsa-cert-v01@openssh.com');\n\tif (key.type === 'dsa')\n\t\treturn ('ssh-dss-cert-v01@openssh.com');\n\tif (key.type === 'ecdsa')\n\t\treturn ('ecdsa-sha2-' + key.curve + '-cert-v01@openssh.com');\n\tif (key.type === 'ed25519')\n\t\treturn ('ssh-ed25519-cert-v01@openssh.com');\n\tthrow (new Error('Unsupported key type ' + key.type));\n}\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\tverify: verify,\n\tsign: sign,\n\tsignAsync: signAsync,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar Identity = require('../identity');\nvar Signature = require('../signature');\nvar Certificate = require('../certificate');\nvar pkcs8 = require('./pkcs8');\n\n/*\n * This file is based on RFC5280 (X.509).\n */\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction verify(cert, key) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tvar algParts = sig.algo.split('-');\n\tif (algParts[0] !== key.type)\n\t\treturn (false);\n\n\tvar blob = sig.cache;\n\tif (blob === undefined) {\n\t\tvar der = new asn1.BerWriter();\n\t\twriteTBSCert(cert, der);\n\t\tblob = der.buffer;\n\t}\n\n\tvar verifier = key.createVerify(algParts[1]);\n\tverifier.write(blob);\n\treturn (verifier.verify(sig.signature));\n}\n\nfunction Local(i) {\n\treturn (asn1.Ber.Context | asn1.Ber.Constructor | i);\n}\n\nfunction Context(i) {\n\treturn (asn1.Ber.Context | i);\n}\n\nvar SIGN_ALGS = {\n\t'rsa-md5': '1.2.840.113549.1.1.4',\n\t'rsa-sha1': '1.2.840.113549.1.1.5',\n\t'rsa-sha256': '1.2.840.113549.1.1.11',\n\t'rsa-sha384': '1.2.840.113549.1.1.12',\n\t'rsa-sha512': '1.2.840.113549.1.1.13',\n\t'dsa-sha1': '1.2.840.10040.4.3',\n\t'dsa-sha256': '2.16.840.1.101.3.4.3.2',\n\t'ecdsa-sha1': '1.2.840.10045.4.1',\n\t'ecdsa-sha256': '1.2.840.10045.4.3.2',\n\t'ecdsa-sha384': '1.2.840.10045.4.3.3',\n\t'ecdsa-sha512': '1.2.840.10045.4.3.4',\n\t'ed25519-sha512': '1.3.101.112'\n};\nObject.keys(SIGN_ALGS).forEach(function (k) {\n\tSIGN_ALGS[SIGN_ALGS[k]] = k;\n});\nSIGN_ALGS['1.3.14.3.2.3'] = 'rsa-md5';\nSIGN_ALGS['1.3.14.3.2.29'] = 'rsa-sha1';\n\nvar EXTS = {\n\t'issuerKeyId': '2.5.29.35',\n\t'altName': '2.5.29.17',\n\t'basicConstraints': '2.5.29.19',\n\t'keyUsage': '2.5.29.15',\n\t'extKeyUsage': '2.5.29.37'\n};\n\nfunction read(buf, options) {\n\tif (typeof (buf) === 'string') {\n\t\tbuf = Buffer.from(buf, 'binary');\n\t}\n\tassert.buffer(buf, 'buf');\n\n\tvar der = new asn1.BerReader(buf);\n\n\tder.readSequence();\n\tif (Math.abs(der.length - der.remain) > 1) {\n\t\tthrow (new Error('DER sequence does not contain whole byte ' +\n\t\t 'stream'));\n\t}\n\n\tvar tbsStart = der.offset;\n\tder.readSequence();\n\tvar sigOffset = der.offset + der.length;\n\tvar tbsEnd = sigOffset;\n\n\tif (der.peek() === Local(0)) {\n\t\tder.readSequence(Local(0));\n\t\tvar version = der.readInt();\n\t\tassert.ok(version <= 3,\n\t\t 'only x.509 versions up to v3 supported');\n\t}\n\n\tvar cert = {};\n\tcert.signatures = {};\n\tvar sig = (cert.signatures.x509 = {});\n\tsig.extras = {};\n\n\tcert.serial = readMPInt(der, 'serial');\n\n\tder.readSequence();\n\tvar after = der.offset + der.length;\n\tvar certAlgOid = der.readOID();\n\tvar certAlg = SIGN_ALGS[certAlgOid];\n\tif (certAlg === undefined)\n\t\tthrow (new Error('unknown signature algorithm ' + certAlgOid));\n\n\tder._offset = after;\n\tcert.issuer = Identity.parseAsn1(der);\n\n\tder.readSequence();\n\tcert.validFrom = readDate(der);\n\tcert.validUntil = readDate(der);\n\n\tcert.subjects = [Identity.parseAsn1(der)];\n\n\tder.readSequence();\n\tafter = der.offset + der.length;\n\tcert.subjectKey = pkcs8.readPkcs8(undefined, 'public', der);\n\tder._offset = after;\n\n\t/* issuerUniqueID */\n\tif (der.peek() === Local(1)) {\n\t\tder.readSequence(Local(1));\n\t\tsig.extras.issuerUniqueID =\n\t\t buf.slice(der.offset, der.offset + der.length);\n\t\tder._offset += der.length;\n\t}\n\n\t/* subjectUniqueID */\n\tif (der.peek() === Local(2)) {\n\t\tder.readSequence(Local(2));\n\t\tsig.extras.subjectUniqueID =\n\t\t buf.slice(der.offset, der.offset + der.length);\n\t\tder._offset += der.length;\n\t}\n\n\t/* extensions */\n\tif (der.peek() === Local(3)) {\n\t\tder.readSequence(Local(3));\n\t\tvar extEnd = der.offset + der.length;\n\t\tder.readSequence();\n\n\t\twhile (der.offset < extEnd)\n\t\t\treadExtension(cert, buf, der);\n\n\t\tassert.strictEqual(der.offset, extEnd);\n\t}\n\n\tassert.strictEqual(der.offset, sigOffset);\n\n\tder.readSequence();\n\tafter = der.offset + der.length;\n\tvar sigAlgOid = der.readOID();\n\tvar sigAlg = SIGN_ALGS[sigAlgOid];\n\tif (sigAlg === undefined)\n\t\tthrow (new Error('unknown signature algorithm ' + sigAlgOid));\n\tder._offset = after;\n\n\tvar sigData = der.readString(asn1.Ber.BitString, true);\n\tif (sigData[0] === 0)\n\t\tsigData = sigData.slice(1);\n\tvar algParts = sigAlg.split('-');\n\n\tsig.signature = Signature.parse(sigData, algParts[0], 'asn1');\n\tsig.signature.hashAlgorithm = algParts[1];\n\tsig.algo = sigAlg;\n\tsig.cache = buf.slice(tbsStart, tbsEnd);\n\n\treturn (new Certificate(cert));\n}\n\nfunction readDate(der) {\n\tif (der.peek() === asn1.Ber.UTCTime) {\n\t\treturn (utcTimeToDate(der.readString(asn1.Ber.UTCTime)));\n\t} else if (der.peek() === asn1.Ber.GeneralizedTime) {\n\t\treturn (gTimeToDate(der.readString(asn1.Ber.GeneralizedTime)));\n\t} else {\n\t\tthrow (new Error('Unsupported date format'));\n\t}\n}\n\nfunction writeDate(der, date) {\n\tif (date.getUTCFullYear() >= 2050 || date.getUTCFullYear() < 1950) {\n\t\tder.writeString(dateToGTime(date), asn1.Ber.GeneralizedTime);\n\t} else {\n\t\tder.writeString(dateToUTCTime(date), asn1.Ber.UTCTime);\n\t}\n}\n\n/* RFC5280, section 4.2.1.6 (GeneralName type) */\nvar ALTNAME = {\n\tOtherName: Local(0),\n\tRFC822Name: Context(1),\n\tDNSName: Context(2),\n\tX400Address: Local(3),\n\tDirectoryName: Local(4),\n\tEDIPartyName: Local(5),\n\tURI: Context(6),\n\tIPAddress: Context(7),\n\tOID: Context(8)\n};\n\n/* RFC5280, section 4.2.1.12 (KeyPurposeId) */\nvar EXTPURPOSE = {\n\t'serverAuth': '1.3.6.1.5.5.7.3.1',\n\t'clientAuth': '1.3.6.1.5.5.7.3.2',\n\t'codeSigning': '1.3.6.1.5.5.7.3.3',\n\n\t/* See https://github.com/joyent/oid-docs/blob/master/root.md */\n\t'joyentDocker': '1.3.6.1.4.1.38678.1.4.1',\n\t'joyentCmon': '1.3.6.1.4.1.38678.1.4.2'\n};\nvar EXTPURPOSE_REV = {};\nObject.keys(EXTPURPOSE).forEach(function (k) {\n\tEXTPURPOSE_REV[EXTPURPOSE[k]] = k;\n});\n\nvar KEYUSEBITS = [\n\t'signature', 'identity', 'keyEncryption',\n\t'encryption', 'keyAgreement', 'ca', 'crl'\n];\n\nfunction readExtension(cert, buf, der) {\n\tder.readSequence();\n\tvar after = der.offset + der.length;\n\tvar extId = der.readOID();\n\tvar id;\n\tvar sig = cert.signatures.x509;\n\tif (!sig.extras.exts)\n\t\tsig.extras.exts = [];\n\n\tvar critical;\n\tif (der.peek() === asn1.Ber.Boolean)\n\t\tcritical = der.readBoolean();\n\n\tswitch (extId) {\n\tcase (EXTS.basicConstraints):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tvar bcEnd = der.offset + der.length;\n\t\tvar ca = false;\n\t\tif (der.peek() === asn1.Ber.Boolean)\n\t\t\tca = der.readBoolean();\n\t\tif (cert.purposes === undefined)\n\t\t\tcert.purposes = [];\n\t\tif (ca === true)\n\t\t\tcert.purposes.push('ca');\n\t\tvar bc = { oid: extId, critical: critical };\n\t\tif (der.offset < bcEnd && der.peek() === asn1.Ber.Integer)\n\t\t\tbc.pathLen = der.readInt();\n\t\tsig.extras.exts.push(bc);\n\t\tbreak;\n\tcase (EXTS.extKeyUsage):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tif (cert.purposes === undefined)\n\t\t\tcert.purposes = [];\n\t\tvar ekEnd = der.offset + der.length;\n\t\twhile (der.offset < ekEnd) {\n\t\t\tvar oid = der.readOID();\n\t\t\tcert.purposes.push(EXTPURPOSE_REV[oid] || oid);\n\t\t}\n\t\t/*\n\t\t * This is a bit of a hack: in the case where we have a cert\n\t\t * that's only allowed to do serverAuth or clientAuth (and not\n\t\t * the other), we want to make sure all our Subjects are of\n\t\t * the right type. But we already parsed our Subjects and\n\t\t * decided if they were hosts or users earlier (since it appears\n\t\t * first in the cert).\n\t\t *\n\t\t * So we go through and mutate them into the right kind here if\n\t\t * it doesn't match. This might not be hugely beneficial, as it\n\t\t * seems that single-purpose certs are not often seen in the\n\t\t * wild.\n\t\t */\n\t\tif (cert.purposes.indexOf('serverAuth') !== -1 &&\n\t\t cert.purposes.indexOf('clientAuth') === -1) {\n\t\t\tcert.subjects.forEach(function (ide) {\n\t\t\t\tif (ide.type !== 'host') {\n\t\t\t\t\tide.type = 'host';\n\t\t\t\t\tide.hostname = ide.uid ||\n\t\t\t\t\t ide.email ||\n\t\t\t\t\t ide.components[0].value;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (cert.purposes.indexOf('clientAuth') !== -1 &&\n\t\t cert.purposes.indexOf('serverAuth') === -1) {\n\t\t\tcert.subjects.forEach(function (ide) {\n\t\t\t\tif (ide.type !== 'user') {\n\t\t\t\t\tide.type = 'user';\n\t\t\t\t\tide.uid = ide.hostname ||\n\t\t\t\t\t ide.email ||\n\t\t\t\t\t ide.components[0].value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tsig.extras.exts.push({ oid: extId, critical: critical });\n\t\tbreak;\n\tcase (EXTS.keyUsage):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tvar bits = der.readString(asn1.Ber.BitString, true);\n\t\tvar setBits = readBitField(bits, KEYUSEBITS);\n\t\tsetBits.forEach(function (bit) {\n\t\t\tif (cert.purposes === undefined)\n\t\t\t\tcert.purposes = [];\n\t\t\tif (cert.purposes.indexOf(bit) === -1)\n\t\t\t\tcert.purposes.push(bit);\n\t\t});\n\t\tsig.extras.exts.push({ oid: extId, critical: critical,\n\t\t bits: bits });\n\t\tbreak;\n\tcase (EXTS.altName):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tvar aeEnd = der.offset + der.length;\n\t\twhile (der.offset < aeEnd) {\n\t\t\tswitch (der.peek()) {\n\t\t\tcase ALTNAME.OtherName:\n\t\t\tcase ALTNAME.EDIPartyName:\n\t\t\t\tder.readSequence();\n\t\t\t\tder._offset += der.length;\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.OID:\n\t\t\t\tder.readOID(ALTNAME.OID);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.RFC822Name:\n\t\t\t\t/* RFC822 specifies email addresses */\n\t\t\t\tvar email = der.readString(ALTNAME.RFC822Name);\n\t\t\t\tid = Identity.forEmail(email);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.DirectoryName:\n\t\t\t\tder.readSequence(ALTNAME.DirectoryName);\n\t\t\t\tid = Identity.parseAsn1(der);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.DNSName:\n\t\t\t\tvar host = der.readString(\n\t\t\t\t ALTNAME.DNSName);\n\t\t\t\tid = Identity.forHost(host);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tder.readString(der.peek());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tsig.extras.exts.push({ oid: extId, critical: critical });\n\t\tbreak;\n\tdefault:\n\t\tsig.extras.exts.push({\n\t\t\toid: extId,\n\t\t\tcritical: critical,\n\t\t\tdata: der.readString(asn1.Ber.OctetString, true)\n\t\t});\n\t\tbreak;\n\t}\n\n\tder._offset = after;\n}\n\nvar UTCTIME_RE =\n /^([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;\nfunction utcTimeToDate(t) {\n\tvar m = t.match(UTCTIME_RE);\n\tassert.ok(m, 'timestamps must be in UTC');\n\tvar d = new Date();\n\n\tvar thisYear = d.getUTCFullYear();\n\tvar century = Math.floor(thisYear / 100) * 100;\n\n\tvar year = parseInt(m[1], 10);\n\tif (thisYear % 100 < 50 && year >= 60)\n\t\tyear += (century - 1);\n\telse\n\t\tyear += century;\n\td.setUTCFullYear(year, parseInt(m[2], 10) - 1, parseInt(m[3], 10));\n\td.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10));\n\tif (m[6] && m[6].length > 0)\n\t\td.setUTCSeconds(parseInt(m[6], 10));\n\treturn (d);\n}\n\nvar GTIME_RE =\n /^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;\nfunction gTimeToDate(t) {\n\tvar m = t.match(GTIME_RE);\n\tassert.ok(m);\n\tvar d = new Date();\n\n\td.setUTCFullYear(parseInt(m[1], 10), parseInt(m[2], 10) - 1,\n\t parseInt(m[3], 10));\n\td.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10));\n\tif (m[6] && m[6].length > 0)\n\t\td.setUTCSeconds(parseInt(m[6], 10));\n\treturn (d);\n}\n\nfunction zeroPad(n, m) {\n\tif (m === undefined)\n\t\tm = 2;\n\tvar s = '' + n;\n\twhile (s.length < m)\n\t\ts = '0' + s;\n\treturn (s);\n}\n\nfunction dateToUTCTime(d) {\n\tvar s = '';\n\ts += zeroPad(d.getUTCFullYear() % 100);\n\ts += zeroPad(d.getUTCMonth() + 1);\n\ts += zeroPad(d.getUTCDate());\n\ts += zeroPad(d.getUTCHours());\n\ts += zeroPad(d.getUTCMinutes());\n\ts += zeroPad(d.getUTCSeconds());\n\ts += 'Z';\n\treturn (s);\n}\n\nfunction dateToGTime(d) {\n\tvar s = '';\n\ts += zeroPad(d.getUTCFullYear(), 4);\n\ts += zeroPad(d.getUTCMonth() + 1);\n\ts += zeroPad(d.getUTCDate());\n\ts += zeroPad(d.getUTCHours());\n\ts += zeroPad(d.getUTCMinutes());\n\ts += zeroPad(d.getUTCSeconds());\n\ts += 'Z';\n\treturn (s);\n}\n\nfunction sign(cert, key) {\n\tif (cert.signatures.x509 === undefined)\n\t\tcert.signatures.x509 = {};\n\tvar sig = cert.signatures.x509;\n\n\tsig.algo = key.type + '-' + key.defaultHashAlgorithm();\n\tif (SIGN_ALGS[sig.algo] === undefined)\n\t\treturn (false);\n\n\tvar der = new asn1.BerWriter();\n\twriteTBSCert(cert, der);\n\tvar blob = der.buffer;\n\tsig.cache = blob;\n\n\tvar signer = key.createSign();\n\tsigner.write(blob);\n\tcert.signatures.x509.signature = signer.sign();\n\n\treturn (true);\n}\n\nfunction signAsync(cert, signer, done) {\n\tif (cert.signatures.x509 === undefined)\n\t\tcert.signatures.x509 = {};\n\tvar sig = cert.signatures.x509;\n\n\tvar der = new asn1.BerWriter();\n\twriteTBSCert(cert, der);\n\tvar blob = der.buffer;\n\tsig.cache = blob;\n\n\tsigner(blob, function (err, signature) {\n\t\tif (err) {\n\t\t\tdone(err);\n\t\t\treturn;\n\t\t}\n\t\tsig.algo = signature.type + '-' + signature.hashAlgorithm;\n\t\tif (SIGN_ALGS[sig.algo] === undefined) {\n\t\t\tdone(new Error('Invalid signing algorithm \"' +\n\t\t\t sig.algo + '\"'));\n\t\t\treturn;\n\t\t}\n\t\tsig.signature = signature;\n\t\tdone();\n\t});\n}\n\nfunction write(cert, options) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tvar der = new asn1.BerWriter();\n\tder.startSequence();\n\tif (sig.cache) {\n\t\tder._ensure(sig.cache.length);\n\t\tsig.cache.copy(der._buf, der._offset);\n\t\tder._offset += sig.cache.length;\n\t} else {\n\t\twriteTBSCert(cert, der);\n\t}\n\n\tder.startSequence();\n\tder.writeOID(SIGN_ALGS[sig.algo]);\n\tif (sig.algo.match(/^rsa-/))\n\t\tder.writeNull();\n\tder.endSequence();\n\n\tvar sigData = sig.signature.toBuffer('asn1');\n\tvar data = Buffer.alloc(sigData.length + 1);\n\tdata[0] = 0;\n\tsigData.copy(data, 1);\n\tder.writeBuffer(data, asn1.Ber.BitString);\n\tder.endSequence();\n\n\treturn (der.buffer);\n}\n\nfunction writeTBSCert(cert, der) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tder.startSequence();\n\n\tder.startSequence(Local(0));\n\tder.writeInt(2);\n\tder.endSequence();\n\n\tder.writeBuffer(utils.mpNormalize(cert.serial), asn1.Ber.Integer);\n\n\tder.startSequence();\n\tder.writeOID(SIGN_ALGS[sig.algo]);\n\tif (sig.algo.match(/^rsa-/))\n\t\tder.writeNull();\n\tder.endSequence();\n\n\tcert.issuer.toAsn1(der);\n\n\tder.startSequence();\n\twriteDate(der, cert.validFrom);\n\twriteDate(der, cert.validUntil);\n\tder.endSequence();\n\n\tvar subject = cert.subjects[0];\n\tvar altNames = cert.subjects.slice(1);\n\tsubject.toAsn1(der);\n\n\tpkcs8.writePkcs8(der, cert.subjectKey);\n\n\tif (sig.extras && sig.extras.issuerUniqueID) {\n\t\tder.writeBuffer(sig.extras.issuerUniqueID, Local(1));\n\t}\n\n\tif (sig.extras && sig.extras.subjectUniqueID) {\n\t\tder.writeBuffer(sig.extras.subjectUniqueID, Local(2));\n\t}\n\n\tif (altNames.length > 0 || subject.type === 'host' ||\n\t (cert.purposes !== undefined && cert.purposes.length > 0) ||\n\t (sig.extras && sig.extras.exts)) {\n\t\tder.startSequence(Local(3));\n\t\tder.startSequence();\n\n\t\tvar exts = [];\n\t\tif (cert.purposes !== undefined && cert.purposes.length > 0) {\n\t\t\texts.push({\n\t\t\t\toid: EXTS.basicConstraints,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t\texts.push({\n\t\t\t\toid: EXTS.keyUsage,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t\texts.push({\n\t\t\t\toid: EXTS.extKeyUsage,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t}\n\t\texts.push({ oid: EXTS.altName });\n\t\tif (sig.extras && sig.extras.exts)\n\t\t\texts = sig.extras.exts;\n\n\t\tfor (var i = 0; i < exts.length; ++i) {\n\t\t\tder.startSequence();\n\t\t\tder.writeOID(exts[i].oid);\n\n\t\t\tif (exts[i].critical !== undefined)\n\t\t\t\tder.writeBoolean(exts[i].critical);\n\n\t\t\tif (exts[i].oid === EXTS.altName) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tif (subject.type === 'host') {\n\t\t\t\t\tder.writeString(subject.hostname,\n\t\t\t\t\t Context(2));\n\t\t\t\t}\n\t\t\t\tfor (var j = 0; j < altNames.length; ++j) {\n\t\t\t\t\tif (altNames[j].type === 'host') {\n\t\t\t\t\t\tder.writeString(\n\t\t\t\t\t\t altNames[j].hostname,\n\t\t\t\t\t\t ALTNAME.DNSName);\n\t\t\t\t\t} else if (altNames[j].type ===\n\t\t\t\t\t 'email') {\n\t\t\t\t\t\tder.writeString(\n\t\t\t\t\t\t altNames[j].email,\n\t\t\t\t\t\t ALTNAME.RFC822Name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Encode anything else as a\n\t\t\t\t\t\t * DN style name for now.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tder.startSequence(\n\t\t\t\t\t\t ALTNAME.DirectoryName);\n\t\t\t\t\t\taltNames[j].toAsn1(der);\n\t\t\t\t\t\tder.endSequence();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.basicConstraints) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tvar ca = (cert.purposes.indexOf('ca') !== -1);\n\t\t\t\tvar pathLen = exts[i].pathLen;\n\t\t\t\tder.writeBoolean(ca);\n\t\t\t\tif (pathLen !== undefined)\n\t\t\t\t\tder.writeInt(pathLen);\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.extKeyUsage) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tcert.purposes.forEach(function (purpose) {\n\t\t\t\t\tif (purpose === 'ca')\n\t\t\t\t\t\treturn;\n\t\t\t\t\tif (KEYUSEBITS.indexOf(purpose) !== -1)\n\t\t\t\t\t\treturn;\n\t\t\t\t\tvar oid = purpose;\n\t\t\t\t\tif (EXTPURPOSE[purpose] !== undefined)\n\t\t\t\t\t\toid = EXTPURPOSE[purpose];\n\t\t\t\t\tder.writeOID(oid);\n\t\t\t\t});\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.keyUsage) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\t/*\n\t\t\t\t * If we parsed this certificate from a byte\n\t\t\t\t * stream (i.e. we didn't generate it in sshpk)\n\t\t\t\t * then we'll have a \".bits\" property on the\n\t\t\t\t * ext with the original raw byte contents.\n\t\t\t\t *\n\t\t\t\t * If we have this, use it here instead of\n\t\t\t\t * regenerating it. This guarantees we output\n\t\t\t\t * the same data we parsed, so signatures still\n\t\t\t\t * validate.\n\t\t\t\t */\n\t\t\t\tif (exts[i].bits !== undefined) {\n\t\t\t\t\tder.writeBuffer(exts[i].bits,\n\t\t\t\t\t asn1.Ber.BitString);\n\t\t\t\t} else {\n\t\t\t\t\tvar bits = writeBitField(cert.purposes,\n\t\t\t\t\t KEYUSEBITS);\n\t\t\t\t\tder.writeBuffer(bits,\n\t\t\t\t\t asn1.Ber.BitString);\n\t\t\t\t}\n\t\t\t\tder.endSequence();\n\t\t\t} else {\n\t\t\t\tder.writeBuffer(exts[i].data,\n\t\t\t\t asn1.Ber.OctetString);\n\t\t\t}\n\n\t\t\tder.endSequence();\n\t\t}\n\n\t\tder.endSequence();\n\t\tder.endSequence();\n\t}\n\n\tder.endSequence();\n}\n\n/*\n * Reads an ASN.1 BER bitfield out of the Buffer produced by doing\n * `BerReader#readString(asn1.Ber.BitString)`. That function gives us the raw\n * contents of the BitString tag, which is a count of unused bits followed by\n * the bits as a right-padded byte string.\n *\n * `bits` is the Buffer, `bitIndex` should contain an array of string names\n * for the bits in the string, ordered starting with bit #0 in the ASN.1 spec.\n *\n * Returns an array of Strings, the names of the bits that were set to 1.\n */\nfunction readBitField(bits, bitIndex) {\n\tvar bitLen = 8 * (bits.length - 1) - bits[0];\n\tvar setBits = {};\n\tfor (var i = 0; i < bitLen; ++i) {\n\t\tvar byteN = 1 + Math.floor(i / 8);\n\t\tvar bit = 7 - (i % 8);\n\t\tvar mask = 1 << bit;\n\t\tvar bitVal = ((bits[byteN] & mask) !== 0);\n\t\tvar name = bitIndex[i];\n\t\tif (bitVal && typeof (name) === 'string') {\n\t\t\tsetBits[name] = true;\n\t\t}\n\t}\n\treturn (Object.keys(setBits));\n}\n\n/*\n * `setBits` is an array of strings, containing the names for each bit that\n * sould be set to 1. `bitIndex` is same as in `readBitField()`.\n *\n * Returns a Buffer, ready to be written out with `BerWriter#writeString()`.\n */\nfunction writeBitField(setBits, bitIndex) {\n\tvar bitLen = bitIndex.length;\n\tvar blen = Math.ceil(bitLen / 8);\n\tvar unused = blen * 8 - bitLen;\n\tvar bits = Buffer.alloc(1 + blen); // zero-filled\n\tbits[0] = unused;\n\tfor (var i = 0; i < bitLen; ++i) {\n\t\tvar byteN = 1 + Math.floor(i / 8);\n\t\tvar bit = 7 - (i % 8);\n\t\tvar mask = 1 << bit;\n\t\tvar name = bitIndex[i];\n\t\tif (name === undefined)\n\t\t\tcontinue;\n\t\tvar bitVal = (setBits.indexOf(name) !== -1);\n\t\tif (bitVal) {\n\t\t\tbits[byteN] |= mask;\n\t\t}\n\t}\n\treturn (bits);\n}\n", "// Copyright 2016 Joyent, Inc.\n\nvar x509 = require('./x509');\n\nmodule.exports = {\n\tread: read,\n\tverify: x509.verify,\n\tsign: x509.sign,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar Identity = require('../identity');\nvar Signature = require('../signature');\nvar Certificate = require('../certificate');\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar lines = buf.trim().split(/[\\r\\n]+/g);\n\n\tvar m;\n\tvar si = -1;\n\twhile (!m && si < lines.length) {\n\t\tm = lines[++si].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/);\n\t}\n\tassert.ok(m, 'invalid PEM header');\n\n\tvar m2;\n\tvar ei = lines.length;\n\twhile (!m2 && ei > 0) {\n\t\tm2 = lines[--ei].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*END CERTIFICATE[ ]*[-]+/);\n\t}\n\tassert.ok(m2, 'invalid PEM footer');\n\n\tlines = lines.slice(si, ei + 1);\n\n\tvar headers = {};\n\twhile (true) {\n\t\tlines = lines.slice(1);\n\t\tm = lines[0].match(/*JSSTYLED*/\n\t\t /^([A-Za-z0-9-]+): (.+)$/);\n\t\tif (!m)\n\t\t\tbreak;\n\t\theaders[m[1].toLowerCase()] = m[2];\n\t}\n\n\t/* Chop off the first and last lines */\n\tlines = lines.slice(0, -1).join('');\n\tbuf = Buffer.from(lines, 'base64');\n\n\treturn (x509.read(buf, options));\n}\n\nfunction write(cert, options) {\n\tvar dbuf = x509.write(cert, options);\n\n\tvar header = 'CERTIFICATE';\n\tvar tmp = dbuf.toString('base64');\n\tvar len = tmp.length + (tmp.length / 64) +\n\t 18 + 16 + header.length*2 + 10;\n\tvar buf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 64;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n", "// Copyright 2016 Joyent, Inc.\n\nmodule.exports = Certificate;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\nvar Identity = require('./identity');\n\nvar formats = {};\nformats['openssh'] = require('./formats/openssh-cert');\nformats['x509'] = require('./formats/x509');\nformats['pem'] = require('./formats/x509-pem');\n\nvar CertificateParseError = errs.CertificateParseError;\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\n\nfunction Certificate(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.subjects, 'options.subjects');\n\tutils.assertCompatible(opts.subjects[0], Identity, [1, 0],\n\t 'options.subjects');\n\tutils.assertCompatible(opts.subjectKey, Key, [1, 0],\n\t 'options.subjectKey');\n\tutils.assertCompatible(opts.issuer, Identity, [1, 0], 'options.issuer');\n\tif (opts.issuerKey !== undefined) {\n\t\tutils.assertCompatible(opts.issuerKey, Key, [1, 0],\n\t\t 'options.issuerKey');\n\t}\n\tassert.object(opts.signatures, 'options.signatures');\n\tassert.buffer(opts.serial, 'options.serial');\n\tassert.date(opts.validFrom, 'options.validFrom');\n\tassert.date(opts.validUntil, 'optons.validUntil');\n\n\tassert.optionalArrayOfString(opts.purposes, 'options.purposes');\n\n\tthis._hashCache = {};\n\n\tthis.subjects = opts.subjects;\n\tthis.issuer = opts.issuer;\n\tthis.subjectKey = opts.subjectKey;\n\tthis.issuerKey = opts.issuerKey;\n\tthis.signatures = opts.signatures;\n\tthis.serial = opts.serial;\n\tthis.validFrom = opts.validFrom;\n\tthis.validUntil = opts.validUntil;\n\tthis.purposes = opts.purposes;\n}\n\nCertificate.formats = formats;\n\nCertificate.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'x509';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\treturn (formats[format].write(this, options));\n};\n\nCertificate.prototype.toString = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'pem';\n\treturn (this.toBuffer(format, options).toString());\n};\n\nCertificate.prototype.fingerprint = function (algo) {\n\tif (algo === undefined)\n\t\talgo = 'sha256';\n\tassert.string(algo, 'algorithm');\n\tvar opts = {\n\t\ttype: 'certificate',\n\t\thash: this.hash(algo),\n\t\talgorithm: algo\n\t};\n\treturn (new Fingerprint(opts));\n};\n\nCertificate.prototype.hash = function (algo) {\n\tassert.string(algo, 'algorithm');\n\talgo = algo.toLowerCase();\n\tif (algs.hashAlgs[algo] === undefined)\n\t\tthrow (new InvalidAlgorithmError(algo));\n\n\tif (this._hashCache[algo])\n\t\treturn (this._hashCache[algo]);\n\n\tvar hash = crypto.createHash(algo).\n\t update(this.toBuffer('x509')).digest();\n\tthis._hashCache[algo] = hash;\n\treturn (hash);\n};\n\nCertificate.prototype.isExpired = function (when) {\n\tif (when === undefined)\n\t\twhen = new Date();\n\treturn (!((when.getTime() >= this.validFrom.getTime()) &&\n\t\t(when.getTime() < this.validUntil.getTime())));\n};\n\nCertificate.prototype.isSignedBy = function (issuerCert) {\n\tutils.assertCompatible(issuerCert, Certificate, [1, 0], 'issuer');\n\n\tif (!this.issuer.equals(issuerCert.subjects[0]))\n\t\treturn (false);\n\tif (this.issuer.purposes && this.issuer.purposes.length > 0 &&\n\t this.issuer.purposes.indexOf('ca') === -1) {\n\t\treturn (false);\n\t}\n\n\treturn (this.isSignedByKey(issuerCert.subjectKey));\n};\n\nCertificate.prototype.getExtension = function (keyOrOid) {\n\tassert.string(keyOrOid, 'keyOrOid');\n\tvar ext = this.getExtensions().filter(function (maybeExt) {\n\t\tif (maybeExt.format === 'x509')\n\t\t\treturn (maybeExt.oid === keyOrOid);\n\t\tif (maybeExt.format === 'openssh')\n\t\t\treturn (maybeExt.name === keyOrOid);\n\t\treturn (false);\n\t})[0];\n\treturn (ext);\n};\n\nCertificate.prototype.getExtensions = function () {\n\tvar exts = [];\n\tvar x509 = this.signatures.x509;\n\tif (x509 && x509.extras && x509.extras.exts) {\n\t\tx509.extras.exts.forEach(function (ext) {\n\t\t\text.format = 'x509';\n\t\t\texts.push(ext);\n\t\t});\n\t}\n\tvar openssh = this.signatures.openssh;\n\tif (openssh && openssh.exts) {\n\t\topenssh.exts.forEach(function (ext) {\n\t\t\text.format = 'openssh';\n\t\t\texts.push(ext);\n\t\t});\n\t}\n\treturn (exts);\n};\n\nCertificate.prototype.isSignedByKey = function (issuerKey) {\n\tutils.assertCompatible(issuerKey, Key, [1, 2], 'issuerKey');\n\n\tif (this.issuerKey !== undefined) {\n\t\treturn (this.issuerKey.\n\t\t fingerprint('sha512').matches(issuerKey));\n\t}\n\n\tvar fmt = Object.keys(this.signatures)[0];\n\tvar valid = formats[fmt].verify(this, issuerKey);\n\tif (valid)\n\t\tthis.issuerKey = issuerKey;\n\treturn (valid);\n};\n\nCertificate.prototype.signWith = function (key) {\n\tutils.assertCompatible(key, PrivateKey, [1, 2], 'key');\n\tvar fmts = Object.keys(formats);\n\tvar didOne = false;\n\tfor (var i = 0; i < fmts.length; ++i) {\n\t\tif (fmts[i] !== 'pem') {\n\t\t\tvar ret = formats[fmts[i]].sign(this, key);\n\t\t\tif (ret === true)\n\t\t\t\tdidOne = true;\n\t\t}\n\t}\n\tif (!didOne) {\n\t\tthrow (new Error('Failed to sign the certificate for any ' +\n\t\t 'available certificate formats'));\n\t}\n};\n\nCertificate.createSelfSigned = function (subjectOrSubjects, key, options) {\n\tvar subjects;\n\tif (Array.isArray(subjectOrSubjects))\n\t\tsubjects = subjectOrSubjects;\n\telse\n\t\tsubjects = [subjectOrSubjects];\n\n\tassert.arrayOfObject(subjects);\n\tsubjects.forEach(function (subject) {\n\t\tutils.assertCompatible(subject, Identity, [1, 0], 'subject');\n\t});\n\n\tutils.assertCompatible(key, PrivateKey, [1, 2], 'private key');\n\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalObject(options.validFrom, 'options.validFrom');\n\tassert.optionalObject(options.validUntil, 'options.validUntil');\n\tvar validFrom = options.validFrom;\n\tvar validUntil = options.validUntil;\n\tif (validFrom === undefined)\n\t\tvalidFrom = new Date();\n\tif (validUntil === undefined) {\n\t\tassert.optionalNumber(options.lifetime, 'options.lifetime');\n\t\tvar lifetime = options.lifetime;\n\t\tif (lifetime === undefined)\n\t\t\tlifetime = 10*365*24*3600;\n\t\tvalidUntil = new Date();\n\t\tvalidUntil.setTime(validUntil.getTime() + lifetime*1000);\n\t}\n\tassert.optionalBuffer(options.serial, 'options.serial');\n\tvar serial = options.serial;\n\tif (serial === undefined)\n\t\tserial = Buffer.from('0000000000000001', 'hex');\n\n\tvar purposes = options.purposes;\n\tif (purposes === undefined)\n\t\tpurposes = [];\n\n\tif (purposes.indexOf('signature') === -1)\n\t\tpurposes.push('signature');\n\n\t/* Self-signed certs are always CAs. */\n\tif (purposes.indexOf('ca') === -1)\n\t\tpurposes.push('ca');\n\tif (purposes.indexOf('crl') === -1)\n\t\tpurposes.push('crl');\n\n\t/*\n\t * If we weren't explicitly given any other purposes, do the sensible\n\t * thing and add some basic ones depending on the subject type.\n\t */\n\tif (purposes.length <= 3) {\n\t\tvar hostSubjects = subjects.filter(function (subject) {\n\t\t\treturn (subject.type === 'host');\n\t\t});\n\t\tvar userSubjects = subjects.filter(function (subject) {\n\t\t\treturn (subject.type === 'user');\n\t\t});\n\t\tif (hostSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('serverAuth') === -1)\n\t\t\t\tpurposes.push('serverAuth');\n\t\t}\n\t\tif (userSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('clientAuth') === -1)\n\t\t\t\tpurposes.push('clientAuth');\n\t\t}\n\t\tif (userSubjects.length > 0 || hostSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('keyAgreement') === -1)\n\t\t\t\tpurposes.push('keyAgreement');\n\t\t\tif (key.type === 'rsa' &&\n\t\t\t purposes.indexOf('encryption') === -1)\n\t\t\t\tpurposes.push('encryption');\n\t\t}\n\t}\n\n\tvar cert = new Certificate({\n\t\tsubjects: subjects,\n\t\tissuer: subjects[0],\n\t\tsubjectKey: key.toPublic(),\n\t\tissuerKey: key.toPublic(),\n\t\tsignatures: {},\n\t\tserial: serial,\n\t\tvalidFrom: validFrom,\n\t\tvalidUntil: validUntil,\n\t\tpurposes: purposes\n\t});\n\tcert.signWith(key);\n\n\treturn (cert);\n};\n\nCertificate.create =\n function (subjectOrSubjects, key, issuer, issuerKey, options) {\n\tvar subjects;\n\tif (Array.isArray(subjectOrSubjects))\n\t\tsubjects = subjectOrSubjects;\n\telse\n\t\tsubjects = [subjectOrSubjects];\n\n\tassert.arrayOfObject(subjects);\n\tsubjects.forEach(function (subject) {\n\t\tutils.assertCompatible(subject, Identity, [1, 0], 'subject');\n\t});\n\n\tutils.assertCompatible(key, Key, [1, 0], 'key');\n\tif (PrivateKey.isPrivateKey(key))\n\t\tkey = key.toPublic();\n\tutils.assertCompatible(issuer, Identity, [1, 0], 'issuer');\n\tutils.assertCompatible(issuerKey, PrivateKey, [1, 2], 'issuer key');\n\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalObject(options.validFrom, 'options.validFrom');\n\tassert.optionalObject(options.validUntil, 'options.validUntil');\n\tvar validFrom = options.validFrom;\n\tvar validUntil = options.validUntil;\n\tif (validFrom === undefined)\n\t\tvalidFrom = new Date();\n\tif (validUntil === undefined) {\n\t\tassert.optionalNumber(options.lifetime, 'options.lifetime');\n\t\tvar lifetime = options.lifetime;\n\t\tif (lifetime === undefined)\n\t\t\tlifetime = 10*365*24*3600;\n\t\tvalidUntil = new Date();\n\t\tvalidUntil.setTime(validUntil.getTime() + lifetime*1000);\n\t}\n\tassert.optionalBuffer(options.serial, 'options.serial');\n\tvar serial = options.serial;\n\tif (serial === undefined)\n\t\tserial = Buffer.from('0000000000000001', 'hex');\n\n\tvar purposes = options.purposes;\n\tif (purposes === undefined)\n\t\tpurposes = [];\n\n\tif (purposes.indexOf('signature') === -1)\n\t\tpurposes.push('signature');\n\n\tif (options.ca === true) {\n\t\tif (purposes.indexOf('ca') === -1)\n\t\t\tpurposes.push('ca');\n\t\tif (purposes.indexOf('crl') === -1)\n\t\t\tpurposes.push('crl');\n\t}\n\n\tvar hostSubjects = subjects.filter(function (subject) {\n\t\treturn (subject.type === 'host');\n\t});\n\tvar userSubjects = subjects.filter(function (subject) {\n\t\treturn (subject.type === 'user');\n\t});\n\tif (hostSubjects.length > 0) {\n\t\tif (purposes.indexOf('serverAuth') === -1)\n\t\t\tpurposes.push('serverAuth');\n\t}\n\tif (userSubjects.length > 0) {\n\t\tif (purposes.indexOf('clientAuth') === -1)\n\t\t\tpurposes.push('clientAuth');\n\t}\n\tif (userSubjects.length > 0 || hostSubjects.length > 0) {\n\t\tif (purposes.indexOf('keyAgreement') === -1)\n\t\t\tpurposes.push('keyAgreement');\n\t\tif (key.type === 'rsa' &&\n\t\t purposes.indexOf('encryption') === -1)\n\t\t\tpurposes.push('encryption');\n\t}\n\n\tvar cert = new Certificate({\n\t\tsubjects: subjects,\n\t\tissuer: issuer,\n\t\tsubjectKey: key,\n\t\tissuerKey: issuerKey.toPublic(),\n\t\tsignatures: {},\n\t\tserial: serial,\n\t\tvalidFrom: validFrom,\n\t\tvalidUntil: validUntil,\n\t\tpurposes: purposes\n\t});\n\tcert.signWith(issuerKey);\n\n\treturn (cert);\n};\n\nCertificate.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\treturn (k);\n\t} catch (e) {\n\t\tthrow (new CertificateParseError(options.filename, format, e));\n\t}\n};\n\nCertificate.isCertificate = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Certificate, ver));\n};\n\n/*\n * API versions for Certificate:\n * [1,0] -- initial ver\n * [1,1] -- openssh format now unpacks extensions\n */\nCertificate.prototype._sshpkApiVersion = [1, 1];\n\nCertificate._oldVersionDetect = function (obj) {\n\treturn ([1, 0]);\n};\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = Fingerprint;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar errs = require('./errors');\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\nvar Certificate = require('./certificate');\nvar utils = require('./utils');\n\nvar FingerprintFormatError = errs.FingerprintFormatError;\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\n\nfunction Fingerprint(opts) {\n\tassert.object(opts, 'options');\n\tassert.string(opts.type, 'options.type');\n\tassert.buffer(opts.hash, 'options.hash');\n\tassert.string(opts.algorithm, 'options.algorithm');\n\n\tthis.algorithm = opts.algorithm.toLowerCase();\n\tif (algs.hashAlgs[this.algorithm] !== true)\n\t\tthrow (new InvalidAlgorithmError(this.algorithm));\n\n\tthis.hash = opts.hash;\n\tthis.type = opts.type;\n\tthis.hashType = opts.hashType;\n}\n\nFingerprint.prototype.toString = function (format) {\n\tif (format === undefined) {\n\t\tif (this.algorithm === 'md5' || this.hashType === 'spki')\n\t\t\tformat = 'hex';\n\t\telse\n\t\t\tformat = 'base64';\n\t}\n\tassert.string(format);\n\n\tswitch (format) {\n\tcase 'hex':\n\t\tif (this.hashType === 'spki')\n\t\t\treturn (this.hash.toString('hex'));\n\t\treturn (addColons(this.hash.toString('hex')));\n\tcase 'base64':\n\t\tif (this.hashType === 'spki')\n\t\t\treturn (this.hash.toString('base64'));\n\t\treturn (sshBase64Format(this.algorithm,\n\t\t this.hash.toString('base64')));\n\tdefault:\n\t\tthrow (new FingerprintFormatError(undefined, format));\n\t}\n};\n\nFingerprint.prototype.matches = function (other) {\n\tassert.object(other, 'key or certificate');\n\tif (this.type === 'key' && this.hashType !== 'ssh') {\n\t\tutils.assertCompatible(other, Key, [1, 7], 'key with spki');\n\t\tif (PrivateKey.isPrivateKey(other)) {\n\t\t\tutils.assertCompatible(other, PrivateKey, [1, 6],\n\t\t\t 'privatekey with spki support');\n\t\t}\n\t} else if (this.type === 'key') {\n\t\tutils.assertCompatible(other, Key, [1, 0], 'key');\n\t} else {\n\t\tutils.assertCompatible(other, Certificate, [1, 0],\n\t\t 'certificate');\n\t}\n\n\tvar theirHash = other.hash(this.algorithm, this.hashType);\n\tvar theirHash2 = crypto.createHash(this.algorithm).\n\t update(theirHash).digest('base64');\n\n\tif (this.hash2 === undefined)\n\t\tthis.hash2 = crypto.createHash(this.algorithm).\n\t\t update(this.hash).digest('base64');\n\n\treturn (this.hash2 === theirHash2);\n};\n\n/*JSSTYLED*/\nvar base64RE = /^[A-Za-z0-9+\\/=]+$/;\n/*JSSTYLED*/\nvar hexRE = /^[a-fA-F0-9]+$/;\n\nFingerprint.parse = function (fp, options) {\n\tassert.string(fp, 'fingerprint');\n\n\tvar alg, hash, enAlgs;\n\tif (Array.isArray(options)) {\n\t\tenAlgs = options;\n\t\toptions = {};\n\t}\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tif (options.enAlgs !== undefined)\n\t\tenAlgs = options.enAlgs;\n\tif (options.algorithms !== undefined)\n\t\tenAlgs = options.algorithms;\n\tassert.optionalArrayOfString(enAlgs, 'algorithms');\n\n\tvar hashType = 'ssh';\n\tif (options.hashType !== undefined)\n\t\thashType = options.hashType;\n\tassert.string(hashType, 'options.hashType');\n\n\tvar parts = fp.split(':');\n\tif (parts.length == 2) {\n\t\talg = parts[0].toLowerCase();\n\t\tif (!base64RE.test(parts[1]))\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\ttry {\n\t\t\thash = Buffer.from(parts[1], 'base64');\n\t\t} catch (e) {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\t} else if (parts.length > 2) {\n\t\talg = 'md5';\n\t\tif (parts[0].toLowerCase() === 'md5')\n\t\t\tparts = parts.slice(1);\n\t\tparts = parts.map(function (p) {\n\t\t\twhile (p.length < 2)\n\t\t\t\tp = '0' + p;\n\t\t\tif (p.length > 2)\n\t\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t\treturn (p);\n\t\t});\n\t\tparts = parts.join('');\n\t\tif (!hexRE.test(parts) || parts.length % 2 !== 0)\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\ttry {\n\t\t\thash = Buffer.from(parts, 'hex');\n\t\t} catch (e) {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\t} else {\n\t\tif (hexRE.test(fp)) {\n\t\t\thash = Buffer.from(fp, 'hex');\n\t\t} else if (base64RE.test(fp)) {\n\t\t\thash = Buffer.from(fp, 'base64');\n\t\t} else {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\n\t\tswitch (hash.length) {\n\t\tcase 32:\n\t\t\talg = 'sha256';\n\t\t\tbreak;\n\t\tcase 16:\n\t\t\talg = 'md5';\n\t\t\tbreak;\n\t\tcase 20:\n\t\t\talg = 'sha1';\n\t\t\tbreak;\n\t\tcase 64:\n\t\t\talg = 'sha512';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\n\t\t/* Plain hex/base64: guess it's probably SPKI unless told. */\n\t\tif (options.hashType === undefined)\n\t\t\thashType = 'spki';\n\t}\n\n\tif (alg === undefined)\n\t\tthrow (new FingerprintFormatError(fp));\n\n\tif (algs.hashAlgs[alg] === undefined)\n\t\tthrow (new InvalidAlgorithmError(alg));\n\n\tif (enAlgs !== undefined) {\n\t\tenAlgs = enAlgs.map(function (a) { return a.toLowerCase(); });\n\t\tif (enAlgs.indexOf(alg) === -1)\n\t\t\tthrow (new InvalidAlgorithmError(alg));\n\t}\n\n\treturn (new Fingerprint({\n\t\talgorithm: alg,\n\t\thash: hash,\n\t\ttype: options.type || 'key',\n\t\thashType: hashType\n\t}));\n};\n\nfunction addColons(s) {\n\t/*JSSTYLED*/\n\treturn (s.replace(/(.{2})(?=.)/g, '$1:'));\n}\n\nfunction base64Strip(s) {\n\t/*JSSTYLED*/\n\treturn (s.replace(/=*$/, ''));\n}\n\nfunction sshBase64Format(alg, h) {\n\treturn (alg.toUpperCase() + ':' + base64Strip(h));\n}\n\nFingerprint.isFingerprint = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Fingerprint, ver));\n};\n\n/*\n * API versions for Fingerprint:\n * [1,0] -- initial ver\n * [1,1] -- first tagged ver\n * [1,2] -- hashType and spki support\n */\nFingerprint.prototype._sshpkApiVersion = [1, 2];\n\nFingerprint._oldVersionDetect = function (obj) {\n\tassert.func(obj.toString);\n\tassert.func(obj.matches);\n\treturn ([1, 0]);\n};\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = Key;\n\nvar assert = require('assert-plus');\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar DiffieHellman = require('./dhe').DiffieHellman;\nvar errs = require('./errors');\nvar utils = require('./utils');\nvar PrivateKey = require('./private-key');\nvar edCompat;\n\ntry {\n\tedCompat = require('./ed-compat');\n} catch (e) {\n\t/* Just continue through, and bail out if we try to use it. */\n}\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar KeyParseError = errs.KeyParseError;\n\nvar formats = {};\nformats['auto'] = require('./formats/auto');\nformats['pem'] = require('./formats/pem');\nformats['pkcs1'] = require('./formats/pkcs1');\nformats['pkcs8'] = require('./formats/pkcs8');\nformats['rfc4253'] = require('./formats/rfc4253');\nformats['ssh'] = require('./formats/ssh');\nformats['ssh-private'] = require('./formats/ssh-private');\nformats['openssh'] = formats['ssh-private'];\nformats['dnssec'] = require('./formats/dnssec');\nformats['putty'] = require('./formats/putty');\nformats['ppk'] = formats['putty'];\n\nfunction Key(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.parts, 'options.parts');\n\tassert.string(opts.type, 'options.type');\n\tassert.optionalString(opts.comment, 'options.comment');\n\n\tvar algInfo = algs.info[opts.type];\n\tif (typeof (algInfo) !== 'object')\n\t\tthrow (new InvalidAlgorithmError(opts.type));\n\n\tvar partLookup = {};\n\tfor (var i = 0; i < opts.parts.length; ++i) {\n\t\tvar part = opts.parts[i];\n\t\tpartLookup[part.name] = part;\n\t}\n\n\tthis.type = opts.type;\n\tthis.parts = opts.parts;\n\tthis.part = partLookup;\n\tthis.comment = undefined;\n\tthis.source = opts.source;\n\n\t/* for speeding up hashing/fingerprint operations */\n\tthis._rfc4253Cache = opts._rfc4253Cache;\n\tthis._hashCache = {};\n\n\tvar sz;\n\tthis.curve = undefined;\n\tif (this.type === 'ecdsa') {\n\t\tvar curve = this.part.curve.data.toString();\n\t\tthis.curve = curve;\n\t\tsz = algs.curves[curve].size;\n\t} else if (this.type === 'ed25519' || this.type === 'curve25519') {\n\t\tsz = 256;\n\t\tthis.curve = 'curve25519';\n\t} else {\n\t\tvar szPart = this.part[algInfo.sizePart];\n\t\tsz = szPart.data.length;\n\t\tsz = sz * 8 - utils.countZeros(szPart.data);\n\t}\n\tthis.size = sz;\n}\n\nKey.formats = formats;\n\nKey.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'ssh';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\tif (format === 'rfc4253') {\n\t\tif (this._rfc4253Cache === undefined)\n\t\t\tthis._rfc4253Cache = formats['rfc4253'].write(this);\n\t\treturn (this._rfc4253Cache);\n\t}\n\n\treturn (formats[format].write(this, options));\n};\n\nKey.prototype.toString = function (format, options) {\n\treturn (this.toBuffer(format, options).toString());\n};\n\nKey.prototype.hash = function (algo, type) {\n\tassert.string(algo, 'algorithm');\n\tassert.optionalString(type, 'type');\n\tif (type === undefined)\n\t\ttype = 'ssh';\n\talgo = algo.toLowerCase();\n\tif (algs.hashAlgs[algo] === undefined)\n\t\tthrow (new InvalidAlgorithmError(algo));\n\n\tvar cacheKey = algo + '||' + type;\n\tif (this._hashCache[cacheKey])\n\t\treturn (this._hashCache[cacheKey]);\n\n\tvar buf;\n\tif (type === 'ssh') {\n\t\tbuf = this.toBuffer('rfc4253');\n\t} else if (type === 'spki') {\n\t\tbuf = formats.pkcs8.pkcs8ToBuffer(this);\n\t} else {\n\t\tthrow (new Error('Hash type ' + type + ' not supported'));\n\t}\n\tvar hash = crypto.createHash(algo).update(buf).digest();\n\tthis._hashCache[cacheKey] = hash;\n\treturn (hash);\n};\n\nKey.prototype.fingerprint = function (algo, type) {\n\tif (algo === undefined)\n\t\talgo = 'sha256';\n\tif (type === undefined)\n\t\ttype = 'ssh';\n\tassert.string(algo, 'algorithm');\n\tassert.string(type, 'type');\n\tvar opts = {\n\t\ttype: 'key',\n\t\thash: this.hash(algo, type),\n\t\talgorithm: algo,\n\t\thashType: type\n\t};\n\treturn (new Fingerprint(opts));\n};\n\nKey.prototype.defaultHashAlgorithm = function () {\n\tvar hashAlgo = 'sha1';\n\tif (this.type === 'rsa')\n\t\thashAlgo = 'sha256';\n\tif (this.type === 'dsa' && this.size > 1024)\n\t\thashAlgo = 'sha256';\n\tif (this.type === 'ed25519')\n\t\thashAlgo = 'sha512';\n\tif (this.type === 'ecdsa') {\n\t\tif (this.size <= 256)\n\t\t\thashAlgo = 'sha256';\n\t\telse if (this.size <= 384)\n\t\t\thashAlgo = 'sha384';\n\t\telse\n\t\t\thashAlgo = 'sha512';\n\t}\n\treturn (hashAlgo);\n};\n\nKey.prototype.createVerify = function (hashAlgo) {\n\tif (hashAlgo === undefined)\n\t\thashAlgo = this.defaultHashAlgorithm();\n\tassert.string(hashAlgo, 'hash algorithm');\n\n\t/* ED25519 is not supported by OpenSSL, use a javascript impl. */\n\tif (this.type === 'ed25519' && edCompat !== undefined)\n\t\treturn (new edCompat.Verifier(this, hashAlgo));\n\tif (this.type === 'curve25519')\n\t\tthrow (new Error('Curve25519 keys are not suitable for ' +\n\t\t 'signing or verification'));\n\n\tvar v, nm, err;\n\ttry {\n\t\tnm = hashAlgo.toUpperCase();\n\t\tv = crypto.createVerify(nm);\n\t} catch (e) {\n\t\terr = e;\n\t}\n\tif (v === undefined || (err instanceof Error &&\n\t err.message.match(/Unknown message digest/))) {\n\t\tnm = 'RSA-';\n\t\tnm += hashAlgo.toUpperCase();\n\t\tv = crypto.createVerify(nm);\n\t}\n\tassert.ok(v, 'failed to create verifier');\n\tvar oldVerify = v.verify.bind(v);\n\tvar key = this.toBuffer('pkcs8');\n\tvar curve = this.curve;\n\tvar self = this;\n\tv.verify = function (signature, fmt) {\n\t\tif (Signature.isSignature(signature, [2, 0])) {\n\t\t\tif (signature.type !== self.type)\n\t\t\t\treturn (false);\n\t\t\tif (signature.hashAlgorithm &&\n\t\t\t signature.hashAlgorithm !== hashAlgo)\n\t\t\t\treturn (false);\n\t\t\tif (signature.curve && self.type === 'ecdsa' &&\n\t\t\t signature.curve !== curve)\n\t\t\t\treturn (false);\n\t\t\treturn (oldVerify(key, signature.toBuffer('asn1')));\n\n\t\t} else if (typeof (signature) === 'string' ||\n\t\t Buffer.isBuffer(signature)) {\n\t\t\treturn (oldVerify(key, signature, fmt));\n\n\t\t/*\n\t\t * Avoid doing this on valid arguments, walking the prototype\n\t\t * chain can be quite slow.\n\t\t */\n\t\t} else if (Signature.isSignature(signature, [1, 0])) {\n\t\t\tthrow (new Error('signature was created by too old ' +\n\t\t\t 'a version of sshpk and cannot be verified'));\n\n\t\t} else {\n\t\t\tthrow (new TypeError('signature must be a string, ' +\n\t\t\t 'Buffer, or Signature object'));\n\t\t}\n\t};\n\treturn (v);\n};\n\nKey.prototype.createDiffieHellman = function () {\n\tif (this.type === 'rsa')\n\t\tthrow (new Error('RSA keys do not support Diffie-Hellman'));\n\n\treturn (new DiffieHellman(this));\n};\nKey.prototype.createDH = Key.prototype.createDiffieHellman;\n\nKey.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\tif (k instanceof PrivateKey)\n\t\t\tk = k.toPublic();\n\t\tif (!k.comment)\n\t\t\tk.comment = options.filename;\n\t\treturn (k);\n\t} catch (e) {\n\t\tif (e.name === 'KeyEncryptedError')\n\t\t\tthrow (e);\n\t\tthrow (new KeyParseError(options.filename, format, e));\n\t}\n};\n\nKey.isKey = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Key, ver));\n};\n\n/*\n * API versions for Key:\n * [1,0] -- initial ver, may take Signature for createVerify or may not\n * [1,1] -- added pkcs1, pkcs8 formats\n * [1,2] -- added auto, ssh-private, openssh formats\n * [1,3] -- added defaultHashAlgorithm\n * [1,4] -- added ed support, createDH\n * [1,5] -- first explicitly tagged version\n * [1,6] -- changed ed25519 part names\n * [1,7] -- spki hash types\n */\nKey.prototype._sshpkApiVersion = [1, 7];\n\nKey._oldVersionDetect = function (obj) {\n\tassert.func(obj.toBuffer);\n\tassert.func(obj.fingerprint);\n\tif (obj.createDH)\n\t\treturn ([1, 4]);\n\tif (obj.defaultHashAlgorithm)\n\t\treturn ([1, 3]);\n\tif (obj.formats['auto'])\n\t\treturn ([1, 2]);\n\tif (obj.formats['pkcs1'])\n\t\treturn ([1, 1]);\n\treturn ([1, 0]);\n};\n", "// Copyright 2015 Joyent, Inc.\n\nvar Key = require('./key');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar PrivateKey = require('./private-key');\nvar Certificate = require('./certificate');\nvar Identity = require('./identity');\nvar errs = require('./errors');\n\nmodule.exports = {\n\t/* top-level classes */\n\tKey: Key,\n\tparseKey: Key.parse,\n\tFingerprint: Fingerprint,\n\tparseFingerprint: Fingerprint.parse,\n\tSignature: Signature,\n\tparseSignature: Signature.parse,\n\tPrivateKey: PrivateKey,\n\tparsePrivateKey: PrivateKey.parse,\n\tgeneratePrivateKey: PrivateKey.generate,\n\tCertificate: Certificate,\n\tparseCertificate: Certificate.parse,\n\tcreateSelfSignedCertificate: Certificate.createSelfSigned,\n\tcreateCertificate: Certificate.create,\n\tIdentity: Identity,\n\tidentityFromDN: Identity.parseDN,\n\tidentityForHost: Identity.forHost,\n\tidentityForUser: Identity.forUser,\n\tidentityForEmail: Identity.forEmail,\n\tidentityFromArray: Identity.fromArray,\n\n\t/* errors */\n\tFingerprintFormatError: errs.FingerprintFormatError,\n\tInvalidAlgorithmError: errs.InvalidAlgorithmError,\n\tKeyParseError: errs.KeyParseError,\n\tSignatureParseError: errs.SignatureParseError,\n\tKeyEncryptedError: errs.KeyEncryptedError,\n\tCertificateParseError: errs.CertificateParseError\n};\n", "// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar sshpk = require('sshpk');\nvar util = require('util');\n\nvar HASH_ALGOS = {\n 'sha1': true,\n 'sha256': true,\n 'sha512': true\n};\n\nvar PK_ALGOS = {\n 'rsa': true,\n 'dsa': true,\n 'ecdsa': true\n};\n\nfunction HttpSignatureError(message, caller) {\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, caller || HttpSignatureError);\n\n this.message = message;\n this.name = caller.name;\n}\nutil.inherits(HttpSignatureError, Error);\n\nfunction InvalidAlgorithmError(message) {\n HttpSignatureError.call(this, message, InvalidAlgorithmError);\n}\nutil.inherits(InvalidAlgorithmError, HttpSignatureError);\n\nfunction validateAlgorithm(algorithm) {\n var alg = algorithm.toLowerCase().split('-');\n\n if (alg.length !== 2) {\n throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' +\n 'valid algorithm'));\n }\n\n if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) {\n throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' +\n 'are not supported'));\n }\n\n if (!HASH_ALGOS[alg[1]]) {\n throw (new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' +\n 'supported hash algorithm'));\n }\n\n return (alg);\n}\n\n///--- API\n\nmodule.exports = {\n\n HASH_ALGOS: HASH_ALGOS,\n PK_ALGOS: PK_ALGOS,\n\n HttpSignatureError: HttpSignatureError,\n InvalidAlgorithmError: InvalidAlgorithmError,\n\n validateAlgorithm: validateAlgorithm,\n\n /**\n * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file.\n *\n * The intent of this module is to interoperate with OpenSSL only,\n * specifically the node crypto module's `verify` method.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} PEM encoded form of the RSA public key.\n * @throws {TypeError} on bad input.\n * @throws {Error} on invalid ssh key formatted data.\n */\n sshKeyToPEM: function sshKeyToPEM(key) {\n assert.string(key, 'ssh_key');\n\n var k = sshpk.parseKey(key, 'ssh');\n return (k.toString('pem'));\n },\n\n\n /**\n * Generates an OpenSSH fingerprint from an ssh public key.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} key fingerprint.\n * @throws {TypeError} on bad input.\n * @throws {Error} if what you passed doesn't look like an ssh public key.\n */\n fingerprint: function fingerprint(key) {\n assert.string(key, 'ssh_key');\n\n var k = sshpk.parseKey(key, 'ssh');\n return (k.fingerprint('md5').toString('hex'));\n },\n\n /**\n * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa)\n *\n * The reverse of the above function.\n */\n pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) {\n assert.equal('string', typeof (pem), 'typeof pem');\n\n var k = sshpk.parseKey(pem, 'pem');\n k.comment = comment;\n return (k.toString('ssh'));\n }\n};\n", "// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar util = require('util');\nvar utils = require('./utils');\n\n\n\n///--- Globals\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\nvar State = {\n New: 0,\n Params: 1\n};\n\nvar ParamsState = {\n Name: 0,\n Quote: 1,\n Value: 2,\n Comma: 3\n};\n\n\n///--- Specific Errors\n\n\nfunction ExpiredRequestError(message) {\n HttpSignatureError.call(this, message, ExpiredRequestError);\n}\nutil.inherits(ExpiredRequestError, HttpSignatureError);\n\n\nfunction InvalidHeaderError(message) {\n HttpSignatureError.call(this, message, InvalidHeaderError);\n}\nutil.inherits(InvalidHeaderError, HttpSignatureError);\n\n\nfunction InvalidParamsError(message) {\n HttpSignatureError.call(this, message, InvalidParamsError);\n}\nutil.inherits(InvalidParamsError, HttpSignatureError);\n\n\nfunction MissingHeaderError(message) {\n HttpSignatureError.call(this, message, MissingHeaderError);\n}\nutil.inherits(MissingHeaderError, HttpSignatureError);\n\nfunction StrictParsingError(message) {\n HttpSignatureError.call(this, message, StrictParsingError);\n}\nutil.inherits(StrictParsingError, HttpSignatureError);\n\n///--- Exported API\n\nmodule.exports = {\n\n /**\n * Parses the 'Authorization' header out of an http.ServerRequest object.\n *\n * Note that this API will fully validate the Authorization header, and throw\n * on any error. It will not however check the signature, or the keyId format\n * as those are specific to your environment. You can use the options object\n * to pass in extra constraints.\n *\n * As a response object you can expect this:\n *\n * {\n * \"scheme\": \"Signature\",\n * \"params\": {\n * \"keyId\": \"foo\",\n * \"algorithm\": \"rsa-sha256\",\n * \"headers\": [\n * \"date\" or \"x-date\",\n * \"digest\"\n * ],\n * \"signature\": \"base64\"\n * },\n * \"signingString\": \"ready to be passed to crypto.verify()\"\n * }\n *\n * @param {Object} request an http.ServerRequest.\n * @param {Object} options an optional options object with:\n * - clockSkew: allowed clock skew in seconds (default 300).\n * - headers: required header names (def: date or x-date)\n * - algorithms: algorithms to support (default: all).\n * - strict: should enforce latest spec parsing\n * (default: false).\n * @return {Object} parsed out object (see above).\n * @throws {TypeError} on invalid input.\n * @throws {InvalidHeaderError} on an invalid Authorization header error.\n * @throws {InvalidParamsError} if the params in the scheme are invalid.\n * @throws {MissingHeaderError} if the params indicate a header not present,\n * either in the request headers from the params,\n * or not in the params from a required header\n * in options.\n * @throws {StrictParsingError} if old attributes are used in strict parsing\n * mode.\n * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew.\n */\n parseRequest: function parseRequest(request, options) {\n assert.object(request, 'request');\n assert.object(request.headers, 'request.headers');\n if (options === undefined) {\n options = {};\n }\n if (options.headers === undefined) {\n options.headers = [request.headers['x-date'] ? 'x-date' : 'date'];\n }\n assert.object(options, 'options');\n assert.arrayOfString(options.headers, 'options.headers');\n assert.optionalFinite(options.clockSkew, 'options.clockSkew');\n\n var authzHeaderName = options.authorizationHeaderName || 'authorization';\n\n if (!request.headers[authzHeaderName]) {\n throw new MissingHeaderError('no ' + authzHeaderName + ' header ' +\n 'present in the request');\n }\n\n options.clockSkew = options.clockSkew || 300;\n\n\n var i = 0;\n var state = State.New;\n var substate = ParamsState.Name;\n var tmpName = '';\n var tmpValue = '';\n\n var parsed = {\n scheme: '',\n params: {},\n signingString: ''\n };\n\n var authz = request.headers[authzHeaderName];\n for (i = 0; i < authz.length; i++) {\n var c = authz.charAt(i);\n\n switch (Number(state)) {\n\n case State.New:\n if (c !== ' ') parsed.scheme += c;\n else state = State.Params;\n break;\n\n case State.Params:\n switch (Number(substate)) {\n\n case ParamsState.Name:\n var code = c.charCodeAt(0);\n // restricted name of A-Z / a-z\n if ((code >= 0x41 && code <= 0x5a) || // A-Z\n (code >= 0x61 && code <= 0x7a)) { // a-z\n tmpName += c;\n } else if (c === '=') {\n if (tmpName.length === 0)\n throw new InvalidHeaderError('bad param format');\n substate = ParamsState.Quote;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n case ParamsState.Quote:\n if (c === '\"') {\n tmpValue = '';\n substate = ParamsState.Value;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n case ParamsState.Value:\n if (c === '\"') {\n parsed.params[tmpName] = tmpValue;\n substate = ParamsState.Comma;\n } else {\n tmpValue += c;\n }\n break;\n\n case ParamsState.Comma:\n if (c === ',') {\n tmpName = '';\n substate = ParamsState.Name;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n default:\n throw new Error('Invalid substate');\n }\n break;\n\n default:\n throw new Error('Invalid substate');\n }\n\n }\n\n if (!parsed.params.headers || parsed.params.headers === '') {\n if (request.headers['x-date']) {\n parsed.params.headers = ['x-date'];\n } else {\n parsed.params.headers = ['date'];\n }\n } else {\n parsed.params.headers = parsed.params.headers.split(' ');\n }\n\n // Minimally validate the parsed object\n if (!parsed.scheme || parsed.scheme !== 'Signature')\n throw new InvalidHeaderError('scheme was not \"Signature\"');\n\n if (!parsed.params.keyId)\n throw new InvalidHeaderError('keyId was not specified');\n\n if (!parsed.params.algorithm)\n throw new InvalidHeaderError('algorithm was not specified');\n\n if (!parsed.params.signature)\n throw new InvalidHeaderError('signature was not specified');\n\n // Check the algorithm against the official list\n parsed.params.algorithm = parsed.params.algorithm.toLowerCase();\n try {\n validateAlgorithm(parsed.params.algorithm);\n } catch (e) {\n if (e instanceof InvalidAlgorithmError)\n throw (new InvalidParamsError(parsed.params.algorithm + ' is not ' +\n 'supported'));\n else\n throw (e);\n }\n\n // Build the signingString\n for (i = 0; i < parsed.params.headers.length; i++) {\n var h = parsed.params.headers[i].toLowerCase();\n parsed.params.headers[i] = h;\n\n if (h === 'request-line') {\n if (!options.strict) {\n /*\n * We allow headers from the older spec drafts if strict parsing isn't\n * specified in options.\n */\n parsed.signingString +=\n request.method + ' ' + request.url + ' HTTP/' + request.httpVersion;\n } else {\n /* Strict parsing doesn't allow older draft headers. */\n throw (new StrictParsingError('request-line is not a valid header ' +\n 'with strict parsing enabled.'));\n }\n } else if (h === '(request-target)') {\n parsed.signingString +=\n '(request-target): ' + request.method.toLowerCase() + ' ' +\n request.url;\n } else {\n var value = request.headers[h];\n if (value === undefined)\n throw new MissingHeaderError(h + ' was not in the request');\n parsed.signingString += h + ': ' + value;\n }\n\n if ((i + 1) < parsed.params.headers.length)\n parsed.signingString += '\\n';\n }\n\n // Check against the constraints\n var date;\n if (request.headers.date || request.headers['x-date']) {\n if (request.headers['x-date']) {\n date = new Date(request.headers['x-date']);\n } else {\n date = new Date(request.headers.date);\n }\n var now = new Date();\n var skew = Math.abs(now.getTime() - date.getTime());\n\n if (skew > options.clockSkew * 1000) {\n throw new ExpiredRequestError('clock skew of ' +\n (skew / 1000) +\n 's was greater than ' +\n options.clockSkew + 's');\n }\n }\n\n options.headers.forEach(function (hdr) {\n // Remember that we already checked any headers in the params\n // were in the request, so if this passes we're good.\n if (parsed.params.headers.indexOf(hdr.toLowerCase()) < 0)\n throw new MissingHeaderError(hdr + ' was not a signed header');\n });\n\n if (options.algorithms) {\n if (options.algorithms.indexOf(parsed.params.algorithm) === -1)\n throw new InvalidParamsError(parsed.params.algorithm +\n ' is not a supported algorithm');\n }\n\n parsed.algorithm = parsed.params.algorithm.toUpperCase();\n parsed.keyId = parsed.params.keyId;\n return parsed;\n }\n\n};\n", "/*\n * extsprintf.js: extended POSIX-style sprintf\n */\n\nvar mod_assert = require('assert');\nvar mod_util = require('util');\n\n/*\n * Public interface\n */\nexports.sprintf = jsSprintf;\nexports.printf = jsPrintf;\nexports.fprintf = jsFprintf;\n\n/*\n * Stripped down version of s[n]printf(3c). We make a best effort to throw an\n * exception when given a format string we don't understand, rather than\n * ignoring it, so that we won't break existing programs if/when we go implement\n * the rest of this.\n *\n * This implementation currently supports specifying\n *\t- field alignment ('-' flag),\n * \t- zero-pad ('0' flag)\n *\t- always show numeric sign ('+' flag),\n *\t- field width\n *\t- conversions for strings, decimal integers, and floats (numbers).\n *\t- argument size specifiers. These are all accepted but ignored, since\n *\t Javascript has no notion of the physical size of an argument.\n *\n * Everything else is currently unsupported, most notably precision, unsigned\n * numbers, non-decimal numbers, and characters.\n */\nfunction jsSprintf(fmt)\n{\n\tvar regex = [\n\t '([^%]*)',\t\t\t\t/* normal text */\n\t '%',\t\t\t\t/* start of format */\n\t '([\\'\\\\-+ #0]*?)',\t\t\t/* flags (optional) */\n\t '([1-9]\\\\d*)?',\t\t\t/* width (optional) */\n\t '(\\\\.([1-9]\\\\d*))?',\t\t/* precision (optional) */\n\t '[lhjztL]*?',\t\t\t/* length mods (ignored) */\n\t '([diouxXfFeEgGaAcCsSp%jr])'\t/* conversion */\n\t].join('');\n\n\tvar re = new RegExp(regex);\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\tvar flags, width, precision, conversion;\n\tvar left, pad, sign, arg, match;\n\tvar ret = '';\n\tvar argn = 1;\n\n\tmod_assert.equal('string', typeof (fmt));\n\n\twhile ((match = re.exec(fmt)) !== null) {\n\t\tret += match[1];\n\t\tfmt = fmt.substring(match[0].length);\n\n\t\tflags = match[2] || '';\n\t\twidth = match[3] || 0;\n\t\tprecision = match[4] || '';\n\t\tconversion = match[6];\n\t\tleft = false;\n\t\tsign = false;\n\t\tpad = ' ';\n\n\t\tif (conversion == '%') {\n\t\t\tret += '%';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (args.length === 0)\n\t\t\tthrow (new Error('too few args to sprintf'));\n\n\t\targ = args.shift();\n\t\targn++;\n\n\t\tif (flags.match(/[\\' #]/))\n\t\t\tthrow (new Error(\n\t\t\t 'unsupported flags: ' + flags));\n\n\t\tif (precision.length > 0)\n\t\t\tthrow (new Error(\n\t\t\t 'non-zero precision not supported'));\n\n\t\tif (flags.match(/-/))\n\t\t\tleft = true;\n\n\t\tif (flags.match(/0/))\n\t\t\tpad = '0';\n\n\t\tif (flags.match(/\\+/))\n\t\t\tsign = true;\n\n\t\tswitch (conversion) {\n\t\tcase 's':\n\t\t\tif (arg === undefined || arg === null)\n\t\t\t\tthrow (new Error('argument ' + argn +\n\t\t\t\t ': attempted to print undefined or null ' +\n\t\t\t\t 'as a string'));\n\t\t\tret += doPad(pad, width, left, arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'd':\n\t\t\targ = Math.floor(arg);\n\t\t\t/*jsl:fallthru*/\n\t\tcase 'f':\n\t\t\tsign = sign && arg > 0 ? '+' : '';\n\t\t\tret += sign + doPad(pad, width, left,\n\t\t\t arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'x':\n\t\t\tret += doPad(pad, width, left, arg.toString(16));\n\t\t\tbreak;\n\n\t\tcase 'j': /* non-standard */\n\t\t\tif (width === 0)\n\t\t\t\twidth = 10;\n\t\t\tret += mod_util.inspect(arg, false, width);\n\t\t\tbreak;\n\n\t\tcase 'r': /* non-standard */\n\t\t\tret += dumpException(arg);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow (new Error('unsupported conversion: ' +\n\t\t\t conversion));\n\t\t}\n\t}\n\n\tret += fmt;\n\treturn (ret);\n}\n\nfunction jsPrintf() {\n\tvar args = Array.prototype.slice.call(arguments);\n\targs.unshift(process.stdout);\n\tjsFprintf.apply(null, args);\n}\n\nfunction jsFprintf(stream) {\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\treturn (stream.write(jsSprintf.apply(this, args)));\n}\n\nfunction doPad(chr, width, left, str)\n{\n\tvar ret = str;\n\n\twhile (ret.length < width) {\n\t\tif (left)\n\t\t\tret += chr;\n\t\telse\n\t\t\tret = chr + ret;\n\t}\n\n\treturn (ret);\n}\n\n/*\n * This function dumps long stack traces for exceptions having a cause() method.\n * See node-verror for an example.\n */\nfunction dumpException(ex)\n{\n\tvar ret;\n\n\tif (!(ex instanceof Error))\n\t\tthrow (new Error(jsSprintf('invalid type for %%r: %j', ex)));\n\n\t/* Note that V8 prepends \"ex.stack\" with ex.toString(). */\n\tret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack;\n\n\tif (ex.cause && typeof (ex.cause) === 'function') {\n\t\tvar cex = ex.cause();\n\t\tif (cex) {\n\t\t\tret += '\\nCaused by: ' + dumpException(cex);\n\t\t}\n\t}\n\n\treturn (ret);\n}\n", "/*\n * extsprintf.js: extended POSIX-style sprintf\n */\n\nvar mod_assert = require('assert');\nvar mod_util = require('util');\n\n/*\n * Public interface\n */\nexports.sprintf = jsSprintf;\nexports.printf = jsPrintf;\nexports.fprintf = jsFprintf;\n\n/*\n * Stripped down version of s[n]printf(3c). We make a best effort to throw an\n * exception when given a format string we don't understand, rather than\n * ignoring it, so that we won't break existing programs if/when we go implement\n * the rest of this.\n *\n * This implementation currently supports specifying\n *\t- field alignment ('-' flag),\n * \t- zero-pad ('0' flag)\n *\t- always show numeric sign ('+' flag),\n *\t- field width\n *\t- conversions for strings, decimal integers, and floats (numbers).\n *\t- argument size specifiers. These are all accepted but ignored, since\n *\t Javascript has no notion of the physical size of an argument.\n *\n * Everything else is currently unsupported, most notably precision, unsigned\n * numbers, non-decimal numbers, and characters.\n */\nfunction jsSprintf(ofmt)\n{\n\tvar regex = [\n\t '([^%]*)',\t\t\t\t/* normal text */\n\t '%',\t\t\t\t/* start of format */\n\t '([\\'\\\\-+ #0]*?)',\t\t\t/* flags (optional) */\n\t '([1-9]\\\\d*)?',\t\t\t/* width (optional) */\n\t '(\\\\.([1-9]\\\\d*))?',\t\t/* precision (optional) */\n\t '[lhjztL]*?',\t\t\t/* length mods (ignored) */\n\t '([diouxXfFeEgGaAcCsSp%jr])'\t/* conversion */\n\t].join('');\n\n\tvar re = new RegExp(regex);\n\n\t/* variadic arguments used to fill in conversion specifiers */\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\t/* remaining format string */\n\tvar fmt = ofmt;\n\n\t/* components of the current conversion specifier */\n\tvar flags, width, precision, conversion;\n\tvar left, pad, sign, arg, match;\n\n\t/* return value */\n\tvar ret = '';\n\n\t/* current variadic argument (1-based) */\n\tvar argn = 1;\n\t/* 0-based position in the format string that we've read */\n\tvar posn = 0;\n\t/* 1-based position in the format string of the current conversion */\n\tvar convposn;\n\t/* current conversion specifier */\n\tvar curconv;\n\n\tmod_assert.equal('string', typeof (fmt),\n\t 'first argument must be a format string');\n\n\twhile ((match = re.exec(fmt)) !== null) {\n\t\tret += match[1];\n\t\tfmt = fmt.substring(match[0].length);\n\n\t\t/*\n\t\t * Update flags related to the current conversion specifier's\n\t\t * position so that we can report clear error messages.\n\t\t */\n\t\tcurconv = match[0].substring(match[1].length);\n\t\tconvposn = posn + match[1].length + 1;\n\t\tposn += match[0].length;\n\n\t\tflags = match[2] || '';\n\t\twidth = match[3] || 0;\n\t\tprecision = match[4] || '';\n\t\tconversion = match[6];\n\t\tleft = false;\n\t\tsign = false;\n\t\tpad = ' ';\n\n\t\tif (conversion == '%') {\n\t\t\tret += '%';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (args.length === 0) {\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'has no matching argument ' +\n\t\t\t '(too few arguments passed)'));\n\t\t}\n\n\t\targ = args.shift();\n\t\targn++;\n\n\t\tif (flags.match(/[\\' #]/)) {\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'uses unsupported flags'));\n\t\t}\n\n\t\tif (precision.length > 0) {\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'uses non-zero precision (not supported)'));\n\t\t}\n\n\t\tif (flags.match(/-/))\n\t\t\tleft = true;\n\n\t\tif (flags.match(/0/))\n\t\t\tpad = '0';\n\n\t\tif (flags.match(/\\+/))\n\t\t\tsign = true;\n\n\t\tswitch (conversion) {\n\t\tcase 's':\n\t\t\tif (arg === undefined || arg === null) {\n\t\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t\t 'attempted to print undefined or null ' +\n\t\t\t\t 'as a string (argument ' + argn + ' to ' +\n\t\t\t\t 'sprintf)'));\n\t\t\t}\n\t\t\tret += doPad(pad, width, left, arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'd':\n\t\t\targ = Math.floor(arg);\n\t\t\t/*jsl:fallthru*/\n\t\tcase 'f':\n\t\t\tsign = sign && arg > 0 ? '+' : '';\n\t\t\tret += sign + doPad(pad, width, left,\n\t\t\t arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'x':\n\t\t\tret += doPad(pad, width, left, arg.toString(16));\n\t\t\tbreak;\n\n\t\tcase 'j': /* non-standard */\n\t\t\tif (width === 0)\n\t\t\t\twidth = 10;\n\t\t\tret += mod_util.inspect(arg, false, width);\n\t\t\tbreak;\n\n\t\tcase 'r': /* non-standard */\n\t\t\tret += dumpException(arg);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'is not supported'));\n\t\t}\n\t}\n\n\tret += fmt;\n\treturn (ret);\n}\n\nfunction jsError(fmtstr, convposn, curconv, reason) {\n\tmod_assert.equal(typeof (fmtstr), 'string');\n\tmod_assert.equal(typeof (curconv), 'string');\n\tmod_assert.equal(typeof (convposn), 'number');\n\tmod_assert.equal(typeof (reason), 'string');\n\treturn (new Error('format string \"' + fmtstr +\n\t '\": conversion specifier \"' + curconv + '\" at character ' +\n\t convposn + ' ' + reason));\n}\n\nfunction jsPrintf() {\n\tvar args = Array.prototype.slice.call(arguments);\n\targs.unshift(process.stdout);\n\tjsFprintf.apply(null, args);\n}\n\nfunction jsFprintf(stream) {\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\treturn (stream.write(jsSprintf.apply(this, args)));\n}\n\nfunction doPad(chr, width, left, str)\n{\n\tvar ret = str;\n\n\twhile (ret.length < width) {\n\t\tif (left)\n\t\t\tret += chr;\n\t\telse\n\t\t\tret = chr + ret;\n\t}\n\n\treturn (ret);\n}\n\n/*\n * This function dumps long stack traces for exceptions having a cause() method.\n * See node-verror for an example.\n */\nfunction dumpException(ex)\n{\n\tvar ret;\n\n\tif (!(ex instanceof Error))\n\t\tthrow (new Error(jsSprintf('invalid type for %%r: %j', ex)));\n\n\t/* Note that V8 prepends \"ex.stack\" with ex.toString(). */\n\tret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack;\n\n\tif (ex.cause && typeof (ex.cause) === 'function') {\n\t\tvar cex = ex.cause();\n\t\tif (cex) {\n\t\t\tret += '\\nCaused by: ' + dumpException(cex);\n\t\t}\n\t}\n\n\treturn (ret);\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// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\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 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 objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (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 = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n", "/*\n * verror.js: richer JavaScript errors\n */\n\nvar mod_assertplus = require('assert-plus');\nvar mod_util = require('util');\n\nvar mod_extsprintf = require('extsprintf');\nvar mod_isError = require('core-util-is').isError;\nvar sprintf = mod_extsprintf.sprintf;\n\n/*\n * Public interface\n */\n\n/* So you can 'var VError = require('verror')' */\nmodule.exports = VError;\n/* For compatibility */\nVError.VError = VError;\n/* Other exported classes */\nVError.SError = SError;\nVError.WError = WError;\nVError.MultiError = MultiError;\n\n/*\n * Common function used to parse constructor arguments for VError, WError, and\n * SError. Named arguments to this function:\n *\n * strict\t\tforce strict interpretation of sprintf arguments, even\n * \t\t\tif the options in \"argv\" don't say so\n *\n * argv\t\terror's constructor arguments, which are to be\n * \t\t\tinterpreted as described in README.md. For quick\n * \t\t\treference, \"argv\" has one of the following forms:\n *\n * [ sprintf_args... ] (argv[0] is a string)\n * [ cause, sprintf_args... ] (argv[0] is an Error)\n * [ options, sprintf_args... ] (argv[0] is an object)\n *\n * This function normalizes these forms, producing an object with the following\n * properties:\n *\n * options equivalent to \"options\" in third form. This will never\n * \t\t\tbe a direct reference to what the caller passed in\n * \t\t\t(i.e., it may be a shallow copy), so it can be freely\n * \t\t\tmodified.\n *\n * shortmessage result of sprintf(sprintf_args), taking options.strict\n * \t\t\tinto account as described in README.md.\n */\nfunction parseConstructorArguments(args)\n{\n\tvar argv, options, sprintf_args, shortmessage, k;\n\n\tmod_assertplus.object(args, 'args');\n\tmod_assertplus.bool(args.strict, 'args.strict');\n\tmod_assertplus.array(args.argv, 'args.argv');\n\targv = args.argv;\n\n\t/*\n\t * First, figure out which form of invocation we've been given.\n\t */\n\tif (argv.length === 0) {\n\t\toptions = {};\n\t\tsprintf_args = [];\n\t} else if (mod_isError(argv[0])) {\n\t\toptions = { 'cause': argv[0] };\n\t\tsprintf_args = argv.slice(1);\n\t} else if (typeof (argv[0]) === 'object') {\n\t\toptions = {};\n\t\tfor (k in argv[0]) {\n\t\t\toptions[k] = argv[0][k];\n\t\t}\n\t\tsprintf_args = argv.slice(1);\n\t} else {\n\t\tmod_assertplus.string(argv[0],\n\t\t 'first argument to VError, SError, or WError ' +\n\t\t 'constructor must be a string, object, or Error');\n\t\toptions = {};\n\t\tsprintf_args = argv;\n\t}\n\n\t/*\n\t * Now construct the error's message.\n\t *\n\t * extsprintf (which we invoke here with our caller's arguments in order\n\t * to construct this Error's message) is strict in its interpretation of\n\t * values to be processed by the \"%s\" specifier. The value passed to\n\t * extsprintf must actually be a string or something convertible to a\n\t * String using .toString(). Passing other values (notably \"null\" and\n\t * \"undefined\") is considered a programmer error. The assumption is\n\t * that if you actually want to print the string \"null\" or \"undefined\",\n\t * then that's easy to do that when you're calling extsprintf; on the\n\t * other hand, if you did NOT want that (i.e., there's actually a bug\n\t * where the program assumes some variable is non-null and tries to\n\t * print it, which might happen when constructing a packet or file in\n\t * some specific format), then it's better to stop immediately than\n\t * produce bogus output.\n\t *\n\t * However, sometimes the bug is only in the code calling VError, and a\n\t * programmer might prefer to have the error message contain \"null\" or\n\t * \"undefined\" rather than have the bug in the error path crash the\n\t * program (making the first bug harder to identify). For that reason,\n\t * by default VError converts \"null\" or \"undefined\" arguments to their\n\t * string representations and passes those to extsprintf. Programmers\n\t * desiring the strict behavior can use the SError class or pass the\n\t * \"strict\" option to the VError constructor.\n\t */\n\tmod_assertplus.object(options);\n\tif (!options.strict && !args.strict) {\n\t\tsprintf_args = sprintf_args.map(function (a) {\n\t\t\treturn (a === null ? 'null' :\n\t\t\t a === undefined ? 'undefined' : a);\n\t\t});\n\t}\n\n\tif (sprintf_args.length === 0) {\n\t\tshortmessage = '';\n\t} else {\n\t\tshortmessage = sprintf.apply(null, sprintf_args);\n\t}\n\n\treturn ({\n\t 'options': options,\n\t 'shortmessage': shortmessage\n\t});\n}\n\n/*\n * See README.md for reference documentation.\n */\nfunction VError()\n{\n\tvar args, obj, parsed, cause, ctor, message, k;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\n\t/*\n\t * This is a regrettable pattern, but JavaScript's built-in Error class\n\t * is defined to work this way, so we allow the constructor to be called\n\t * without \"new\".\n\t */\n\tif (!(this instanceof VError)) {\n\t\tobj = Object.create(VError.prototype);\n\t\tVError.apply(obj, arguments);\n\t\treturn (obj);\n\t}\n\n\t/*\n\t * For convenience and backwards compatibility, we support several\n\t * different calling forms. Normalize them here.\n\t */\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': false\n\t});\n\n\t/*\n\t * If we've been given a name, apply it now.\n\t */\n\tif (parsed.options.name) {\n\t\tmod_assertplus.string(parsed.options.name,\n\t\t 'error\\'s \"name\" must be a string');\n\t\tthis.name = parsed.options.name;\n\t}\n\n\t/*\n\t * For debugging, we keep track of the original short message (attached\n\t * this Error particularly) separately from the complete message (which\n\t * includes the messages of our cause chain).\n\t */\n\tthis.jse_shortmsg = parsed.shortmessage;\n\tmessage = parsed.shortmessage;\n\n\t/*\n\t * If we've been given a cause, record a reference to it and update our\n\t * message appropriately.\n\t */\n\tcause = parsed.options.cause;\n\tif (cause) {\n\t\tmod_assertplus.ok(mod_isError(cause), 'cause is not an Error');\n\t\tthis.jse_cause = cause;\n\n\t\tif (!parsed.options.skipCauseMessage) {\n\t\t\tmessage += ': ' + cause.message;\n\t\t}\n\t}\n\n\t/*\n\t * If we've been given an object with properties, shallow-copy that\n\t * here. We don't want to use a deep copy in case there are non-plain\n\t * objects here, but we don't want to use the original object in case\n\t * the caller modifies it later.\n\t */\n\tthis.jse_info = {};\n\tif (parsed.options.info) {\n\t\tfor (k in parsed.options.info) {\n\t\t\tthis.jse_info[k] = parsed.options.info[k];\n\t\t}\n\t}\n\n\tthis.message = message;\n\tError.call(this, message);\n\n\tif (Error.captureStackTrace) {\n\t\tctor = parsed.options.constructorOpt || this.constructor;\n\t\tError.captureStackTrace(this, ctor);\n\t}\n\n\treturn (this);\n}\n\nmod_util.inherits(VError, Error);\nVError.prototype.name = 'VError';\n\nVError.prototype.toString = function ve_toString()\n{\n\tvar str = (this.hasOwnProperty('name') && this.name ||\n\t\tthis.constructor.name || this.constructor.prototype.name);\n\tif (this.message)\n\t\tstr += ': ' + this.message;\n\n\treturn (str);\n};\n\n/*\n * This method is provided for compatibility. New callers should use\n * VError.cause() instead. That method also uses the saner `null` return value\n * when there is no cause.\n */\nVError.prototype.cause = function ve_cause()\n{\n\tvar cause = VError.cause(this);\n\treturn (cause === null ? undefined : cause);\n};\n\n/*\n * Static methods\n *\n * These class-level methods are provided so that callers can use them on\n * instances of Errors that are not VErrors. New interfaces should be provided\n * only using static methods to eliminate the class of programming mistake where\n * people fail to check whether the Error object has the corresponding methods.\n */\n\nVError.cause = function (err)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\treturn (mod_isError(err.jse_cause) ? err.jse_cause : null);\n};\n\nVError.info = function (err)\n{\n\tvar rv, cause, k;\n\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tcause = VError.cause(err);\n\tif (cause !== null) {\n\t\trv = VError.info(cause);\n\t} else {\n\t\trv = {};\n\t}\n\n\tif (typeof (err.jse_info) == 'object' && err.jse_info !== null) {\n\t\tfor (k in err.jse_info) {\n\t\t\trv[k] = err.jse_info[k];\n\t\t}\n\t}\n\n\treturn (rv);\n};\n\nVError.findCauseByName = function (err, name)\n{\n\tvar cause;\n\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tmod_assertplus.string(name, 'name');\n\tmod_assertplus.ok(name.length > 0, 'name cannot be empty');\n\n\tfor (cause = err; cause !== null; cause = VError.cause(cause)) {\n\t\tmod_assertplus.ok(mod_isError(cause));\n\t\tif (cause.name == name) {\n\t\t\treturn (cause);\n\t\t}\n\t}\n\n\treturn (null);\n};\n\nVError.hasCauseWithName = function (err, name)\n{\n\treturn (VError.findCauseByName(err, name) !== null);\n};\n\nVError.fullStack = function (err)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\n\tvar cause = VError.cause(err);\n\n\tif (cause) {\n\t\treturn (err.stack + '\\ncaused by: ' + VError.fullStack(cause));\n\t}\n\n\treturn (err.stack);\n};\n\nVError.errorFromList = function (errors)\n{\n\tmod_assertplus.arrayOfObject(errors, 'errors');\n\n\tif (errors.length === 0) {\n\t\treturn (null);\n\t}\n\n\terrors.forEach(function (e) {\n\t\tmod_assertplus.ok(mod_isError(e));\n\t});\n\n\tif (errors.length == 1) {\n\t\treturn (errors[0]);\n\t}\n\n\treturn (new MultiError(errors));\n};\n\nVError.errorForEach = function (err, func)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tmod_assertplus.func(func, 'func');\n\n\tif (err instanceof MultiError) {\n\t\terr.errors().forEach(function iterError(e) { func(e); });\n\t} else {\n\t\tfunc(err);\n\t}\n};\n\n\n/*\n * SError is like VError, but stricter about types. You cannot pass \"null\" or\n * \"undefined\" as string arguments to the formatter.\n */\nfunction SError()\n{\n\tvar args, obj, parsed, options;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\tif (!(this instanceof SError)) {\n\t\tobj = Object.create(SError.prototype);\n\t\tSError.apply(obj, arguments);\n\t\treturn (obj);\n\t}\n\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': true\n\t});\n\n\toptions = parsed.options;\n\tVError.call(this, options, '%s', parsed.shortmessage);\n\n\treturn (this);\n}\n\n/*\n * We don't bother setting SError.prototype.name because once constructed,\n * SErrors are just like VErrors.\n */\nmod_util.inherits(SError, VError);\n\n\n/*\n * Represents a collection of errors for the purpose of consumers that generally\n * only deal with one error. Callers can extract the individual errors\n * contained in this object, but may also just treat it as a normal single\n * error, in which case a summary message will be printed.\n */\nfunction MultiError(errors)\n{\n\tmod_assertplus.array(errors, 'list of errors');\n\tmod_assertplus.ok(errors.length > 0, 'must be at least one error');\n\tthis.ase_errors = errors;\n\n\tVError.call(this, {\n\t 'cause': errors[0]\n\t}, 'first of %d error%s', errors.length, errors.length == 1 ? '' : 's');\n}\n\nmod_util.inherits(MultiError, VError);\nMultiError.prototype.name = 'MultiError';\n\nMultiError.prototype.errors = function me_errors()\n{\n\treturn (this.ase_errors.slice(0));\n};\n\n\n/*\n * See README.md for reference details.\n */\nfunction WError()\n{\n\tvar args, obj, parsed, options;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\tif (!(this instanceof WError)) {\n\t\tobj = Object.create(WError.prototype);\n\t\tWError.apply(obj, args);\n\t\treturn (obj);\n\t}\n\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': false\n\t});\n\n\toptions = parsed.options;\n\toptions['skipCauseMessage'] = true;\n\tVError.call(this, options, '%s', parsed.shortmessage);\n\n\treturn (this);\n}\n\nmod_util.inherits(WError, VError);\nWError.prototype.name = 'WError';\n\nWError.prototype.toString = function we_toString()\n{\n\tvar str = (this.hasOwnProperty('name') && this.name ||\n\t\tthis.constructor.name || this.constructor.prototype.name);\n\tif (this.message)\n\t\tstr += ': ' + this.message;\n\tif (this.jse_cause && this.jse_cause.message)\n\t\tstr += '; caused by ' + this.jse_cause.toString();\n\n\treturn (str);\n};\n\n/*\n * For purely historical reasons, WError's cause() function allows you to set\n * the cause.\n */\nWError.prototype.cause = function we_cause(c)\n{\n\tif (mod_isError(c))\n\t\tthis.jse_cause = c;\n\n\treturn (this.jse_cause);\n};\n", "/**\r\n * JSONSchema Validator - Validates JavaScript objects using JSON Schemas\r\n *\t(http://www.json.com/json-schema-proposal/)\r\n * Licensed under AFL-2.1 OR BSD-3-Clause\r\nTo use the validator call the validate function with an instance object and an optional schema object.\r\nIf a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating),\r\nthat schema will be used to validate and the schema parameter is not necessary (if both exist,\r\nboth validations will occur).\r\nThe validate method will return an array of validation errors. If there are no errors, then an\r\nempty list will be returned. A validation error will have two properties:\r\n\"property\" which indicates which property had the error\r\n\"message\" which indicates what the error was\r\n */\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define([], function () {\r\n return factory();\r\n });\r\n } else if (typeof module === 'object' && module.exports) {\r\n // Node. Does not work with strict CommonJS, but\r\n // only CommonJS-like environments that support module.exports,\r\n // like Node.\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n root.jsonSchema = factory();\r\n }\r\n}(this, function () {// setup primitive classes to be JSON Schema types\r\nvar exports = validate\r\nexports.Integer = {type:\"integer\"};\r\nvar primitiveConstructors = {\r\n\tString: String,\r\n\tBoolean: Boolean,\r\n\tNumber: Number,\r\n\tObject: Object,\r\n\tArray: Array,\r\n\tDate: Date\r\n}\r\nexports.validate = validate;\r\nfunction validate(/*Any*/instance,/*Object*/schema) {\r\n\t\t// Summary:\r\n\t\t// \tTo use the validator call JSONSchema.validate with an instance object and an optional schema object.\r\n\t\t// \t\tIf a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating),\r\n\t\t// \t\tthat schema will be used to validate and the schema parameter is not necessary (if both exist,\r\n\t\t// \t\tboth validations will occur).\r\n\t\t// \t\tThe validate method will return an object with two properties:\r\n\t\t// \t\t\tvalid: A boolean indicating if the instance is valid by the schema\r\n\t\t// \t\t\terrors: An array of validation errors. If there are no errors, then an\r\n\t\t// \t\t\t\t\tempty list will be returned. A validation error will have two properties:\r\n\t\t// \t\t\t\t\t\tproperty: which indicates which property had the error\r\n\t\t// \t\t\t\t\t\tmessage: which indicates what the error was\r\n\t\t//\r\n\t\treturn validate(instance, schema, {changing: false});//, coerce: false, existingOnly: false});\r\n\t};\r\nexports.checkPropertyChange = function(/*Any*/value,/*Object*/schema, /*String*/property) {\r\n\t\t// Summary:\r\n\t\t// \t\tThe checkPropertyChange method will check to see if an value can legally be in property with the given schema\r\n\t\t// \t\tThis is slightly different than the validate method in that it will fail if the schema is readonly and it will\r\n\t\t// \t\tnot check for self-validation, it is assumed that the passed in value is already internally valid.\r\n\t\t// \t\tThe checkPropertyChange method will return the same object type as validate, see JSONSchema.validate for\r\n\t\t// \t\tinformation.\r\n\t\t//\r\n\t\treturn validate(value, schema, {changing: property || \"property\"});\r\n\t};\r\nvar validate = exports._validate = function(/*Any*/instance,/*Object*/schema,/*Object*/options) {\r\n\r\n\tif (!options) options = {};\r\n\tvar _changing = options.changing;\r\n\r\n\tfunction getType(schema){\r\n\t\treturn schema.type || (primitiveConstructors[schema.name] == schema && schema.name.toLowerCase());\r\n\t}\r\n\tvar errors = [];\r\n\t// validate a value against a property definition\r\n\tfunction checkProp(value, schema, path,i){\r\n\r\n\t\tvar l;\r\n\t\tpath += path ? typeof i == 'number' ? '[' + i + ']' : typeof i == 'undefined' ? '' : '.' + i : i;\r\n\t\tfunction addError(message){\r\n\t\t\terrors.push({property:path,message:message});\r\n\t\t}\r\n\r\n\t\tif((typeof schema != 'object' || schema instanceof Array) && (path || typeof schema != 'function') && !(schema && getType(schema))){\r\n\t\t\tif(typeof schema == 'function'){\r\n\t\t\t\tif(!(value instanceof schema)){\r\n\t\t\t\t\taddError(\"is not an instance of the class/constructor \" + schema.name);\r\n\t\t\t\t}\r\n\t\t\t}else if(schema){\r\n\t\t\t\taddError(\"Invalid schema/property definition \" + schema);\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif(_changing && schema.readonly){\r\n\t\t\taddError(\"is a readonly field, it can not be changed\");\r\n\t\t}\r\n\t\tif(schema['extends']){ // if it extends another schema, it must pass that schema as well\r\n\t\t\tcheckProp(value,schema['extends'],path,i);\r\n\t\t}\r\n\t\t// validate a value against a type definition\r\n\t\tfunction checkType(type,value){\r\n\t\t\tif(type){\r\n\t\t\t\tif(typeof type == 'string' && type != 'any' &&\r\n\t\t\t\t\t\t(type == 'null' ? value !== null : typeof value != type) &&\r\n\t\t\t\t\t\t!(value instanceof Array && type == 'array') &&\r\n\t\t\t\t\t\t!(value instanceof Date && type == 'date') &&\r\n\t\t\t\t\t\t!(type == 'integer' && value%1===0)){\r\n\t\t\t\t\treturn [{property:path,message:value + \" - \" + (typeof value) + \" value found, but a \" + type + \" is required\"}];\r\n\t\t\t\t}\r\n\t\t\t\tif(type instanceof Array){\r\n\t\t\t\t\tvar unionErrors=[];\r\n\t\t\t\t\tfor(var j = 0; j < type.length; j++){ // a union type\r\n\t\t\t\t\t\tif(!(unionErrors=checkType(type[j],value)).length){\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(unionErrors.length){\r\n\t\t\t\t\t\treturn unionErrors;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(typeof type == 'object'){\r\n\t\t\t\t\tvar priorErrors = errors;\r\n\t\t\t\t\terrors = [];\r\n\t\t\t\t\tcheckProp(value,type,path);\r\n\t\t\t\t\tvar theseErrors = errors;\r\n\t\t\t\t\terrors = priorErrors;\r\n\t\t\t\t\treturn theseErrors;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tif(value === undefined){\r\n\t\t\tif(schema.required){\r\n\t\t\t\taddError(\"is missing and it is required\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terrors = errors.concat(checkType(getType(schema),value));\r\n\t\t\tif(schema.disallow && !checkType(schema.disallow,value).length){\r\n\t\t\t\taddError(\" disallowed value was matched\");\r\n\t\t\t}\r\n\t\t\tif(value !== null){\r\n\t\t\t\tif(value instanceof Array){\r\n\t\t\t\t\tif(schema.items){\r\n\t\t\t\t\t\tvar itemsIsArray = schema.items instanceof Array;\r\n\t\t\t\t\t\tvar propDef = schema.items;\r\n\t\t\t\t\t\tfor (i = 0, l = value.length; i < l; i += 1) {\r\n\t\t\t\t\t\t\tif (itemsIsArray)\r\n\t\t\t\t\t\t\t\tpropDef = schema.items[i];\r\n\t\t\t\t\t\t\tif (options.coerce)\r\n\t\t\t\t\t\t\t\tvalue[i] = options.coerce(value[i], propDef);\r\n\t\t\t\t\t\t\terrors.concat(checkProp(value[i],propDef,path,i));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(schema.minItems && value.length < schema.minItems){\r\n\t\t\t\t\t\taddError(\"There must be a minimum of \" + schema.minItems + \" in the array\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(schema.maxItems && value.length > schema.maxItems){\r\n\t\t\t\t\t\taddError(\"There must be a maximum of \" + schema.maxItems + \" in the array\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(schema.properties || schema.additionalProperties){\r\n\t\t\t\t\terrors.concat(checkObj(value, schema.properties, path, schema.additionalProperties));\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.pattern && typeof value == 'string' && !value.match(schema.pattern)){\r\n\t\t\t\t\taddError(\"does not match the regex pattern \" + schema.pattern);\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.maxLength && typeof value == 'string' && value.length > schema.maxLength){\r\n\t\t\t\t\taddError(\"may only be \" + schema.maxLength + \" characters long\");\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.minLength && typeof value == 'string' && value.length < schema.minLength){\r\n\t\t\t\t\taddError(\"must be at least \" + schema.minLength + \" characters long\");\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.minimum !== 'undefined' && typeof value == typeof schema.minimum &&\r\n\t\t\t\t\t\tschema.minimum > value){\r\n\t\t\t\t\taddError(\"must have a minimum value of \" + schema.minimum);\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.maximum !== 'undefined' && typeof value == typeof schema.maximum &&\r\n\t\t\t\t\t\tschema.maximum < value){\r\n\t\t\t\t\taddError(\"must have a maximum value of \" + schema.maximum);\r\n\t\t\t\t}\r\n\t\t\t\tif(schema['enum']){\r\n\t\t\t\t\tvar enumer = schema['enum'];\r\n\t\t\t\t\tl = enumer.length;\r\n\t\t\t\t\tvar found;\r\n\t\t\t\t\tfor(var j = 0; j < l; j++){\r\n\t\t\t\t\t\tif(enumer[j]===value){\r\n\t\t\t\t\t\t\tfound=1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(!found){\r\n\t\t\t\t\t\taddError(\"does not have a value in the enumeration \" + enumer.join(\", \"));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.maxDecimal == 'number' &&\r\n\t\t\t\t\t(value.toString().match(new RegExp(\"\\\\.[0-9]{\" + (schema.maxDecimal + 1) + \",}\")))){\r\n\t\t\t\t\taddError(\"may only have \" + schema.maxDecimal + \" digits of decimal places\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\t// validate an object against a schema\r\n\tfunction checkObj(instance,objTypeDef,path,additionalProp){\r\n\r\n\t\tif(typeof objTypeDef =='object'){\r\n\t\t\tif(typeof instance != 'object' || instance instanceof Array){\r\n\t\t\t\terrors.push({property:path,message:\"an object is required\"});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tfor(var i in objTypeDef){ \r\n\t\t\t\tif(objTypeDef.hasOwnProperty(i) && i != '__proto__' && i != 'constructor'){\r\n\t\t\t\t\tvar value = instance.hasOwnProperty(i) ? instance[i] : undefined;\r\n\t\t\t\t\t// skip _not_ specified properties\r\n\t\t\t\t\tif (value === undefined && options.existingOnly) continue;\r\n\t\t\t\t\tvar propDef = objTypeDef[i];\r\n\t\t\t\t\t// set default\r\n\t\t\t\t\tif(value === undefined && propDef[\"default\"]){\r\n\t\t\t\t\t\tvalue = instance[i] = propDef[\"default\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(options.coerce && i in instance){\r\n\t\t\t\t\t\tvalue = instance[i] = options.coerce(value, propDef);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcheckProp(value,propDef,path,i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor(i in instance){\r\n\t\t\tif(instance.hasOwnProperty(i) && !(i.charAt(0) == '_' && i.charAt(1) == '_') && objTypeDef && !objTypeDef[i] && additionalProp===false){\r\n\t\t\t\tif (options.filter) {\r\n\t\t\t\t\tdelete instance[i];\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\terrors.push({property:path,message:\"The property \" + i +\r\n\t\t\t\t\t\t\" is not defined in the schema and the schema does not allow additional properties\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar requires = objTypeDef && objTypeDef[i] && objTypeDef[i].requires;\r\n\t\t\tif(requires && !(requires in instance)){\r\n\t\t\t\terrors.push({property:path,message:\"the presence of the property \" + i + \" requires that \" + requires + \" also be present\"});\r\n\t\t\t}\r\n\t\t\tvalue = instance[i];\r\n\t\t\tif(additionalProp && (!(objTypeDef && typeof objTypeDef == 'object') || !(i in objTypeDef))){\r\n\t\t\t\tif(options.coerce){\r\n\t\t\t\t\tvalue = instance[i] = options.coerce(value, additionalProp);\r\n\t\t\t\t}\r\n\t\t\t\tcheckProp(value,additionalProp,path,i);\r\n\t\t\t}\r\n\t\t\tif(!_changing && value && value.$schema){\r\n\t\t\t\terrors = errors.concat(checkProp(value,value.$schema,path,i));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn errors;\r\n\t}\r\n\tif(schema){\r\n\t\tcheckProp(instance,schema,'',_changing || '');\r\n\t}\r\n\tif(!_changing && instance && instance.$schema){\r\n\t\tcheckProp(instance,instance.$schema,'','');\r\n\t}\r\n\treturn {valid:!errors.length,errors:errors};\r\n};\r\nexports.mustBeValid = function(result){\r\n\t//\tsummary:\r\n\t//\t\tThis checks to ensure that the result is valid and will throw an appropriate error message if it is not\r\n\t// result: the result returned from checkPropertyChange or validate\r\n\tif(!result.valid){\r\n\t\tthrow new TypeError(result.errors.map(function(error){return \"for property \" + error.property + ': ' + error.message;}).join(\", \\n\"));\r\n\t}\r\n}\r\n\r\nreturn exports;\r\n}));\r\n", "/*\n * lib/jsprim.js: utilities for primitive JavaScript types\n */\n\nvar mod_assert = require('assert-plus');\nvar mod_util = require('util');\n\nvar mod_extsprintf = require('extsprintf');\nvar mod_verror = require('verror');\nvar mod_jsonschema = require('json-schema');\n\n/*\n * Public interface\n */\nexports.deepCopy = deepCopy;\nexports.deepEqual = deepEqual;\nexports.isEmpty = isEmpty;\nexports.hasKey = hasKey;\nexports.forEachKey = forEachKey;\nexports.pluck = pluck;\nexports.flattenObject = flattenObject;\nexports.flattenIter = flattenIter;\nexports.validateJsonObject = validateJsonObjectJS;\nexports.validateJsonObjectJS = validateJsonObjectJS;\nexports.randElt = randElt;\nexports.extraProperties = extraProperties;\nexports.mergeObjects = mergeObjects;\n\nexports.startsWith = startsWith;\nexports.endsWith = endsWith;\n\nexports.parseInteger = parseInteger;\n\nexports.iso8601 = iso8601;\nexports.rfc1123 = rfc1123;\nexports.parseDateTime = parseDateTime;\n\nexports.hrtimediff = hrtimeDiff;\nexports.hrtimeDiff = hrtimeDiff;\nexports.hrtimeAccum = hrtimeAccum;\nexports.hrtimeAdd = hrtimeAdd;\nexports.hrtimeNanosec = hrtimeNanosec;\nexports.hrtimeMicrosec = hrtimeMicrosec;\nexports.hrtimeMillisec = hrtimeMillisec;\n\n\n/*\n * Deep copy an acyclic *basic* Javascript object. This only handles basic\n * scalars (strings, numbers, booleans) and arbitrarily deep arrays and objects\n * containing these. This does *not* handle instances of other classes.\n */\nfunction deepCopy(obj)\n{\n\tvar ret, key;\n\tvar marker = '__deepCopy';\n\n\tif (obj && obj[marker])\n\t\tthrow (new Error('attempted deep copy of cyclic object'));\n\n\tif (obj && obj.constructor == Object) {\n\t\tret = {};\n\t\tobj[marker] = true;\n\n\t\tfor (key in obj) {\n\t\t\tif (key == marker)\n\t\t\t\tcontinue;\n\n\t\t\tret[key] = deepCopy(obj[key]);\n\t\t}\n\n\t\tdelete (obj[marker]);\n\t\treturn (ret);\n\t}\n\n\tif (obj && obj.constructor == Array) {\n\t\tret = [];\n\t\tobj[marker] = true;\n\n\t\tfor (key = 0; key < obj.length; key++)\n\t\t\tret.push(deepCopy(obj[key]));\n\n\t\tdelete (obj[marker]);\n\t\treturn (ret);\n\t}\n\n\t/*\n\t * It must be a primitive type -- just return it.\n\t */\n\treturn (obj);\n}\n\nfunction deepEqual(obj1, obj2)\n{\n\tif (typeof (obj1) != typeof (obj2))\n\t\treturn (false);\n\n\tif (obj1 === null || obj2 === null || typeof (obj1) != 'object')\n\t\treturn (obj1 === obj2);\n\n\tif (obj1.constructor != obj2.constructor)\n\t\treturn (false);\n\n\tvar k;\n\tfor (k in obj1) {\n\t\tif (!obj2.hasOwnProperty(k))\n\t\t\treturn (false);\n\n\t\tif (!deepEqual(obj1[k], obj2[k]))\n\t\t\treturn (false);\n\t}\n\n\tfor (k in obj2) {\n\t\tif (!obj1.hasOwnProperty(k))\n\t\t\treturn (false);\n\t}\n\n\treturn (true);\n}\n\nfunction isEmpty(obj)\n{\n\tvar key;\n\tfor (key in obj)\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction hasKey(obj, key)\n{\n\tmod_assert.equal(typeof (key), 'string');\n\treturn (Object.prototype.hasOwnProperty.call(obj, key));\n}\n\nfunction forEachKey(obj, callback)\n{\n\tfor (var key in obj) {\n\t\tif (hasKey(obj, key)) {\n\t\t\tcallback(key, obj[key]);\n\t\t}\n\t}\n}\n\nfunction pluck(obj, key)\n{\n\tmod_assert.equal(typeof (key), 'string');\n\treturn (pluckv(obj, key));\n}\n\nfunction pluckv(obj, key)\n{\n\tif (obj === null || typeof (obj) !== 'object')\n\t\treturn (undefined);\n\n\tif (obj.hasOwnProperty(key))\n\t\treturn (obj[key]);\n\n\tvar i = key.indexOf('.');\n\tif (i == -1)\n\t\treturn (undefined);\n\n\tvar key1 = key.substr(0, i);\n\tif (!obj.hasOwnProperty(key1))\n\t\treturn (undefined);\n\n\treturn (pluckv(obj[key1], key.substr(i + 1)));\n}\n\n/*\n * Invoke callback(row) for each entry in the array that would be returned by\n * flattenObject(data, depth). This is just like flattenObject(data,\n * depth).forEach(callback), except that the intermediate array is never\n * created.\n */\nfunction flattenIter(data, depth, callback)\n{\n\tdoFlattenIter(data, depth, [], callback);\n}\n\nfunction doFlattenIter(data, depth, accum, callback)\n{\n\tvar each;\n\tvar key;\n\n\tif (depth === 0) {\n\t\teach = accum.slice(0);\n\t\teach.push(data);\n\t\tcallback(each);\n\t\treturn;\n\t}\n\n\tmod_assert.ok(data !== null);\n\tmod_assert.equal(typeof (data), 'object');\n\tmod_assert.equal(typeof (depth), 'number');\n\tmod_assert.ok(depth >= 0);\n\n\tfor (key in data) {\n\t\teach = accum.slice(0);\n\t\teach.push(key);\n\t\tdoFlattenIter(data[key], depth - 1, each, callback);\n\t}\n}\n\nfunction flattenObject(data, depth)\n{\n\tif (depth === 0)\n\t\treturn ([ data ]);\n\n\tmod_assert.ok(data !== null);\n\tmod_assert.equal(typeof (data), 'object');\n\tmod_assert.equal(typeof (depth), 'number');\n\tmod_assert.ok(depth >= 0);\n\n\tvar rv = [];\n\tvar key;\n\n\tfor (key in data) {\n\t\tflattenObject(data[key], depth - 1).forEach(function (p) {\n\t\t\trv.push([ key ].concat(p));\n\t\t});\n\t}\n\n\treturn (rv);\n}\n\nfunction startsWith(str, prefix)\n{\n\treturn (str.substr(0, prefix.length) == prefix);\n}\n\nfunction endsWith(str, suffix)\n{\n\treturn (str.substr(\n\t str.length - suffix.length, suffix.length) == suffix);\n}\n\nfunction iso8601(d)\n{\n\tif (typeof (d) == 'number')\n\t\td = new Date(d);\n\tmod_assert.ok(d.constructor === Date);\n\treturn (mod_extsprintf.sprintf('%4d-%02d-%02dT%02d:%02d:%02d.%03dZ',\n\t d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(),\n\t d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(),\n\t d.getUTCMilliseconds()));\n}\n\nvar RFC1123_MONTHS = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nvar RFC1123_DAYS = [\n 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nfunction rfc1123(date) {\n\treturn (mod_extsprintf.sprintf('%s, %02d %s %04d %02d:%02d:%02d GMT',\n\t RFC1123_DAYS[date.getUTCDay()], date.getUTCDate(),\n\t RFC1123_MONTHS[date.getUTCMonth()], date.getUTCFullYear(),\n\t date.getUTCHours(), date.getUTCMinutes(),\n\t date.getUTCSeconds()));\n}\n\n/*\n * Parses a date expressed as a string, as either a number of milliseconds since\n * the epoch or any string format that Date accepts, giving preference to the\n * former where these two sets overlap (e.g., small numbers).\n */\nfunction parseDateTime(str)\n{\n\t/*\n\t * This is irritatingly implicit, but significantly more concise than\n\t * alternatives. The \"+str\" will convert a string containing only a\n\t * number directly to a Number, or NaN for other strings. Thus, if the\n\t * conversion succeeds, we use it (this is the milliseconds-since-epoch\n\t * case). Otherwise, we pass the string directly to the Date\n\t * constructor to parse.\n\t */\n\tvar numeric = +str;\n\tif (!isNaN(numeric)) {\n\t\treturn (new Date(numeric));\n\t} else {\n\t\treturn (new Date(str));\n\t}\n}\n\n\n/*\n * Number.*_SAFE_INTEGER isn't present before node v0.12, so we hardcode\n * the ES6 definitions here, while allowing for them to someday be higher.\n */\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\nvar MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\n\n\n/*\n * Default options for parseInteger().\n */\nvar PI_DEFAULTS = {\n\tbase: 10,\n\tallowSign: true,\n\tallowPrefix: false,\n\tallowTrailing: false,\n\tallowImprecise: false,\n\ttrimWhitespace: false,\n\tleadingZeroIsOctal: false\n};\n\nvar CP_0 = 0x30;\nvar CP_9 = 0x39;\n\nvar CP_A = 0x41;\nvar CP_B = 0x42;\nvar CP_O = 0x4f;\nvar CP_T = 0x54;\nvar CP_X = 0x58;\nvar CP_Z = 0x5a;\n\nvar CP_a = 0x61;\nvar CP_b = 0x62;\nvar CP_o = 0x6f;\nvar CP_t = 0x74;\nvar CP_x = 0x78;\nvar CP_z = 0x7a;\n\nvar PI_CONV_DEC = 0x30;\nvar PI_CONV_UC = 0x37;\nvar PI_CONV_LC = 0x57;\n\n\n/*\n * A stricter version of parseInt() that provides options for changing what\n * is an acceptable string (for example, disallowing trailing characters).\n */\nfunction parseInteger(str, uopts)\n{\n\tmod_assert.string(str, 'str');\n\tmod_assert.optionalObject(uopts, 'options');\n\n\tvar baseOverride = false;\n\tvar options = PI_DEFAULTS;\n\n\tif (uopts) {\n\t\tbaseOverride = hasKey(uopts, 'base');\n\t\toptions = mergeObjects(options, uopts);\n\t\tmod_assert.number(options.base, 'options.base');\n\t\tmod_assert.ok(options.base >= 2, 'options.base >= 2');\n\t\tmod_assert.ok(options.base <= 36, 'options.base <= 36');\n\t\tmod_assert.bool(options.allowSign, 'options.allowSign');\n\t\tmod_assert.bool(options.allowPrefix, 'options.allowPrefix');\n\t\tmod_assert.bool(options.allowTrailing,\n\t\t 'options.allowTrailing');\n\t\tmod_assert.bool(options.allowImprecise,\n\t\t 'options.allowImprecise');\n\t\tmod_assert.bool(options.trimWhitespace,\n\t\t 'options.trimWhitespace');\n\t\tmod_assert.bool(options.leadingZeroIsOctal,\n\t\t 'options.leadingZeroIsOctal');\n\n\t\tif (options.leadingZeroIsOctal) {\n\t\t\tmod_assert.ok(!baseOverride,\n\t\t\t '\"base\" and \"leadingZeroIsOctal\" are ' +\n\t\t\t 'mutually exclusive');\n\t\t}\n\t}\n\n\tvar c;\n\tvar pbase = -1;\n\tvar base = options.base;\n\tvar start;\n\tvar mult = 1;\n\tvar value = 0;\n\tvar idx = 0;\n\tvar len = str.length;\n\n\t/* Trim any whitespace on the left side. */\n\tif (options.trimWhitespace) {\n\t\twhile (idx < len && isSpace(str.charCodeAt(idx))) {\n\t\t\t++idx;\n\t\t}\n\t}\n\n\t/* Check the number for a leading sign. */\n\tif (options.allowSign) {\n\t\tif (str[idx] === '-') {\n\t\t\tidx += 1;\n\t\t\tmult = -1;\n\t\t} else if (str[idx] === '+') {\n\t\t\tidx += 1;\n\t\t}\n\t}\n\n\t/* Parse the base-indicating prefix if there is one. */\n\tif (str[idx] === '0') {\n\t\tif (options.allowPrefix) {\n\t\t\tpbase = prefixToBase(str.charCodeAt(idx + 1));\n\t\t\tif (pbase !== -1 && (!baseOverride || pbase === base)) {\n\t\t\t\tbase = pbase;\n\t\t\t\tidx += 2;\n\t\t\t}\n\t\t}\n\n\t\tif (pbase === -1 && options.leadingZeroIsOctal) {\n\t\t\tbase = 8;\n\t\t}\n\t}\n\n\t/* Parse the actual digits. */\n\tfor (start = idx; idx < len; ++idx) {\n\t\tc = translateDigit(str.charCodeAt(idx));\n\t\tif (c !== -1 && c < base) {\n\t\t\tvalue *= base;\n\t\t\tvalue += c;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* If we didn't parse any digits, we have an invalid number. */\n\tif (start === idx) {\n\t\treturn (new Error('invalid number: ' + JSON.stringify(str)));\n\t}\n\n\t/* Trim any whitespace on the right side. */\n\tif (options.trimWhitespace) {\n\t\twhile (idx < len && isSpace(str.charCodeAt(idx))) {\n\t\t\t++idx;\n\t\t}\n\t}\n\n\t/* Check for trailing characters. */\n\tif (idx < len && !options.allowTrailing) {\n\t\treturn (new Error('trailing characters after number: ' +\n\t\t JSON.stringify(str.slice(idx))));\n\t}\n\n\t/* If our value is 0, we return now, to avoid returning -0. */\n\tif (value === 0) {\n\t\treturn (0);\n\t}\n\n\t/* Calculate our final value. */\n\tvar result = value * mult;\n\n\t/*\n\t * If the string represents a value that cannot be precisely represented\n\t * by JavaScript, then we want to check that:\n\t *\n\t * - We never increased the value past MAX_SAFE_INTEGER\n\t * - We don't make the result negative and below MIN_SAFE_INTEGER\n\t *\n\t * Because we only ever increment the value during parsing, there's no\n\t * chance of moving past MAX_SAFE_INTEGER and then dropping below it\n\t * again, losing precision in the process. This means that we only need\n\t * to do our checks here, at the end.\n\t */\n\tif (!options.allowImprecise &&\n\t (value > MAX_SAFE_INTEGER || result < MIN_SAFE_INTEGER)) {\n\t\treturn (new Error('number is outside of the supported range: ' +\n\t\t JSON.stringify(str.slice(start, idx))));\n\t}\n\n\treturn (result);\n}\n\n\n/*\n * Interpret a character code as a base-36 digit.\n */\nfunction translateDigit(d)\n{\n\tif (d >= CP_0 && d <= CP_9) {\n\t\t/* '0' to '9' -> 0 to 9 */\n\t\treturn (d - PI_CONV_DEC);\n\t} else if (d >= CP_A && d <= CP_Z) {\n\t\t/* 'A' - 'Z' -> 10 to 35 */\n\t\treturn (d - PI_CONV_UC);\n\t} else if (d >= CP_a && d <= CP_z) {\n\t\t/* 'a' - 'z' -> 10 to 35 */\n\t\treturn (d - PI_CONV_LC);\n\t} else {\n\t\t/* Invalid character code */\n\t\treturn (-1);\n\t}\n}\n\n\n/*\n * Test if a value matches the ECMAScript definition of trimmable whitespace.\n */\nfunction isSpace(c)\n{\n\treturn (c === 0x20) ||\n\t (c >= 0x0009 && c <= 0x000d) ||\n\t (c === 0x00a0) ||\n\t (c === 0x1680) ||\n\t (c === 0x180e) ||\n\t (c >= 0x2000 && c <= 0x200a) ||\n\t (c === 0x2028) ||\n\t (c === 0x2029) ||\n\t (c === 0x202f) ||\n\t (c === 0x205f) ||\n\t (c === 0x3000) ||\n\t (c === 0xfeff);\n}\n\n\n/*\n * Determine which base a character indicates (e.g., 'x' indicates hex).\n */\nfunction prefixToBase(c)\n{\n\tif (c === CP_b || c === CP_B) {\n\t\t/* 0b/0B (binary) */\n\t\treturn (2);\n\t} else if (c === CP_o || c === CP_O) {\n\t\t/* 0o/0O (octal) */\n\t\treturn (8);\n\t} else if (c === CP_t || c === CP_T) {\n\t\t/* 0t/0T (decimal) */\n\t\treturn (10);\n\t} else if (c === CP_x || c === CP_X) {\n\t\t/* 0x/0X (hexadecimal) */\n\t\treturn (16);\n\t} else {\n\t\t/* Not a meaningful character */\n\t\treturn (-1);\n\t}\n}\n\n\nfunction validateJsonObjectJS(schema, input)\n{\n\tvar report = mod_jsonschema.validate(input, schema);\n\n\tif (report.errors.length === 0)\n\t\treturn (null);\n\n\t/* Currently, we only do anything useful with the first error. */\n\tvar error = report.errors[0];\n\n\t/* The failed property is given by a URI with an irrelevant prefix. */\n\tvar propname = error['property'];\n\tvar reason = error['message'].toLowerCase();\n\tvar i, j;\n\n\t/*\n\t * There's at least one case where the property error message is\n\t * confusing at best. We work around this here.\n\t */\n\tif ((i = reason.indexOf('the property ')) != -1 &&\n\t (j = reason.indexOf(' is not defined in the schema and the ' +\n\t 'schema does not allow additional properties')) != -1) {\n\t\ti += 'the property '.length;\n\t\tif (propname === '')\n\t\t\tpropname = reason.substr(i, j - i);\n\t\telse\n\t\t\tpropname = propname + '.' + reason.substr(i, j - i);\n\n\t\treason = 'unsupported property';\n\t}\n\n\tvar rv = new mod_verror.VError('property \"%s\": %s', propname, reason);\n\trv.jsv_details = error;\n\treturn (rv);\n}\n\nfunction randElt(arr)\n{\n\tmod_assert.ok(Array.isArray(arr) && arr.length > 0,\n\t 'randElt argument must be a non-empty array');\n\n\treturn (arr[Math.floor(Math.random() * arr.length)]);\n}\n\nfunction assertHrtime(a)\n{\n\tmod_assert.ok(a[0] >= 0 && a[1] >= 0,\n\t 'negative numbers not allowed in hrtimes');\n\tmod_assert.ok(a[1] < 1e9, 'nanoseconds column overflow');\n}\n\n/*\n * Compute the time elapsed between hrtime readings A and B, where A is later\n * than B. hrtime readings come from Node's process.hrtime(). There is no\n * defined way to represent negative deltas, so it's illegal to diff B from A\n * where the time denoted by B is later than the time denoted by A. If this\n * becomes valuable, we can define a representation and extend the\n * implementation to support it.\n */\nfunction hrtimeDiff(a, b)\n{\n\tassertHrtime(a);\n\tassertHrtime(b);\n\tmod_assert.ok(a[0] > b[0] || (a[0] == b[0] && a[1] >= b[1]),\n\t 'negative differences not allowed');\n\n\tvar rv = [ a[0] - b[0], 0 ];\n\n\tif (a[1] >= b[1]) {\n\t\trv[1] = a[1] - b[1];\n\t} else {\n\t\trv[0]--;\n\t\trv[1] = 1e9 - (b[1] - a[1]);\n\t}\n\n\treturn (rv);\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of nanoseconds.\n */\nfunction hrtimeNanosec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e9 + a[1]));\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of microseconds.\n */\nfunction hrtimeMicrosec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e6 + a[1] / 1e3));\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of milliseconds.\n */\nfunction hrtimeMillisec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e3 + a[1] / 1e6));\n}\n\n/*\n * Add two hrtime readings A and B, overwriting A with the result of the\n * addition. This function is useful for accumulating several hrtime intervals\n * into a counter. Returns A.\n */\nfunction hrtimeAccum(a, b)\n{\n\tassertHrtime(a);\n\tassertHrtime(b);\n\n\t/*\n\t * Accumulate the nanosecond component.\n\t */\n\ta[1] += b[1];\n\tif (a[1] >= 1e9) {\n\t\t/*\n\t\t * The nanosecond component overflowed, so carry to the seconds\n\t\t * field.\n\t\t */\n\t\ta[0]++;\n\t\ta[1] -= 1e9;\n\t}\n\n\t/*\n\t * Accumulate the seconds component.\n\t */\n\ta[0] += b[0];\n\n\treturn (a);\n}\n\n/*\n * Add two hrtime readings A and B, returning the result as a new hrtime array.\n * Does not modify either input argument.\n */\nfunction hrtimeAdd(a, b)\n{\n\tassertHrtime(a);\n\n\tvar rv = [ a[0], a[1] ];\n\n\treturn (hrtimeAccum(rv, b));\n}\n\n\n/*\n * Check an object for unexpected properties. Accepts the object to check, and\n * an array of allowed property names (strings). Returns an array of key names\n * that were found on the object, but did not appear in the list of allowed\n * properties. If no properties were found, the returned array will be of\n * zero length.\n */\nfunction extraProperties(obj, allowed)\n{\n\tmod_assert.ok(typeof (obj) === 'object' && obj !== null,\n\t 'obj argument must be a non-null object');\n\tmod_assert.ok(Array.isArray(allowed),\n\t 'allowed argument must be an array of strings');\n\tfor (var i = 0; i < allowed.length; i++) {\n\t\tmod_assert.ok(typeof (allowed[i]) === 'string',\n\t\t 'allowed argument must be an array of strings');\n\t}\n\n\treturn (Object.keys(obj).filter(function (key) {\n\t\treturn (allowed.indexOf(key) === -1);\n\t}));\n}\n\n/*\n * Given three sets of properties \"provided\" (may be undefined), \"overrides\"\n * (required), and \"defaults\" (may be undefined), construct an object containing\n * the union of these sets with \"overrides\" overriding \"provided\", and\n * \"provided\" overriding \"defaults\". None of the input objects are modified.\n */\nfunction mergeObjects(provided, overrides, defaults)\n{\n\tvar rv, k;\n\n\trv = {};\n\tif (defaults) {\n\t\tfor (k in defaults)\n\t\t\trv[k] = defaults[k];\n\t}\n\n\tif (provided) {\n\t\tfor (k in provided)\n\t\t\trv[k] = provided[k];\n\t}\n\n\tif (overrides) {\n\t\tfor (k in overrides)\n\t\t\trv[k] = overrides[k];\n\t}\n\n\treturn (rv);\n}\n", "// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar http = require('http');\nvar util = require('util');\nvar sshpk = require('sshpk');\nvar jsprim = require('jsprim');\nvar utils = require('./utils');\n\nvar sprintf = require('util').format;\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\n///--- Globals\n\nvar AUTHZ_FMT =\n 'Signature keyId=\"%s\",algorithm=\"%s\",headers=\"%s\",signature=\"%s\"';\n\n///--- Specific Errors\n\nfunction MissingHeaderError(message) {\n HttpSignatureError.call(this, message, MissingHeaderError);\n}\nutil.inherits(MissingHeaderError, HttpSignatureError);\n\nfunction StrictParsingError(message) {\n HttpSignatureError.call(this, message, StrictParsingError);\n}\nutil.inherits(StrictParsingError, HttpSignatureError);\n\n/* See createSigner() */\nfunction RequestSigner(options) {\n assert.object(options, 'options');\n\n var alg = [];\n if (options.algorithm !== undefined) {\n assert.string(options.algorithm, 'options.algorithm');\n alg = validateAlgorithm(options.algorithm);\n }\n this.rs_alg = alg;\n\n /*\n * RequestSigners come in two varieties: ones with an rs_signFunc, and ones\n * with an rs_signer.\n *\n * rs_signFunc-based RequestSigners have to build up their entire signing\n * string within the rs_lines array and give it to rs_signFunc as a single\n * concat'd blob. rs_signer-based RequestSigners can add a line at a time to\n * their signing state by using rs_signer.update(), thus only needing to\n * buffer the hash function state and one line at a time.\n */\n if (options.sign !== undefined) {\n assert.func(options.sign, 'options.sign');\n this.rs_signFunc = options.sign;\n\n } else if (alg[0] === 'hmac' && options.key !== undefined) {\n assert.string(options.keyId, 'options.keyId');\n this.rs_keyId = options.keyId;\n\n if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))\n throw (new TypeError('options.key for HMAC must be a string or Buffer'));\n\n /*\n * Make an rs_signer for HMACs, not a rs_signFunc -- HMACs digest their\n * data in chunks rather than requiring it all to be given in one go\n * at the end, so they are more similar to signers than signFuncs.\n */\n this.rs_signer = crypto.createHmac(alg[1].toUpperCase(), options.key);\n this.rs_signer.sign = function () {\n var digest = this.digest('base64');\n return ({\n hashAlgorithm: alg[1],\n toString: function () { return (digest); }\n });\n };\n\n } else if (options.key !== undefined) {\n var key = options.key;\n if (typeof (key) === 'string' || Buffer.isBuffer(key))\n key = sshpk.parsePrivateKey(key);\n\n assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),\n 'options.key must be a sshpk.PrivateKey');\n this.rs_key = key;\n\n assert.string(options.keyId, 'options.keyId');\n this.rs_keyId = options.keyId;\n\n if (!PK_ALGOS[key.type]) {\n throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +\n 'keys are not supported'));\n }\n\n if (alg[0] !== undefined && key.type !== alg[0]) {\n throw (new InvalidAlgorithmError('options.key must be a ' +\n alg[0].toUpperCase() + ' key, was given a ' +\n key.type.toUpperCase() + ' key instead'));\n }\n\n this.rs_signer = key.createSign(alg[1]);\n\n } else {\n throw (new TypeError('options.sign (func) or options.key is required'));\n }\n\n this.rs_headers = [];\n this.rs_lines = [];\n}\n\n/**\n * Adds a header to be signed, with its value, into this signer.\n *\n * @param {String} header\n * @param {String} value\n * @return {String} value written\n */\nRequestSigner.prototype.writeHeader = function (header, value) {\n assert.string(header, 'header');\n header = header.toLowerCase();\n assert.string(value, 'value');\n\n this.rs_headers.push(header);\n\n if (this.rs_signFunc) {\n this.rs_lines.push(header + ': ' + value);\n\n } else {\n var line = header + ': ' + value;\n if (this.rs_headers.length > 0)\n line = '\\n' + line;\n this.rs_signer.update(line);\n }\n\n return (value);\n};\n\n/**\n * Adds a default Date header, returning its value.\n *\n * @return {String}\n */\nRequestSigner.prototype.writeDateHeader = function () {\n return (this.writeHeader('date', jsprim.rfc1123(new Date())));\n};\n\n/**\n * Adds the request target line to be signed.\n *\n * @param {String} method, HTTP method (e.g. 'get', 'post', 'put')\n * @param {String} path\n */\nRequestSigner.prototype.writeTarget = function (method, path) {\n assert.string(method, 'method');\n assert.string(path, 'path');\n method = method.toLowerCase();\n this.writeHeader('(request-target)', method + ' ' + path);\n};\n\n/**\n * Calculate the value for the Authorization header on this request\n * asynchronously.\n *\n * @param {Func} callback (err, authz)\n */\nRequestSigner.prototype.sign = function (cb) {\n assert.func(cb, 'callback');\n\n if (this.rs_headers.length < 1)\n throw (new Error('At least one header must be signed'));\n\n var alg, authz;\n if (this.rs_signFunc) {\n var data = this.rs_lines.join('\\n');\n var self = this;\n this.rs_signFunc(data, function (err, sig) {\n if (err) {\n cb(err);\n return;\n }\n try {\n assert.object(sig, 'signature');\n assert.string(sig.keyId, 'signature.keyId');\n assert.string(sig.algorithm, 'signature.algorithm');\n assert.string(sig.signature, 'signature.signature');\n alg = validateAlgorithm(sig.algorithm);\n\n authz = sprintf(AUTHZ_FMT,\n sig.keyId,\n sig.algorithm,\n self.rs_headers.join(' '),\n sig.signature);\n } catch (e) {\n cb(e);\n return;\n }\n cb(null, authz);\n });\n\n } else {\n try {\n var sigObj = this.rs_signer.sign();\n } catch (e) {\n cb(e);\n return;\n }\n alg = (this.rs_alg[0] || this.rs_key.type) + '-' + sigObj.hashAlgorithm;\n var signature = sigObj.toString();\n authz = sprintf(AUTHZ_FMT,\n this.rs_keyId,\n alg,\n this.rs_headers.join(' '),\n signature);\n cb(null, authz);\n }\n};\n\n///--- Exported API\n\nmodule.exports = {\n /**\n * Identifies whether a given object is a request signer or not.\n *\n * @param {Object} object, the object to identify\n * @returns {Boolean}\n */\n isSigner: function (obj) {\n if (typeof (obj) === 'object' && obj instanceof RequestSigner)\n return (true);\n return (false);\n },\n\n /**\n * Creates a request signer, used to asynchronously build a signature\n * for a request (does not have to be an http.ClientRequest).\n *\n * @param {Object} options, either:\n * - {String} keyId\n * - {String|Buffer} key\n * - {String} algorithm (optional, required for HMAC)\n * or:\n * - {Func} sign (data, cb)\n * @return {RequestSigner}\n */\n createSigner: function createSigner(options) {\n return (new RequestSigner(options));\n },\n\n /**\n * Adds an 'Authorization' header to an http.ClientRequest object.\n *\n * Note that this API will add a Date header if it's not already set. Any\n * other headers in the options.headers array MUST be present, or this\n * will throw.\n *\n * You shouldn't need to check the return type; it's just there if you want\n * to be pedantic.\n *\n * The optional flag indicates whether parsing should use strict enforcement\n * of the version draft-cavage-http-signatures-04 of the spec or beyond.\n * The default is to be loose and support\n * older versions for compatibility.\n *\n * @param {Object} request an instance of http.ClientRequest.\n * @param {Object} options signing parameters object:\n * - {String} keyId required.\n * - {String} key required (either a PEM or HMAC key).\n * - {Array} headers optional; defaults to ['date'].\n * - {String} algorithm optional (unless key is HMAC);\n * default is the same as the sshpk default\n * signing algorithm for the type of key given\n * - {String} httpVersion optional; defaults to '1.1'.\n * - {Boolean} strict optional; defaults to 'false'.\n * @return {Boolean} true if Authorization (and optionally Date) were added.\n * @throws {TypeError} on bad parameter types (input).\n * @throws {InvalidAlgorithmError} if algorithm was bad or incompatible with\n * the given key.\n * @throws {sshpk.KeyParseError} if key was bad.\n * @throws {MissingHeaderError} if a header to be signed was specified but\n * was not present.\n */\n signRequest: function signRequest(request, options) {\n assert.object(request, 'request');\n assert.object(options, 'options');\n assert.optionalString(options.algorithm, 'options.algorithm');\n assert.string(options.keyId, 'options.keyId');\n assert.optionalArrayOfString(options.headers, 'options.headers');\n assert.optionalString(options.httpVersion, 'options.httpVersion');\n\n if (!request.getHeader('Date'))\n request.setHeader('Date', jsprim.rfc1123(new Date()));\n if (!options.headers)\n options.headers = ['date'];\n if (!options.httpVersion)\n options.httpVersion = '1.1';\n\n var alg = [];\n if (options.algorithm) {\n options.algorithm = options.algorithm.toLowerCase();\n alg = validateAlgorithm(options.algorithm);\n }\n\n var i;\n var stringToSign = '';\n for (i = 0; i < options.headers.length; i++) {\n if (typeof (options.headers[i]) !== 'string')\n throw new TypeError('options.headers must be an array of Strings');\n\n var h = options.headers[i].toLowerCase();\n\n if (h === 'request-line') {\n if (!options.strict) {\n /**\n * We allow headers from the older spec drafts if strict parsing isn't\n * specified in options.\n */\n stringToSign +=\n request.method + ' ' + request.path + ' HTTP/' +\n options.httpVersion;\n } else {\n /* Strict parsing doesn't allow older draft headers. */\n throw (new StrictParsingError('request-line is not a valid header ' +\n 'with strict parsing enabled.'));\n }\n } else if (h === '(request-target)') {\n stringToSign +=\n '(request-target): ' + request.method.toLowerCase() + ' ' +\n request.path;\n } else {\n var value = request.getHeader(h);\n if (value === undefined || value === '') {\n throw new MissingHeaderError(h + ' was not in the request');\n }\n stringToSign += h + ': ' + value;\n }\n\n if ((i + 1) < options.headers.length)\n stringToSign += '\\n';\n }\n\n /* This is just for unit tests. */\n if (request.hasOwnProperty('_stringToSign')) {\n request._stringToSign = stringToSign;\n }\n\n var signature;\n if (alg[0] === 'hmac') {\n if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))\n throw (new TypeError('options.key must be a string or Buffer'));\n\n var hmac = crypto.createHmac(alg[1].toUpperCase(), options.key);\n hmac.update(stringToSign);\n signature = hmac.digest('base64');\n\n } else {\n var key = options.key;\n if (typeof (key) === 'string' || Buffer.isBuffer(key))\n key = sshpk.parsePrivateKey(options.key);\n\n assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),\n 'options.key must be a sshpk.PrivateKey');\n\n if (!PK_ALGOS[key.type]) {\n throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +\n 'keys are not supported'));\n }\n\n if (alg[0] !== undefined && key.type !== alg[0]) {\n throw (new InvalidAlgorithmError('options.key must be a ' +\n alg[0].toUpperCase() + ' key, was given a ' +\n key.type.toUpperCase() + ' key instead'));\n }\n\n var signer = key.createSign(alg[1]);\n signer.update(stringToSign);\n var sigObj = signer.sign();\n if (!HASH_ALGOS[sigObj.hashAlgorithm]) {\n throw (new InvalidAlgorithmError(sigObj.hashAlgorithm.toUpperCase() +\n ' is not a supported hash algorithm'));\n }\n options.algorithm = key.type + '-' + sigObj.hashAlgorithm;\n signature = sigObj.toString();\n assert.notStrictEqual(signature, '', 'empty signature produced');\n }\n\n var authzHeaderName = options.authorizationHeaderName || 'Authorization';\n\n request.setHeader(authzHeaderName, sprintf(AUTHZ_FMT,\n options.keyId,\n options.algorithm,\n options.headers.join(' '),\n signature));\n\n return true;\n }\n\n};\n", "// Copyright 2015 Joyent, Inc.\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar sshpk = require('sshpk');\nvar utils = require('./utils');\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\n///--- Exported API\n\nmodule.exports = {\n /**\n * Verify RSA/DSA signature against public key. You are expected to pass in\n * an object that was returned from `parse()`.\n *\n * @param {Object} parsedSignature the object you got from `parse`.\n * @param {String} pubkey RSA/DSA private key PEM.\n * @return {Boolean} true if valid, false otherwise.\n * @throws {TypeError} if you pass in bad arguments.\n * @throws {InvalidAlgorithmError}\n */\n verifySignature: function verifySignature(parsedSignature, pubkey) {\n assert.object(parsedSignature, 'parsedSignature');\n if (typeof (pubkey) === 'string' || Buffer.isBuffer(pubkey))\n pubkey = sshpk.parseKey(pubkey);\n assert.ok(sshpk.Key.isKey(pubkey, [1, 1]), 'pubkey must be a sshpk.Key');\n\n var alg = validateAlgorithm(parsedSignature.algorithm);\n if (alg[0] === 'hmac' || alg[0] !== pubkey.type)\n return (false);\n\n var v = pubkey.createVerify(alg[1]);\n v.update(parsedSignature.signingString);\n return (v.verify(parsedSignature.params.signature, 'base64'));\n },\n\n /**\n * Verify HMAC against shared secret. You are expected to pass in an object\n * that was returned from `parse()`.\n *\n * @param {Object} parsedSignature the object you got from `parse`.\n * @param {String} secret HMAC shared secret.\n * @return {Boolean} true if valid, false otherwise.\n * @throws {TypeError} if you pass in bad arguments.\n * @throws {InvalidAlgorithmError}\n */\n verifyHMAC: function verifyHMAC(parsedSignature, secret) {\n assert.object(parsedSignature, 'parsedHMAC');\n assert.string(secret, 'secret');\n\n var alg = validateAlgorithm(parsedSignature.algorithm);\n if (alg[0] !== 'hmac')\n return (false);\n\n var hashAlg = alg[1].toUpperCase();\n\n var hmac = crypto.createHmac(hashAlg, secret);\n hmac.update(parsedSignature.signingString);\n\n /*\n * Now double-hash to avoid leaking timing information - there's\n * no easy constant-time compare in JS, so we use this approach\n * instead. See for more info:\n * https://www.isecpartners.com/blog/2011/february/double-hmac-\n * verification.aspx\n */\n var h1 = crypto.createHmac(hashAlg, secret);\n h1.update(hmac.digest());\n h1 = h1.digest();\n var h2 = crypto.createHmac(hashAlg, secret);\n h2.update(new Buffer(parsedSignature.params.signature, 'base64'));\n h2 = h2.digest();\n\n /* Node 0.8 returns strings from .digest(). */\n if (typeof (h1) === 'string')\n return (h1 === h2);\n /* And node 0.10 lacks the .equals() method on Buffers. */\n if (Buffer.isBuffer(h1) && !h1.equals)\n return (h1.toString('binary') === h2.toString('binary'));\n\n return (h1.equals(h2));\n }\n};\n", "// Copyright 2015 Joyent, Inc.\n\nvar parser = require('./parser');\nvar signer = require('./signer');\nvar verify = require('./verify');\nvar utils = require('./utils');\n\n\n\n///--- API\n\nmodule.exports = {\n\n parse: parser.parseRequest,\n parseRequest: parser.parseRequest,\n\n sign: signer.signRequest,\n signRequest: signer.signRequest,\n createSigner: signer.createSigner,\n isSigner: signer.isSigner,\n\n sshKeyToPEM: utils.sshKeyToPEM,\n sshKeyFingerprint: utils.fingerprint,\n pemToRsaSSHKey: utils.pemToRsaSSHKey,\n\n verify: verify.verifySignature,\n verifySignature: verify.verifySignature,\n verifyHMAC: verify.verifyHMAC\n};\n", "{\n \"application/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"application/3gpdash-qoe-report+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/3gpp-ims+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphalforms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/a2l\": {\n \"source\": \"iana\"\n },\n \"application/ace+cbor\": {\n \"source\": \"iana\"\n },\n \"application/activemessage\": {\n \"source\": \"iana\"\n },\n \"application/activity+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-directory+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcost+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcostparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointprop+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointpropparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-error+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamcontrol+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/aml\": {\n \"source\": \"iana\"\n },\n \"application/andrew-inset\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez\"]\n },\n \"application/applefile\": {\n \"source\": \"iana\"\n },\n \"application/applixware\": {\n \"source\": \"apache\",\n \"extensions\": [\"aw\"]\n },\n \"application/at+jwt\": {\n \"source\": \"iana\"\n },\n \"application/atf\": {\n \"source\": \"iana\"\n },\n \"application/atfx\": {\n \"source\": \"iana\"\n },\n \"application/atom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atom\"]\n },\n \"application/atomcat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomcat\"]\n },\n \"application/atomdeleted+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomdeleted\"]\n },\n \"application/atomicmail\": {\n \"source\": \"iana\"\n },\n \"application/atomsvc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomsvc\"]\n },\n \"application/atsc-dwd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dwd\"]\n },\n \"application/atsc-dynamic-event-message\": {\n \"source\": \"iana\"\n },\n \"application/atsc-held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"held\"]\n },\n \"application/atsc-rdt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/atsc-rsat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsat\"]\n },\n \"application/atxml\": {\n \"source\": \"iana\"\n },\n \"application/auth-policy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/bacnet-xdd+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/batch-smtp\": {\n \"source\": \"iana\"\n },\n \"application/bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/beep+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/calendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/calendar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xcs\"]\n },\n \"application/call-completion\": {\n \"source\": \"iana\"\n },\n \"application/cals-1840\": {\n \"source\": \"iana\"\n },\n \"application/captive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cbor\": {\n \"source\": \"iana\"\n },\n \"application/cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/cccex\": {\n \"source\": \"iana\"\n },\n \"application/ccmp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ccxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ccxml\"]\n },\n \"application/cdfx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdfx\"]\n },\n \"application/cdmi-capability\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmia\"]\n },\n \"application/cdmi-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmic\"]\n },\n \"application/cdmi-domain\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmid\"]\n },\n \"application/cdmi-object\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmio\"]\n },\n \"application/cdmi-queue\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmiq\"]\n },\n \"application/cdni\": {\n \"source\": \"iana\"\n },\n \"application/cea\": {\n \"source\": \"iana\"\n },\n \"application/cea-2018+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cellml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cfw\": {\n \"source\": \"iana\"\n },\n \"application/city+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clr\": {\n \"source\": \"iana\"\n },\n \"application/clue+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clue_info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cms\": {\n \"source\": \"iana\"\n },\n \"application/cnrp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-group+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-payload\": {\n \"source\": \"iana\"\n },\n \"application/commonground\": {\n \"source\": \"iana\"\n },\n \"application/conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cose\": {\n \"source\": \"iana\"\n },\n \"application/cose-key\": {\n \"source\": \"iana\"\n },\n \"application/cose-key-set\": {\n \"source\": \"iana\"\n },\n \"application/cpl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cpl\"]\n },\n \"application/csrattrs\": {\n \"source\": \"iana\"\n },\n \"application/csta+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cstadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/csvm+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cu-seeme\": {\n \"source\": \"apache\",\n \"extensions\": [\"cu\"]\n },\n \"application/cwt\": {\n \"source\": \"iana\"\n },\n \"application/cybercash\": {\n \"source\": \"iana\"\n },\n \"application/dart\": {\n \"compressible\": true\n },\n \"application/dash+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpd\"]\n },\n \"application/dash-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpp\"]\n },\n \"application/dashdelta\": {\n \"source\": \"iana\"\n },\n \"application/davmount+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"davmount\"]\n },\n \"application/dca-rft\": {\n \"source\": \"iana\"\n },\n \"application/dcd\": {\n \"source\": \"iana\"\n },\n \"application/dec-dx\": {\n \"source\": \"iana\"\n },\n \"application/dialog-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom\": {\n \"source\": \"iana\"\n },\n \"application/dicom+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dii\": {\n \"source\": \"iana\"\n },\n \"application/dit\": {\n \"source\": \"iana\"\n },\n \"application/dns\": {\n \"source\": \"iana\"\n },\n \"application/dns+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dns-message\": {\n \"source\": \"iana\"\n },\n \"application/docbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dbk\"]\n },\n \"application/dots+cbor\": {\n \"source\": \"iana\"\n },\n \"application/dskpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dssc+der\": {\n \"source\": \"iana\",\n \"extensions\": [\"dssc\"]\n },\n \"application/dssc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdssc\"]\n },\n \"application/dvcs\": {\n \"source\": \"iana\"\n },\n \"application/ecmascript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es\",\"ecma\"]\n },\n \"application/edi-consent\": {\n \"source\": \"iana\"\n },\n \"application/edi-x12\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/edifact\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/efi\": {\n \"source\": \"iana\"\n },\n \"application/elm+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/elm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.cap+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/emergencycalldata.comment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.deviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.ecall.msd\": {\n \"source\": \"iana\"\n },\n \"application/emergencycalldata.providerinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.serviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.subscriberinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.veds+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emma+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emma\"]\n },\n \"application/emotionml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emotionml\"]\n },\n \"application/encaprtp\": {\n \"source\": \"iana\"\n },\n \"application/epp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/epub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"epub\"]\n },\n \"application/eshop\": {\n \"source\": \"iana\"\n },\n \"application/exi\": {\n \"source\": \"iana\",\n \"extensions\": [\"exi\"]\n },\n \"application/expect-ct-report+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/express\": {\n \"source\": \"iana\",\n \"extensions\": [\"exp\"]\n },\n \"application/fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/fastsoap\": {\n \"source\": \"iana\"\n },\n \"application/fdt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fdt\"]\n },\n \"application/fhir+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fhir+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fido.trusted-apps+json\": {\n \"compressible\": true\n },\n \"application/fits\": {\n \"source\": \"iana\"\n },\n \"application/flexfec\": {\n \"source\": \"iana\"\n },\n \"application/font-sfnt\": {\n \"source\": \"iana\"\n },\n \"application/font-tdpfr\": {\n \"source\": \"iana\",\n \"extensions\": [\"pfr\"]\n },\n \"application/font-woff\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/framework-attributes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"geojson\"]\n },\n \"application/geo+json-seq\": {\n \"source\": \"iana\"\n },\n \"application/geopackage+sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/geoxacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/gltf-buffer\": {\n \"source\": \"iana\"\n },\n \"application/gml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gml\"]\n },\n \"application/gpx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"gpx\"]\n },\n \"application/gxf\": {\n \"source\": \"apache\",\n \"extensions\": [\"gxf\"]\n },\n \"application/gzip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gz\"]\n },\n \"application/h224\": {\n \"source\": \"iana\"\n },\n \"application/held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/hjson\": {\n \"extensions\": [\"hjson\"]\n },\n \"application/http\": {\n \"source\": \"iana\"\n },\n \"application/hyperstudio\": {\n \"source\": \"iana\",\n \"extensions\": [\"stk\"]\n },\n \"application/ibe-key-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pkg-reply+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pp-data\": {\n \"source\": \"iana\"\n },\n \"application/iges\": {\n \"source\": \"iana\"\n },\n \"application/im-iscomposing+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/index\": {\n \"source\": \"iana\"\n },\n \"application/index.cmd\": {\n \"source\": \"iana\"\n },\n \"application/index.obj\": {\n \"source\": \"iana\"\n },\n \"application/index.response\": {\n \"source\": \"iana\"\n },\n \"application/index.vnd\": {\n \"source\": \"iana\"\n },\n \"application/inkml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ink\",\"inkml\"]\n },\n \"application/iotp\": {\n \"source\": \"iana\"\n },\n \"application/ipfix\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipfix\"]\n },\n \"application/ipp\": {\n \"source\": \"iana\"\n },\n \"application/isup\": {\n \"source\": \"iana\"\n },\n \"application/its+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"its\"]\n },\n \"application/java-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jar\",\"war\",\"ear\"]\n },\n \"application/java-serialized-object\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"ser\"]\n },\n \"application/java-vm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"class\"]\n },\n \"application/javascript\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"js\",\"mjs\"]\n },\n \"application/jf2feed+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jose\": {\n \"source\": \"iana\"\n },\n \"application/jose+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jrd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jscalendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"json\",\"map\"]\n },\n \"application/json-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json-seq\": {\n \"source\": \"iana\"\n },\n \"application/json5\": {\n \"extensions\": [\"json5\"]\n },\n \"application/jsonml+json\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"jsonml\"]\n },\n \"application/jwk+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwk-set+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwt\": {\n \"source\": \"iana\"\n },\n \"application/kpml-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/kpml-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ld+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"jsonld\"]\n },\n \"application/lgr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lgr\"]\n },\n \"application/link-format\": {\n \"source\": \"iana\"\n },\n \"application/load-control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lost+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lostxml\"]\n },\n \"application/lostsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lpf+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/lxf\": {\n \"source\": \"iana\"\n },\n \"application/mac-binhex40\": {\n \"source\": \"iana\",\n \"extensions\": [\"hqx\"]\n },\n \"application/mac-compactpro\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpt\"]\n },\n \"application/macwriteii\": {\n \"source\": \"iana\"\n },\n \"application/mads+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mads\"]\n },\n \"application/manifest+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"webmanifest\"]\n },\n \"application/marc\": {\n \"source\": \"iana\",\n \"extensions\": [\"mrc\"]\n },\n \"application/marcxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mrcx\"]\n },\n \"application/mathematica\": {\n \"source\": \"iana\",\n \"extensions\": [\"ma\",\"nb\",\"mb\"]\n },\n \"application/mathml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mathml\"]\n },\n \"application/mathml-content+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mathml-presentation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-associated-procedure-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-deregister+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-envelope+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-protection-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-reception-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-schedule+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-user-service-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbox\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbox\"]\n },\n \"application/media-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpf\"]\n },\n \"application/media_control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mediaservercontrol+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mscml\"]\n },\n \"application/merge-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/metalink+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"metalink\"]\n },\n \"application/metalink4+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"meta4\"]\n },\n \"application/mets+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mets\"]\n },\n \"application/mf4\": {\n \"source\": \"iana\"\n },\n \"application/mikey\": {\n \"source\": \"iana\"\n },\n \"application/mipc\": {\n \"source\": \"iana\"\n },\n \"application/missing-blocks+cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/mmt-aei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"maei\"]\n },\n \"application/mmt-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musd\"]\n },\n \"application/mods+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mods\"]\n },\n \"application/moss-keys\": {\n \"source\": \"iana\"\n },\n \"application/moss-signature\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-data\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-request\": {\n \"source\": \"iana\"\n },\n \"application/mp21\": {\n \"source\": \"iana\",\n \"extensions\": [\"m21\",\"mp21\"]\n },\n \"application/mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"mp4s\",\"m4p\"]\n },\n \"application/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod-xmt\": {\n \"source\": \"iana\"\n },\n \"application/mrb-consumer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mrb-publish+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/msc-ivr+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msc-mixer+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msword\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"doc\",\"dot\"]\n },\n \"application/mud+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/multipart-core\": {\n \"source\": \"iana\"\n },\n \"application/mxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxf\"]\n },\n \"application/n-quads\": {\n \"source\": \"iana\",\n \"extensions\": [\"nq\"]\n },\n \"application/n-triples\": {\n \"source\": \"iana\",\n \"extensions\": [\"nt\"]\n },\n \"application/nasdata\": {\n \"source\": \"iana\"\n },\n \"application/news-checkgroups\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-groupinfo\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-transmission\": {\n \"source\": \"iana\"\n },\n \"application/nlsml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/node\": {\n \"source\": \"iana\",\n \"extensions\": [\"cjs\"]\n },\n \"application/nss\": {\n \"source\": \"iana\"\n },\n \"application/oauth-authz-req+jwt\": {\n \"source\": \"iana\"\n },\n \"application/oblivious-dns-message\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-request\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-response\": {\n \"source\": \"iana\"\n },\n \"application/octet-stream\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n },\n \"application/oda\": {\n \"source\": \"iana\",\n \"extensions\": [\"oda\"]\n },\n \"application/odm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/odx\": {\n \"source\": \"iana\"\n },\n \"application/oebps-package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"opf\"]\n },\n \"application/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogx\"]\n },\n \"application/omdoc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"omdoc\"]\n },\n \"application/onenote\": {\n \"source\": \"apache\",\n \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"]\n },\n \"application/opc-nodeset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/oscore\": {\n \"source\": \"iana\"\n },\n \"application/oxps\": {\n \"source\": \"iana\",\n \"extensions\": [\"oxps\"]\n },\n \"application/p21\": {\n \"source\": \"iana\"\n },\n \"application/p21+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/p2p-overlay+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"relo\"]\n },\n \"application/parityfec\": {\n \"source\": \"iana\"\n },\n \"application/passport\": {\n \"source\": \"iana\"\n },\n \"application/patch-ops-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xer\"]\n },\n \"application/pdf\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pdf\"]\n },\n \"application/pdx\": {\n \"source\": \"iana\"\n },\n \"application/pem-certificate-chain\": {\n \"source\": \"iana\"\n },\n \"application/pgp-encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pgp\"]\n },\n \"application/pgp-keys\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\"]\n },\n \"application/pgp-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\",\"sig\"]\n },\n \"application/pics-rules\": {\n \"source\": \"apache\",\n \"extensions\": [\"prf\"]\n },\n \"application/pidf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pidf-diff+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pkcs10\": {\n \"source\": \"iana\",\n \"extensions\": [\"p10\"]\n },\n \"application/pkcs12\": {\n \"source\": \"iana\"\n },\n \"application/pkcs7-mime\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7m\",\"p7c\"]\n },\n \"application/pkcs7-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7s\"]\n },\n \"application/pkcs8\": {\n \"source\": \"iana\",\n \"extensions\": [\"p8\"]\n },\n \"application/pkcs8-encrypted\": {\n \"source\": \"iana\"\n },\n \"application/pkix-attr-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"ac\"]\n },\n \"application/pkix-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"cer\"]\n },\n \"application/pkix-crl\": {\n \"source\": \"iana\",\n \"extensions\": [\"crl\"]\n },\n \"application/pkix-pkipath\": {\n \"source\": \"iana\",\n \"extensions\": [\"pkipath\"]\n },\n \"application/pkixcmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"pki\"]\n },\n \"application/pls+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pls\"]\n },\n \"application/poc-settings+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/postscript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ai\",\"eps\",\"ps\"]\n },\n \"application/ppsp-tracker+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/provenance+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"provx\"]\n },\n \"application/prs.alvestrand.titrax-sheet\": {\n \"source\": \"iana\"\n },\n \"application/prs.cww\": {\n \"source\": \"iana\",\n \"extensions\": [\"cww\"]\n },\n \"application/prs.cyn\": {\n \"source\": \"iana\",\n \"charset\": \"7-BIT\"\n },\n \"application/prs.hpub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/prs.nprend\": {\n \"source\": \"iana\"\n },\n \"application/prs.plucker\": {\n \"source\": \"iana\"\n },\n \"application/prs.rdf-xml-crypt\": {\n \"source\": \"iana\"\n },\n \"application/prs.xsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/pskc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pskcxml\"]\n },\n \"application/pvd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/qsig\": {\n \"source\": \"iana\"\n },\n \"application/raml+yaml\": {\n \"compressible\": true,\n \"extensions\": [\"raml\"]\n },\n \"application/raptorfec\": {\n \"source\": \"iana\"\n },\n \"application/rdap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rdf\",\"owl\"]\n },\n \"application/reginfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rif\"]\n },\n \"application/relax-ng-compact-syntax\": {\n \"source\": \"iana\",\n \"extensions\": [\"rnc\"]\n },\n \"application/remote-printing\": {\n \"source\": \"iana\"\n },\n \"application/reputon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/resource-lists+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rl\"]\n },\n \"application/resource-lists-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rld\"]\n },\n \"application/rfc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/riscos\": {\n \"source\": \"iana\"\n },\n \"application/rlmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rls-services+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rs\"]\n },\n \"application/route-apd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rapd\"]\n },\n \"application/route-s-tsid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sls\"]\n },\n \"application/route-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rusd\"]\n },\n \"application/rpki-ghostbusters\": {\n \"source\": \"iana\",\n \"extensions\": [\"gbr\"]\n },\n \"application/rpki-manifest\": {\n \"source\": \"iana\",\n \"extensions\": [\"mft\"]\n },\n \"application/rpki-publication\": {\n \"source\": \"iana\"\n },\n \"application/rpki-roa\": {\n \"source\": \"iana\",\n \"extensions\": [\"roa\"]\n },\n \"application/rpki-updown\": {\n \"source\": \"iana\"\n },\n \"application/rsd+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rsd\"]\n },\n \"application/rss+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rss\"]\n },\n \"application/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"application/rtploopback\": {\n \"source\": \"iana\"\n },\n \"application/rtx\": {\n \"source\": \"iana\"\n },\n \"application/samlassertion+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/samlmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif-external-properties+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sbe\": {\n \"source\": \"iana\"\n },\n \"application/sbml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sbml\"]\n },\n \"application/scaip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scim+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scvp-cv-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"scq\"]\n },\n \"application/scvp-cv-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"scs\"]\n },\n \"application/scvp-vp-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"spq\"]\n },\n \"application/scvp-vp-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"spp\"]\n },\n \"application/sdp\": {\n \"source\": \"iana\",\n \"extensions\": [\"sdp\"]\n },\n \"application/secevent+jwt\": {\n \"source\": \"iana\"\n },\n \"application/senml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"senmlx\"]\n },\n \"application/senml-etch+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml-etch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sensml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/sensml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sensml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sensmlx\"]\n },\n \"application/sensml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sep+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sep-exi\": {\n \"source\": \"iana\"\n },\n \"application/session-info\": {\n \"source\": \"iana\"\n },\n \"application/set-payment\": {\n \"source\": \"iana\"\n },\n \"application/set-payment-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setpay\"]\n },\n \"application/set-registration\": {\n \"source\": \"iana\"\n },\n \"application/set-registration-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setreg\"]\n },\n \"application/sgml\": {\n \"source\": \"iana\"\n },\n \"application/sgml-open-catalog\": {\n \"source\": \"iana\"\n },\n \"application/shf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"shf\"]\n },\n \"application/sieve\": {\n \"source\": \"iana\",\n \"extensions\": [\"siv\",\"sieve\"]\n },\n \"application/simple-filter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/simple-message-summary\": {\n \"source\": \"iana\"\n },\n \"application/simplesymbolcontainer\": {\n \"source\": \"iana\"\n },\n \"application/sipc\": {\n \"source\": \"iana\"\n },\n \"application/slate\": {\n \"source\": \"iana\"\n },\n \"application/smil\": {\n \"source\": \"iana\"\n },\n \"application/smil+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"smi\",\"smil\"]\n },\n \"application/smpte336m\": {\n \"source\": \"iana\"\n },\n \"application/soap+fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/soap+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sparql-query\": {\n \"source\": \"iana\",\n \"extensions\": [\"rq\"]\n },\n \"application/sparql-results+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"srx\"]\n },\n \"application/spdx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/spirits-event+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sql\": {\n \"source\": \"iana\"\n },\n \"application/srgs\": {\n \"source\": \"iana\",\n \"extensions\": [\"gram\"]\n },\n \"application/srgs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"grxml\"]\n },\n \"application/sru+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sru\"]\n },\n \"application/ssdl+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ssdl\"]\n },\n \"application/ssml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ssml\"]\n },\n \"application/stix+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/swid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"swidtag\"]\n },\n \"application/tamp-apex-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-apex-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-error\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-query\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-response\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tar\": {\n \"compressible\": true\n },\n \"application/taxii+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/td+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tei\",\"teicorpus\"]\n },\n \"application/tetra_isi\": {\n \"source\": \"iana\"\n },\n \"application/thraud+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tfi\"]\n },\n \"application/timestamp-query\": {\n \"source\": \"iana\"\n },\n \"application/timestamp-reply\": {\n \"source\": \"iana\"\n },\n \"application/timestamped-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"tsd\"]\n },\n \"application/tlsrpt+gzip\": {\n \"source\": \"iana\"\n },\n \"application/tlsrpt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tnauthlist\": {\n \"source\": \"iana\"\n },\n \"application/token-introspection+jwt\": {\n \"source\": \"iana\"\n },\n \"application/toml\": {\n \"compressible\": true,\n \"extensions\": [\"toml\"]\n },\n \"application/trickle-ice-sdpfrag\": {\n \"source\": \"iana\"\n },\n \"application/trig\": {\n \"source\": \"iana\",\n \"extensions\": [\"trig\"]\n },\n \"application/ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttml\"]\n },\n \"application/tve-trigger\": {\n \"source\": \"iana\"\n },\n \"application/tzif\": {\n \"source\": \"iana\"\n },\n \"application/tzif-leap\": {\n \"source\": \"iana\"\n },\n \"application/ubjson\": {\n \"compressible\": false,\n \"extensions\": [\"ubj\"]\n },\n \"application/ulpfec\": {\n \"source\": \"iana\"\n },\n \"application/urc-grpsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/urc-ressheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsheet\"]\n },\n \"application/urc-targetdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"td\"]\n },\n \"application/urc-uisocketdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vemmi\": {\n \"source\": \"iana\"\n },\n \"application/vividence.scriptfile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.1000minds.decision-model+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"1km\"]\n },\n \"application/vnd.3gpp-prose+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-prose-pc3ch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-v2x-local-service-information\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.5gnas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.access-transfer-events+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.bsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gmop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gtpc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.interworking-data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.lpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mc-signalling-ear\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-payload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-signalling\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-signed+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mid-call+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ngap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pfcp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pic-bw-large\": {\n \"source\": \"iana\",\n \"extensions\": [\"plb\"]\n },\n \"application/vnd.3gpp.pic-bw-small\": {\n \"source\": \"iana\",\n \"extensions\": [\"psb\"]\n },\n \"application/vnd.3gpp.pic-bw-var\": {\n \"source\": \"iana\",\n \"extensions\": [\"pvb\"]\n },\n \"application/vnd.3gpp.s1ap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-ext+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.state-and-event-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ussd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp2.tcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tcap\"]\n },\n \"application/vnd.3lightssoftware.imagescal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3m.post-it-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"pwn\"]\n },\n \"application/vnd.accpac.simply.aso\": {\n \"source\": \"iana\",\n \"extensions\": [\"aso\"]\n },\n \"application/vnd.accpac.simply.imp\": {\n \"source\": \"iana\",\n \"extensions\": [\"imp\"]\n },\n \"application/vnd.acucobol\": {\n \"source\": \"iana\",\n \"extensions\": [\"acu\"]\n },\n \"application/vnd.acucorp\": {\n \"source\": \"iana\",\n \"extensions\": [\"atc\",\"acutc\"]\n },\n \"application/vnd.adobe.air-application-installer-package+zip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"air\"]\n },\n \"application/vnd.adobe.flash.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.formscentral.fcdt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcdt\"]\n },\n \"application/vnd.adobe.fxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fxp\",\"fxpl\"]\n },\n \"application/vnd.adobe.partial-upload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.xdp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdp\"]\n },\n \"application/vnd.adobe.xfdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdf\"]\n },\n \"application/vnd.aether.imp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata-pagedef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.cmoca-cmresource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-charset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codedfont\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codepage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-cmtable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-formdef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-mediummap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-objectcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-overlay\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-pagesegment\": {\n \"source\": \"iana\"\n },\n \"application/vnd.age\": {\n \"source\": \"iana\",\n \"extensions\": [\"age\"]\n },\n \"application/vnd.ah-barcode\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ahead.space\": {\n \"source\": \"iana\",\n \"extensions\": [\"ahead\"]\n },\n \"application/vnd.airzip.filesecure.azf\": {\n \"source\": \"iana\",\n \"extensions\": [\"azf\"]\n },\n \"application/vnd.airzip.filesecure.azs\": {\n \"source\": \"iana\",\n \"extensions\": [\"azs\"]\n },\n \"application/vnd.amadeus+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.amazon.ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"azw\"]\n },\n \"application/vnd.amazon.mobi8-ebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.americandynamics.acc\": {\n \"source\": \"iana\",\n \"extensions\": [\"acc\"]\n },\n \"application/vnd.amiga.ami\": {\n \"source\": \"iana\",\n \"extensions\": [\"ami\"]\n },\n \"application/vnd.amundsen.maze+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.android.ota\": {\n \"source\": \"iana\"\n },\n \"application/vnd.android.package-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"apk\"]\n },\n \"application/vnd.anki\": {\n \"source\": \"iana\"\n },\n \"application/vnd.anser-web-certificate-issue-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"cii\"]\n },\n \"application/vnd.anser-web-funds-transfer-initiation\": {\n \"source\": \"apache\",\n \"extensions\": [\"fti\"]\n },\n \"application/vnd.antix.game-component\": {\n \"source\": \"iana\",\n \"extensions\": [\"atx\"]\n },\n \"application/vnd.apache.arrow.file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.arrow.stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.compact\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.json\": {\n \"source\": \"iana\"\n },\n \"application/vnd.api+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.aplextor.warrp+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apothekende.reservation+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apple.installer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpkg\"]\n },\n \"application/vnd.apple.keynote\": {\n \"source\": \"iana\",\n \"extensions\": [\"key\"]\n },\n \"application/vnd.apple.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"m3u8\"]\n },\n \"application/vnd.apple.numbers\": {\n \"source\": \"iana\",\n \"extensions\": [\"numbers\"]\n },\n \"application/vnd.apple.pages\": {\n \"source\": \"iana\",\n \"extensions\": [\"pages\"]\n },\n \"application/vnd.apple.pkpass\": {\n \"compressible\": false,\n \"extensions\": [\"pkpass\"]\n },\n \"application/vnd.arastra.swi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.aristanetworks.swi\": {\n \"source\": \"iana\",\n \"extensions\": [\"swi\"]\n },\n \"application/vnd.artisan+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.artsquare\": {\n \"source\": \"iana\"\n },\n \"application/vnd.astraea-software.iota\": {\n \"source\": \"iana\",\n \"extensions\": [\"iota\"]\n },\n \"application/vnd.audiograph\": {\n \"source\": \"iana\",\n \"extensions\": [\"aep\"]\n },\n \"application/vnd.autopackage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.avalon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.avistar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.balsamiq.bmml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmml\"]\n },\n \"application/vnd.balsamiq.bmpr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.banana-accounting\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.error\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bekitzur-stech+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bint.med-content\": {\n \"source\": \"iana\"\n },\n \"application/vnd.biopax.rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.blink-idb-value-wrapper\": {\n \"source\": \"iana\"\n },\n \"application/vnd.blueice.multipass\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpm\"]\n },\n \"application/vnd.bluetooth.ep.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bluetooth.le.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bmi\": {\n \"source\": \"iana\",\n \"extensions\": [\"bmi\"]\n },\n \"application/vnd.bpf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bpf3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.businessobjects\": {\n \"source\": \"iana\",\n \"extensions\": [\"rep\"]\n },\n \"application/vnd.byu.uapi+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cab-jscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-cpdl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-lips\": {\n \"source\": \"iana\"\n },\n \"application/vnd.capasystems-pg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cendio.thinlinc.clientconf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.century-systems.tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chemdraw+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdxml\"]\n },\n \"application/vnd.chess-pgn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chipnuts.karaoke-mmd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmd\"]\n },\n \"application/vnd.ciedi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cinderella\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdy\"]\n },\n \"application/vnd.cirpack.isdn-ext\": {\n \"source\": \"iana\"\n },\n \"application/vnd.citationstyles.style+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csl\"]\n },\n \"application/vnd.claymore\": {\n \"source\": \"iana\",\n \"extensions\": [\"cla\"]\n },\n \"application/vnd.cloanto.rp9\": {\n \"source\": \"iana\",\n \"extensions\": [\"rp9\"]\n },\n \"application/vnd.clonk.c4group\": {\n \"source\": \"iana\",\n \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n },\n \"application/vnd.cluetrust.cartomobile-config\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amc\"]\n },\n \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amz\"]\n },\n \"application/vnd.coffeescript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collection+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.doc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.next+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.comicbook+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.comicbook-rar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commerce-battelle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commonspace\": {\n \"source\": \"iana\",\n \"extensions\": [\"csp\"]\n },\n \"application/vnd.contact.cmsg\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdbcmsg\"]\n },\n \"application/vnd.coreos.ignition+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cosmocaller\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmc\"]\n },\n \"application/vnd.crick.clicker\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkx\"]\n },\n \"application/vnd.crick.clicker.keyboard\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkk\"]\n },\n \"application/vnd.crick.clicker.palette\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkp\"]\n },\n \"application/vnd.crick.clicker.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkt\"]\n },\n \"application/vnd.crick.clicker.wordbank\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkw\"]\n },\n \"application/vnd.criticaltools.wbs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wbs\"]\n },\n \"application/vnd.cryptii.pipe+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.crypto-shade-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.vault\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ctc-posml\": {\n \"source\": \"iana\",\n \"extensions\": [\"pml\"]\n },\n \"application/vnd.ctct.ws+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cups-pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-postscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-ppd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppd\"]\n },\n \"application/vnd.cups-raster\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-raw\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl.car\": {\n \"source\": \"apache\",\n \"extensions\": [\"car\"]\n },\n \"application/vnd.curl.pcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcurl\"]\n },\n \"application/vnd.cyan.dean.root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cybank\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cyclonedx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cyclonedx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.d2l.coursepackage1p0+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.d3m-dataset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.d3m-problem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dart\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dart\"]\n },\n \"application/vnd.data-vision.rdz\": {\n \"source\": \"iana\",\n \"extensions\": [\"rdz\"]\n },\n \"application/vnd.datapackage+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dataresource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dbf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dbf\"]\n },\n \"application/vnd.debian.binary-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dece.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n },\n \"application/vnd.dece.ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uvt\",\"uvvt\"]\n },\n \"application/vnd.dece.unspecified\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvx\",\"uvvx\"]\n },\n \"application/vnd.dece.zip\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvz\",\"uvvz\"]\n },\n \"application/vnd.denovo.fcselayout-link\": {\n \"source\": \"iana\",\n \"extensions\": [\"fe_launch\"]\n },\n \"application/vnd.desmume.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dm.delegation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dna\": {\n \"source\": \"iana\",\n \"extensions\": [\"dna\"]\n },\n \"application/vnd.document+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dolby.mlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"mlp\"]\n },\n \"application/vnd.dolby.mobile.1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dolby.mobile.2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.doremir.scorecloud-binary-document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dpgraph\": {\n \"source\": \"iana\",\n \"extensions\": [\"dpg\"]\n },\n \"application/vnd.dreamfactory\": {\n \"source\": \"iana\",\n \"extensions\": [\"dfac\"]\n },\n \"application/vnd.drive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ds-keypoint\": {\n \"source\": \"apache\",\n \"extensions\": [\"kpxx\"]\n },\n \"application/vnd.dtg.local\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.flash\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ait\": {\n \"source\": \"iana\",\n \"extensions\": [\"ait\"]\n },\n \"application/vnd.dvb.dvbisl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.dvbj\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.esgcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcdftnotifaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgpdd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcroaming\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-base\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-enhancement\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.notif-aggregate-root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-container+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-generic+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-msglist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-init+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.pfr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.service\": {\n \"source\": \"iana\",\n \"extensions\": [\"svc\"]\n },\n \"application/vnd.dxr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dynageo\": {\n \"source\": \"iana\",\n \"extensions\": [\"geo\"]\n },\n \"application/vnd.dzr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.easykaraoke.cdgdownload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecdis-update\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecip.rlp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eclipse.ditto+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ecowin.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"mag\"]\n },\n \"application/vnd.ecowin.filerequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.fileupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.series\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesrequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.img\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.iso\": {\n \"source\": \"iana\"\n },\n \"application/vnd.emclient.accessrequest+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.enliven\": {\n \"source\": \"iana\",\n \"extensions\": [\"nml\"]\n },\n \"application/vnd.enphase.envoy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eprints.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.epson.esf\": {\n \"source\": \"iana\",\n \"extensions\": [\"esf\"]\n },\n \"application/vnd.epson.msf\": {\n \"source\": \"iana\",\n \"extensions\": [\"msf\"]\n },\n \"application/vnd.epson.quickanime\": {\n \"source\": \"iana\",\n \"extensions\": [\"qam\"]\n },\n \"application/vnd.epson.salt\": {\n \"source\": \"iana\",\n \"extensions\": [\"slt\"]\n },\n \"application/vnd.epson.ssf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ssf\"]\n },\n \"application/vnd.ericsson.quickcall\": {\n \"source\": \"iana\"\n },\n \"application/vnd.espass-espass+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.eszigno3+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es3\",\"et3\"]\n },\n \"application/vnd.etsi.aoc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.asic-e+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.asic-s+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.cug+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvcommand+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-bc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-cod+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-npvr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvservice+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mcid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mheg5\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.pstn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.sci+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.simservs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.timestamp-token\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.tsl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.tsl.der\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eu.kasparian.car+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.eudora.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.profile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.settings\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.theme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.exstream-empower+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.exstream-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ezpix-album\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez2\"]\n },\n \"application/vnd.ezpix-package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez3\"]\n },\n \"application/vnd.f-secure.mobile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.familysearch.gedcom+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.fastcopy-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"fdf\"]\n },\n \"application/vnd.fdsn.mseed\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseed\"]\n },\n \"application/vnd.fdsn.seed\": {\n \"source\": \"iana\",\n \"extensions\": [\"seed\",\"dataless\"]\n },\n \"application/vnd.ffsns\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ficlab.flb+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.filmit.zfc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fints\": {\n \"source\": \"iana\"\n },\n \"application/vnd.firemonkeys.cloudcell\": {\n \"source\": \"iana\"\n },\n \"application/vnd.flographit\": {\n \"source\": \"iana\",\n \"extensions\": [\"gph\"]\n },\n \"application/vnd.fluxtime.clip\": {\n \"source\": \"iana\",\n \"extensions\": [\"ftc\"]\n },\n \"application/vnd.font-fontforge-sfd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.framemaker\": {\n \"source\": \"iana\",\n \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n },\n \"application/vnd.frogans.fnc\": {\n \"source\": \"iana\",\n \"extensions\": [\"fnc\"]\n },\n \"application/vnd.frogans.ltf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ltf\"]\n },\n \"application/vnd.fsc.weblaunch\": {\n \"source\": \"iana\",\n \"extensions\": [\"fsc\"]\n },\n \"application/vnd.fujifilm.fb.docuworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.binder\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.jfi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fujitsu.oasys\": {\n \"source\": \"iana\",\n \"extensions\": [\"oas\"]\n },\n \"application/vnd.fujitsu.oasys2\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa2\"]\n },\n \"application/vnd.fujitsu.oasys3\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa3\"]\n },\n \"application/vnd.fujitsu.oasysgp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fg5\"]\n },\n \"application/vnd.fujitsu.oasysprs\": {\n \"source\": \"iana\",\n \"extensions\": [\"bh2\"]\n },\n \"application/vnd.fujixerox.art-ex\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.art4\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.ddd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ddd\"]\n },\n \"application/vnd.fujixerox.docuworks\": {\n \"source\": \"iana\",\n \"extensions\": [\"xdw\"]\n },\n \"application/vnd.fujixerox.docuworks.binder\": {\n \"source\": \"iana\",\n \"extensions\": [\"xbd\"]\n },\n \"application/vnd.fujixerox.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.hbpl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fut-misnet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fuzzysheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fzs\"]\n },\n \"application/vnd.genomatix.tuxedo\": {\n \"source\": \"iana\",\n \"extensions\": [\"txd\"]\n },\n \"application/vnd.gentics.grd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geocube+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geogebra.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggb\"]\n },\n \"application/vnd.geogebra.slides\": {\n \"source\": \"iana\"\n },\n \"application/vnd.geogebra.tool\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggt\"]\n },\n \"application/vnd.geometry-explorer\": {\n \"source\": \"iana\",\n \"extensions\": [\"gex\",\"gre\"]\n },\n \"application/vnd.geonext\": {\n \"source\": \"iana\",\n \"extensions\": [\"gxt\"]\n },\n \"application/vnd.geoplan\": {\n \"source\": \"iana\",\n \"extensions\": [\"g2w\"]\n },\n \"application/vnd.geospace\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3w\"]\n },\n \"application/vnd.gerber\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.gmx\": {\n \"source\": \"iana\",\n \"extensions\": [\"gmx\"]\n },\n \"application/vnd.google-apps.document\": {\n \"compressible\": false,\n \"extensions\": [\"gdoc\"]\n },\n \"application/vnd.google-apps.presentation\": {\n \"compressible\": false,\n \"extensions\": [\"gslides\"]\n },\n \"application/vnd.google-apps.spreadsheet\": {\n \"compressible\": false,\n \"extensions\": [\"gsheet\"]\n },\n \"application/vnd.google-earth.kml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"kml\"]\n },\n \"application/vnd.google-earth.kmz\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"kmz\"]\n },\n \"application/vnd.gov.sk.e-form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.gov.sk.e-form+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.grafeq\": {\n \"source\": \"iana\",\n \"extensions\": [\"gqf\",\"gqs\"]\n },\n \"application/vnd.gridmp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.groove-account\": {\n \"source\": \"iana\",\n \"extensions\": [\"gac\"]\n },\n \"application/vnd.groove-help\": {\n \"source\": \"iana\",\n \"extensions\": [\"ghf\"]\n },\n \"application/vnd.groove-identity-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gim\"]\n },\n \"application/vnd.groove-injector\": {\n \"source\": \"iana\",\n \"extensions\": [\"grv\"]\n },\n \"application/vnd.groove-tool-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtm\"]\n },\n \"application/vnd.groove-tool-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpl\"]\n },\n \"application/vnd.groove-vcard\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcg\"]\n },\n \"application/vnd.hal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"hal\"]\n },\n \"application/vnd.handheld-entertainment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zmm\"]\n },\n \"application/vnd.hbci\": {\n \"source\": \"iana\",\n \"extensions\": [\"hbci\"]\n },\n \"application/vnd.hc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hcl-bireports\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hdt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.heroku+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hhe.lesson-player\": {\n \"source\": \"iana\",\n \"extensions\": [\"les\"]\n },\n \"application/vnd.hl7cda+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hl7v2+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hp-hpgl\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpgl\"]\n },\n \"application/vnd.hp-hpid\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpid\"]\n },\n \"application/vnd.hp-hps\": {\n \"source\": \"iana\",\n \"extensions\": [\"hps\"]\n },\n \"application/vnd.hp-jlyt\": {\n \"source\": \"iana\",\n \"extensions\": [\"jlt\"]\n },\n \"application/vnd.hp-pcl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcl\"]\n },\n \"application/vnd.hp-pclxl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pclxl\"]\n },\n \"application/vnd.httphone\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hydrostatix.sof-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfd-hdstx\"]\n },\n \"application/vnd.hyper+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyper-item+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyperdrive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hzn-3d-crossword\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.electronic-media\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.minipay\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpy\"]\n },\n \"application/vnd.ibm.modcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n },\n \"application/vnd.ibm.rights-management\": {\n \"source\": \"iana\",\n \"extensions\": [\"irm\"]\n },\n \"application/vnd.ibm.secure-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"sc\"]\n },\n \"application/vnd.iccprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"icc\",\"icm\"]\n },\n \"application/vnd.ieee.1905\": {\n \"source\": \"iana\"\n },\n \"application/vnd.igloader\": {\n \"source\": \"iana\",\n \"extensions\": [\"igl\"]\n },\n \"application/vnd.imagemeter.folder+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.imagemeter.image+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.immervision-ivp\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivp\"]\n },\n \"application/vnd.immervision-ivu\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivu\"]\n },\n \"application/vnd.ims.imsccv1p1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.lis.v2.result+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informedcontrol.rms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informix-visionary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.innopath.wamp.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.insors.igm\": {\n \"source\": \"iana\",\n \"extensions\": [\"igm\"]\n },\n \"application/vnd.intercon.formnet\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpw\",\"xpx\"]\n },\n \"application/vnd.intergeo\": {\n \"source\": \"iana\",\n \"extensions\": [\"i2g\"]\n },\n \"application/vnd.intertrust.digibox\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intertrust.nncp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intu.qbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"qbo\"]\n },\n \"application/vnd.intu.qfx\": {\n \"source\": \"iana\",\n \"extensions\": [\"qfx\"]\n },\n \"application/vnd.iptc.g2.catalogitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.conceptitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.packageitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.planningitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ipunplugged.rcprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"rcprofile\"]\n },\n \"application/vnd.irepository.package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"irp\"]\n },\n \"application/vnd.is-xpr\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpr\"]\n },\n \"application/vnd.isac.fcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcs\"]\n },\n \"application/vnd.iso11783-10+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.jam\": {\n \"source\": \"iana\",\n \"extensions\": [\"jam\"]\n },\n \"application/vnd.japannet-directory-service\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-jpnstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-payment-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-setstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.jcp.javame.midlet-rms\": {\n \"source\": \"iana\",\n \"extensions\": [\"rms\"]\n },\n \"application/vnd.jisp\": {\n \"source\": \"iana\",\n \"extensions\": [\"jisp\"]\n },\n \"application/vnd.joost.joda-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"joda\"]\n },\n \"application/vnd.jsk.isdn-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.kahootz\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktz\",\"ktr\"]\n },\n \"application/vnd.kde.karbon\": {\n \"source\": \"iana\",\n \"extensions\": [\"karbon\"]\n },\n \"application/vnd.kde.kchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"chrt\"]\n },\n \"application/vnd.kde.kformula\": {\n \"source\": \"iana\",\n \"extensions\": [\"kfo\"]\n },\n \"application/vnd.kde.kivio\": {\n \"source\": \"iana\",\n \"extensions\": [\"flw\"]\n },\n \"application/vnd.kde.kontour\": {\n \"source\": \"iana\",\n \"extensions\": [\"kon\"]\n },\n \"application/vnd.kde.kpresenter\": {\n \"source\": \"iana\",\n \"extensions\": [\"kpr\",\"kpt\"]\n },\n \"application/vnd.kde.kspread\": {\n \"source\": \"iana\",\n \"extensions\": [\"ksp\"]\n },\n \"application/vnd.kde.kword\": {\n \"source\": \"iana\",\n \"extensions\": [\"kwd\",\"kwt\"]\n },\n \"application/vnd.kenameaapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"htke\"]\n },\n \"application/vnd.kidspiration\": {\n \"source\": \"iana\",\n \"extensions\": [\"kia\"]\n },\n \"application/vnd.kinar\": {\n \"source\": \"iana\",\n \"extensions\": [\"kne\",\"knp\"]\n },\n \"application/vnd.koan\": {\n \"source\": \"iana\",\n \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n },\n \"application/vnd.kodak-descriptor\": {\n \"source\": \"iana\",\n \"extensions\": [\"sse\"]\n },\n \"application/vnd.las\": {\n \"source\": \"iana\"\n },\n \"application/vnd.las.las+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.las.las+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lasxml\"]\n },\n \"application/vnd.laszip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.leap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.liberty-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.llamagraphics.life-balance.desktop\": {\n \"source\": \"iana\",\n \"extensions\": [\"lbd\"]\n },\n \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lbe\"]\n },\n \"application/vnd.logipipe.circuit+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.loom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.lotus-1-2-3\": {\n \"source\": \"iana\",\n \"extensions\": [\"123\"]\n },\n \"application/vnd.lotus-approach\": {\n \"source\": \"iana\",\n \"extensions\": [\"apr\"]\n },\n \"application/vnd.lotus-freelance\": {\n \"source\": \"iana\",\n \"extensions\": [\"pre\"]\n },\n \"application/vnd.lotus-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"nsf\"]\n },\n \"application/vnd.lotus-organizer\": {\n \"source\": \"iana\",\n \"extensions\": [\"org\"]\n },\n \"application/vnd.lotus-screencam\": {\n \"source\": \"iana\",\n \"extensions\": [\"scm\"]\n },\n \"application/vnd.lotus-wordpro\": {\n \"source\": \"iana\",\n \"extensions\": [\"lwp\"]\n },\n \"application/vnd.macports.portpkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"portpkg\"]\n },\n \"application/vnd.mapbox-vector-tile\": {\n \"source\": \"iana\",\n \"extensions\": [\"mvt\"]\n },\n \"application/vnd.marlin.drm.actiontoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.conftoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.license+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.mdcf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mason+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.maxar.archive.3tz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.maxmind.maxmind-db\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mcd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mcd\"]\n },\n \"application/vnd.medcalcdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"mc1\"]\n },\n \"application/vnd.mediastation.cdkey\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdkey\"]\n },\n \"application/vnd.meridian-slingshot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mfer\": {\n \"source\": \"iana\",\n \"extensions\": [\"mwf\"]\n },\n \"application/vnd.mfmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"mfm\"]\n },\n \"application/vnd.micro+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.micrografx.flo\": {\n \"source\": \"iana\",\n \"extensions\": [\"flo\"]\n },\n \"application/vnd.micrografx.igx\": {\n \"source\": \"iana\",\n \"extensions\": [\"igx\"]\n },\n \"application/vnd.microsoft.portable-executable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.microsoft.windows.thumbnail-cache\": {\n \"source\": \"iana\"\n },\n \"application/vnd.miele+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.mif\": {\n \"source\": \"iana\",\n \"extensions\": [\"mif\"]\n },\n \"application/vnd.minisoft-hp3000-save\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mobius.daf\": {\n \"source\": \"iana\",\n \"extensions\": [\"daf\"]\n },\n \"application/vnd.mobius.dis\": {\n \"source\": \"iana\",\n \"extensions\": [\"dis\"]\n },\n \"application/vnd.mobius.mbk\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbk\"]\n },\n \"application/vnd.mobius.mqy\": {\n \"source\": \"iana\",\n \"extensions\": [\"mqy\"]\n },\n \"application/vnd.mobius.msl\": {\n \"source\": \"iana\",\n \"extensions\": [\"msl\"]\n },\n \"application/vnd.mobius.plc\": {\n \"source\": \"iana\",\n \"extensions\": [\"plc\"]\n },\n \"application/vnd.mobius.txf\": {\n \"source\": \"iana\",\n \"extensions\": [\"txf\"]\n },\n \"application/vnd.mophun.application\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpn\"]\n },\n \"application/vnd.mophun.certificate\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpc\"]\n },\n \"application/vnd.motorola.flexsuite\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.adsi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.fis\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.gotap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.kmr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.ttc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.wem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.iprm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mozilla.xul+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xul\"]\n },\n \"application/vnd.ms-3mfdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-artgalry\": {\n \"source\": \"iana\",\n \"extensions\": [\"cil\"]\n },\n \"application/vnd.ms-asf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-cab-compressed\": {\n \"source\": \"iana\",\n \"extensions\": [\"cab\"]\n },\n \"application/vnd.ms-color.iccprofile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-excel\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n },\n \"application/vnd.ms-excel.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlam\"]\n },\n \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsb\"]\n },\n \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsm\"]\n },\n \"application/vnd.ms-excel.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltm\"]\n },\n \"application/vnd.ms-fontobject\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eot\"]\n },\n \"application/vnd.ms-htmlhelp\": {\n \"source\": \"iana\",\n \"extensions\": [\"chm\"]\n },\n \"application/vnd.ms-ims\": {\n \"source\": \"iana\",\n \"extensions\": [\"ims\"]\n },\n \"application/vnd.ms-lrm\": {\n \"source\": \"iana\",\n \"extensions\": [\"lrm\"]\n },\n \"application/vnd.ms-office.activex+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-officetheme\": {\n \"source\": \"iana\",\n \"extensions\": [\"thmx\"]\n },\n \"application/vnd.ms-opentype\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-outlook\": {\n \"compressible\": false,\n \"extensions\": [\"msg\"]\n },\n \"application/vnd.ms-package.obfuscated-opentype\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-pki.seccat\": {\n \"source\": \"apache\",\n \"extensions\": [\"cat\"]\n },\n \"application/vnd.ms-pki.stl\": {\n \"source\": \"apache\",\n \"extensions\": [\"stl\"]\n },\n \"application/vnd.ms-playready.initiator+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-powerpoint\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n },\n \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppam\"]\n },\n \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"pptm\"]\n },\n \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldm\"]\n },\n \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsm\"]\n },\n \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"potm\"]\n },\n \"application/vnd.ms-printdevicecapabilities+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-printing.printticket+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-printschematicket+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-project\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpp\",\"mpt\"]\n },\n \"application/vnd.ms-tnef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.nwprinting.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.printerpairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.wsd.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-word.document.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"docm\"]\n },\n \"application/vnd.ms-word.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotm\"]\n },\n \"application/vnd.ms-works\": {\n \"source\": \"iana\",\n \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n },\n \"application/vnd.ms-wpl\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpl\"]\n },\n \"application/vnd.ms-xpsdocument\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xps\"]\n },\n \"application/vnd.msa-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mseq\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseq\"]\n },\n \"application/vnd.msign\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator.cif\": {\n \"source\": \"iana\"\n },\n \"application/vnd.music-niff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.musician\": {\n \"source\": \"iana\",\n \"extensions\": [\"mus\"]\n },\n \"application/vnd.muvee.style\": {\n \"source\": \"iana\",\n \"extensions\": [\"msty\"]\n },\n \"application/vnd.mynfc\": {\n \"source\": \"iana\",\n \"extensions\": [\"taglet\"]\n },\n \"application/vnd.nacamar.ybrid+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ncd.control\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ncd.reference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nearst.inv+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nebumind.line\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nervana\": {\n \"source\": \"iana\"\n },\n \"application/vnd.netfpx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.neurolanguage.nlu\": {\n \"source\": \"iana\",\n \"extensions\": [\"nlu\"]\n },\n \"application/vnd.nimn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.nitro.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.snes.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nitf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ntf\",\"nitf\"]\n },\n \"application/vnd.noblenet-directory\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnd\"]\n },\n \"application/vnd.noblenet-sealer\": {\n \"source\": \"iana\",\n \"extensions\": [\"nns\"]\n },\n \"application/vnd.noblenet-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnw\"]\n },\n \"application/vnd.nokia.catalogs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.iptv.config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.isds-radio-presets\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.landmarkcollection+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.n-gage.ac+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ac\"]\n },\n \"application/vnd.nokia.n-gage.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"ngdat\"]\n },\n \"application/vnd.nokia.n-gage.symbian.install\": {\n \"source\": \"iana\",\n \"extensions\": [\"n-gage\"]\n },\n \"application/vnd.nokia.ncd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.radio-preset\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpst\"]\n },\n \"application/vnd.nokia.radio-presets\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpss\"]\n },\n \"application/vnd.novadigm.edm\": {\n \"source\": \"iana\",\n \"extensions\": [\"edm\"]\n },\n \"application/vnd.novadigm.edx\": {\n \"source\": \"iana\",\n \"extensions\": [\"edx\"]\n },\n \"application/vnd.novadigm.ext\": {\n \"source\": \"iana\",\n \"extensions\": [\"ext\"]\n },\n \"application/vnd.ntt-local.content-share\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.file-transfer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.ogw_remote-access\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_remote\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oasis.opendocument.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"odc\"]\n },\n \"application/vnd.oasis.opendocument.chart-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otc\"]\n },\n \"application/vnd.oasis.opendocument.database\": {\n \"source\": \"iana\",\n \"extensions\": [\"odb\"]\n },\n \"application/vnd.oasis.opendocument.formula\": {\n \"source\": \"iana\",\n \"extensions\": [\"odf\"]\n },\n \"application/vnd.oasis.opendocument.formula-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"odft\"]\n },\n \"application/vnd.oasis.opendocument.graphics\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odg\"]\n },\n \"application/vnd.oasis.opendocument.graphics-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otg\"]\n },\n \"application/vnd.oasis.opendocument.image\": {\n \"source\": \"iana\",\n \"extensions\": [\"odi\"]\n },\n \"application/vnd.oasis.opendocument.image-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"oti\"]\n },\n \"application/vnd.oasis.opendocument.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odp\"]\n },\n \"application/vnd.oasis.opendocument.presentation-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otp\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ods\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ots\"]\n },\n \"application/vnd.oasis.opendocument.text\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odt\"]\n },\n \"application/vnd.oasis.opendocument.text-master\": {\n \"source\": \"iana\",\n \"extensions\": [\"odm\"]\n },\n \"application/vnd.oasis.opendocument.text-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ott\"]\n },\n \"application/vnd.oasis.opendocument.text-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"oth\"]\n },\n \"application/vnd.obn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ocf+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oci.image.manifest.v1+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oftn.l10n+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessdownload+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessstreaming+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.cspg-hexbinary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.dae.svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.dae.xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.pae.gem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.spdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.spdlist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.ueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.userprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.olpc-sugar\": {\n \"source\": \"iana\",\n \"extensions\": [\"xo\"]\n },\n \"application/vnd.oma-scws-config\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-request\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.drm-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.imd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.ltkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.notification+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.provisioningtrigger\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgboot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgdd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sgdu\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.simple-symbol-container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sprov+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.stkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.cab-address-book+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-feature-handler+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-pcc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-subs-invite+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-user-prefs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.dcd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dcdc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dd2+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dd2\"]\n },\n \"application/vnd.oma.drm.risd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.group-usage-list+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.lwm2m+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+tlv\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.pal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.final-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.groups+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.push\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.scidm.messages+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.xcap-directory+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.omads-email+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-file+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-folder+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omaloc-supl-init\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepager\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertat\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openblox.game+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"obgx\"]\n },\n \"application/vnd.openblox.game-binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openeye.oeb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openofficeorg.extension\": {\n \"source\": \"apache\",\n \"extensions\": [\"oxt\"]\n },\n \"application/vnd.openstreetmap.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osm\"]\n },\n \"application/vnd.opentimestamps.ots\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pptx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"potx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xlsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"docx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.core-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.relationships+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oracle.resource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.orange.indata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osa.netdeploy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgeo.mapguide.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgp\"]\n },\n \"application/vnd.osgi.bundle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgi.dp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dp\"]\n },\n \"application/vnd.osgi.subsystem\": {\n \"source\": \"iana\",\n \"extensions\": [\"esa\"]\n },\n \"application/vnd.otps.ct-kip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oxli.countgraph\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pagerduty+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.palm\": {\n \"source\": \"iana\",\n \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n },\n \"application/vnd.panoply\": {\n \"source\": \"iana\"\n },\n \"application/vnd.paos.xml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patentdive\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patientecommsdoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pawaafile\": {\n \"source\": \"iana\",\n \"extensions\": [\"paw\"]\n },\n \"application/vnd.pcos\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pg.format\": {\n \"source\": \"iana\",\n \"extensions\": [\"str\"]\n },\n \"application/vnd.pg.osasli\": {\n \"source\": \"iana\",\n \"extensions\": [\"ei6\"]\n },\n \"application/vnd.piaccess.application-licence\": {\n \"source\": \"iana\"\n },\n \"application/vnd.picsel\": {\n \"source\": \"iana\",\n \"extensions\": [\"efif\"]\n },\n \"application/vnd.pmi.widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wg\"]\n },\n \"application/vnd.poc.group-advertisement+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.pocketlearn\": {\n \"source\": \"iana\",\n \"extensions\": [\"plf\"]\n },\n \"application/vnd.powerbuilder6\": {\n \"source\": \"iana\",\n \"extensions\": [\"pbd\"]\n },\n \"application/vnd.powerbuilder6-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.preminet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.previewsystems.box\": {\n \"source\": \"iana\",\n \"extensions\": [\"box\"]\n },\n \"application/vnd.proteus.magazine\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgz\"]\n },\n \"application/vnd.psfs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.publishare-delta-tree\": {\n \"source\": \"iana\",\n \"extensions\": [\"qps\"]\n },\n \"application/vnd.pvi.ptid1\": {\n \"source\": \"iana\",\n \"extensions\": [\"ptid\"]\n },\n \"application/vnd.pwg-multiplexed\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pwg-xhtml-print+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.qualcomm.brew-app-res\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quarantainenet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quark.quarkxpress\": {\n \"source\": \"iana\",\n \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n },\n \"application/vnd.quobject-quoxdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.radisys.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-stream+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-base+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-group+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-speech+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-transform+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rainstor.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rapid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rar\": {\n \"source\": \"iana\",\n \"extensions\": [\"rar\"]\n },\n \"application/vnd.realvnc.bed\": {\n \"source\": \"iana\",\n \"extensions\": [\"bed\"]\n },\n \"application/vnd.recordare.musicxml\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxl\"]\n },\n \"application/vnd.recordare.musicxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musicxml\"]\n },\n \"application/vnd.renlearn.rlprint\": {\n \"source\": \"iana\"\n },\n \"application/vnd.resilient.logic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.restful+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rig.cryptonote\": {\n \"source\": \"iana\",\n \"extensions\": [\"cryptonote\"]\n },\n \"application/vnd.rim.cod\": {\n \"source\": \"apache\",\n \"extensions\": [\"cod\"]\n },\n \"application/vnd.rn-realmedia\": {\n \"source\": \"apache\",\n \"extensions\": [\"rm\"]\n },\n \"application/vnd.rn-realmedia-vbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmvb\"]\n },\n \"application/vnd.route66.link66+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"link66\"]\n },\n \"application/vnd.rs-274x\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ruckus.download\": {\n \"source\": \"iana\"\n },\n \"application/vnd.s3sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sailingtracker.track\": {\n \"source\": \"iana\",\n \"extensions\": [\"st\"]\n },\n \"application/vnd.sar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.cid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.mid2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.scribus\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.3df\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.csf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.doc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.eml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.mht\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.net\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.ppt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.tiff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.xls\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.seemail\": {\n \"source\": \"iana\",\n \"extensions\": [\"see\"]\n },\n \"application/vnd.seis+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.sema\": {\n \"source\": \"iana\",\n \"extensions\": [\"sema\"]\n },\n \"application/vnd.semd\": {\n \"source\": \"iana\",\n \"extensions\": [\"semd\"]\n },\n \"application/vnd.semf\": {\n \"source\": \"iana\",\n \"extensions\": [\"semf\"]\n },\n \"application/vnd.shade-save-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shana.informed.formdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"ifm\"]\n },\n \"application/vnd.shana.informed.formtemplate\": {\n \"source\": \"iana\",\n \"extensions\": [\"itp\"]\n },\n \"application/vnd.shana.informed.interchange\": {\n \"source\": \"iana\",\n \"extensions\": [\"iif\"]\n },\n \"application/vnd.shana.informed.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipk\"]\n },\n \"application/vnd.shootproof+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shopkick+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sigrok.session\": {\n \"source\": \"iana\"\n },\n \"application/vnd.simtech-mindmapper\": {\n \"source\": \"iana\",\n \"extensions\": [\"twd\",\"twds\"]\n },\n \"application/vnd.siren+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.smaf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmf\"]\n },\n \"application/vnd.smart.notebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.smart.teacher\": {\n \"source\": \"iana\",\n \"extensions\": [\"teacher\"]\n },\n \"application/vnd.snesdev-page-table\": {\n \"source\": \"iana\"\n },\n \"application/vnd.software602.filler.form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fo\"]\n },\n \"application/vnd.software602.filler.form-xml-zip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.solent.sdkm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sdkm\",\"sdkd\"]\n },\n \"application/vnd.spotfire.dxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxp\"]\n },\n \"application/vnd.spotfire.sfs\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfs\"]\n },\n \"application/vnd.sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-cod\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-dtf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-ntf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.stardivision.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdc\"]\n },\n \"application/vnd.stardivision.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sda\"]\n },\n \"application/vnd.stardivision.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdd\"]\n },\n \"application/vnd.stardivision.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"smf\"]\n },\n \"application/vnd.stardivision.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdw\",\"vor\"]\n },\n \"application/vnd.stardivision.writer-global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgl\"]\n },\n \"application/vnd.stepmania.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"smzip\"]\n },\n \"application/vnd.stepmania.stepchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"sm\"]\n },\n \"application/vnd.street-stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sun.wadl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wadl\"]\n },\n \"application/vnd.sun.xml.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxc\"]\n },\n \"application/vnd.sun.xml.calc.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stc\"]\n },\n \"application/vnd.sun.xml.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxd\"]\n },\n \"application/vnd.sun.xml.draw.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"std\"]\n },\n \"application/vnd.sun.xml.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxi\"]\n },\n \"application/vnd.sun.xml.impress.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"sti\"]\n },\n \"application/vnd.sun.xml.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxm\"]\n },\n \"application/vnd.sun.xml.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxw\"]\n },\n \"application/vnd.sun.xml.writer.global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxg\"]\n },\n \"application/vnd.sun.xml.writer.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stw\"]\n },\n \"application/vnd.sus-calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"sus\",\"susp\"]\n },\n \"application/vnd.svd\": {\n \"source\": \"iana\",\n \"extensions\": [\"svd\"]\n },\n \"application/vnd.swiftview-ics\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sycle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.syft+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.symbian.install\": {\n \"source\": \"apache\",\n \"extensions\": [\"sis\",\"sisx\"]\n },\n \"application/vnd.syncml+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xsm\"]\n },\n \"application/vnd.syncml.dm+wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"bdm\"]\n },\n \"application/vnd.syncml.dm+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xdm\"]\n },\n \"application/vnd.syncml.dm.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"ddf\"]\n },\n \"application/vnd.syncml.dmtnds+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmtnds+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.syncml.ds.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tableschema+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tao.intent-module-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"tao\"]\n },\n \"application/vnd.tcpdump.pcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n },\n \"application/vnd.think-cell.ppttc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tmd.mediaflex.api+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tmobile-livetv\": {\n \"source\": \"iana\",\n \"extensions\": [\"tmo\"]\n },\n \"application/vnd.tri.onesource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.trid.tpt\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpt\"]\n },\n \"application/vnd.triscape.mxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxs\"]\n },\n \"application/vnd.trueapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"tra\"]\n },\n \"application/vnd.truedoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ubisoft.webplayer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ufdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"ufd\",\"ufdl\"]\n },\n \"application/vnd.uiq.theme\": {\n \"source\": \"iana\",\n \"extensions\": [\"utz\"]\n },\n \"application/vnd.umajin\": {\n \"source\": \"iana\",\n \"extensions\": [\"umj\"]\n },\n \"application/vnd.unity\": {\n \"source\": \"iana\",\n \"extensions\": [\"unityweb\"]\n },\n \"application/vnd.uoml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uoml\"]\n },\n \"application/vnd.uplanet.alert\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.alert-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.signal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uri-map\": {\n \"source\": \"iana\"\n },\n \"application/vnd.valve.source.material\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcx\"]\n },\n \"application/vnd.vd-study\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vectorworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vel+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.verimatrix.vcas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.veritone.aion+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.veryant.thin\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ves.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vidsoft.vidconference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.visio\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\"]\n },\n \"application/vnd.visionary\": {\n \"source\": \"iana\",\n \"extensions\": [\"vis\"]\n },\n \"application/vnd.vividence.scriptfile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vsf\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsf\"]\n },\n \"application/vnd.wap.sic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.slc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"wbxml\"]\n },\n \"application/vnd.wap.wmlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlc\"]\n },\n \"application/vnd.wap.wmlscriptc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlsc\"]\n },\n \"application/vnd.webturbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"wtb\"]\n },\n \"application/vnd.wfa.dpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.p2p\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.wsc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmf.bootstrap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica.package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.player\": {\n \"source\": \"iana\",\n \"extensions\": [\"nbp\"]\n },\n \"application/vnd.wordperfect\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpd\"]\n },\n \"application/vnd.wqd\": {\n \"source\": \"iana\",\n \"extensions\": [\"wqd\"]\n },\n \"application/vnd.wrq-hp3000-labelled\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wt.stf\": {\n \"source\": \"iana\",\n \"extensions\": [\"stf\"]\n },\n \"application/vnd.wv.csp+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wv.csp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.wv.ssp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xacml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xara\": {\n \"source\": \"iana\",\n \"extensions\": [\"xar\"]\n },\n \"application/vnd.xfdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdl\"]\n },\n \"application/vnd.xfdl.webform\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xmpie.cpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.dpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.plan\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.ppkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.xlim\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.hv-dic\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvd\"]\n },\n \"application/vnd.yamaha.hv-script\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvs\"]\n },\n \"application/vnd.yamaha.hv-voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvp\"]\n },\n \"application/vnd.yamaha.openscoreformat\": {\n \"source\": \"iana\",\n \"extensions\": [\"osf\"]\n },\n \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osfpvg\"]\n },\n \"application/vnd.yamaha.remote-setup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.smaf-audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"saf\"]\n },\n \"application/vnd.yamaha.smaf-phrase\": {\n \"source\": \"iana\",\n \"extensions\": [\"spf\"]\n },\n \"application/vnd.yamaha.through-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.tunnel-udpencap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yaoweme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yellowriver-custom-menu\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmp\"]\n },\n \"application/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.zul\": {\n \"source\": \"iana\",\n \"extensions\": [\"zir\",\"zirz\"]\n },\n \"application/vnd.zzazz.deck+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zaz\"]\n },\n \"application/voicexml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vxml\"]\n },\n \"application/voucher-cms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vq-rtcpxr\": {\n \"source\": \"iana\"\n },\n \"application/wasm\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wasm\"]\n },\n \"application/watcherinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wif\"]\n },\n \"application/webpush-options+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/whoispp-query\": {\n \"source\": \"iana\"\n },\n \"application/whoispp-response\": {\n \"source\": \"iana\"\n },\n \"application/widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wgt\"]\n },\n \"application/winhlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"hlp\"]\n },\n \"application/wita\": {\n \"source\": \"iana\"\n },\n \"application/wordperfect5.1\": {\n \"source\": \"iana\"\n },\n \"application/wsdl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wsdl\"]\n },\n \"application/wspolicy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wspolicy\"]\n },\n \"application/x-7z-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"7z\"]\n },\n \"application/x-abiword\": {\n \"source\": \"apache\",\n \"extensions\": [\"abw\"]\n },\n \"application/x-ace-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"ace\"]\n },\n \"application/x-amf\": {\n \"source\": \"apache\"\n },\n \"application/x-apple-diskimage\": {\n \"source\": \"apache\",\n \"extensions\": [\"dmg\"]\n },\n \"application/x-arj\": {\n \"compressible\": false,\n \"extensions\": [\"arj\"]\n },\n \"application/x-authorware-bin\": {\n \"source\": \"apache\",\n \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n },\n \"application/x-authorware-map\": {\n \"source\": \"apache\",\n \"extensions\": [\"aam\"]\n },\n \"application/x-authorware-seg\": {\n \"source\": \"apache\",\n \"extensions\": [\"aas\"]\n },\n \"application/x-bcpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"bcpio\"]\n },\n \"application/x-bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/x-bittorrent\": {\n \"source\": \"apache\",\n \"extensions\": [\"torrent\"]\n },\n \"application/x-blorb\": {\n \"source\": \"apache\",\n \"extensions\": [\"blb\",\"blorb\"]\n },\n \"application/x-bzip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz\"]\n },\n \"application/x-bzip2\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz2\",\"boz\"]\n },\n \"application/x-cbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n },\n \"application/x-cdlink\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcd\"]\n },\n \"application/x-cfs-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"cfs\"]\n },\n \"application/x-chat\": {\n \"source\": \"apache\",\n \"extensions\": [\"chat\"]\n },\n \"application/x-chess-pgn\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgn\"]\n },\n \"application/x-chrome-extension\": {\n \"extensions\": [\"crx\"]\n },\n \"application/x-cocoa\": {\n \"source\": \"nginx\",\n \"extensions\": [\"cco\"]\n },\n \"application/x-compress\": {\n \"source\": \"apache\"\n },\n \"application/x-conference\": {\n \"source\": \"apache\",\n \"extensions\": [\"nsc\"]\n },\n \"application/x-cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpio\"]\n },\n \"application/x-csh\": {\n \"source\": \"apache\",\n \"extensions\": [\"csh\"]\n },\n \"application/x-deb\": {\n \"compressible\": false\n },\n \"application/x-debian-package\": {\n \"source\": \"apache\",\n \"extensions\": [\"deb\",\"udeb\"]\n },\n \"application/x-dgc-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"dgc\"]\n },\n \"application/x-director\": {\n \"source\": \"apache\",\n \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n },\n \"application/x-doom\": {\n \"source\": \"apache\",\n \"extensions\": [\"wad\"]\n },\n \"application/x-dtbncx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ncx\"]\n },\n \"application/x-dtbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dtb\"]\n },\n \"application/x-dtbresource+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"res\"]\n },\n \"application/x-dvi\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"dvi\"]\n },\n \"application/x-envoy\": {\n \"source\": \"apache\",\n \"extensions\": [\"evy\"]\n },\n \"application/x-eva\": {\n \"source\": \"apache\",\n \"extensions\": [\"eva\"]\n },\n \"application/x-font-bdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"bdf\"]\n },\n \"application/x-font-dos\": {\n \"source\": \"apache\"\n },\n \"application/x-font-framemaker\": {\n \"source\": \"apache\"\n },\n \"application/x-font-ghostscript\": {\n \"source\": \"apache\",\n \"extensions\": [\"gsf\"]\n },\n \"application/x-font-libgrx\": {\n \"source\": \"apache\"\n },\n \"application/x-font-linux-psf\": {\n \"source\": \"apache\",\n \"extensions\": [\"psf\"]\n },\n \"application/x-font-pcf\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcf\"]\n },\n \"application/x-font-snf\": {\n \"source\": \"apache\",\n \"extensions\": [\"snf\"]\n },\n \"application/x-font-speedo\": {\n \"source\": \"apache\"\n },\n \"application/x-font-sunos-news\": {\n \"source\": \"apache\"\n },\n \"application/x-font-type1\": {\n \"source\": \"apache\",\n \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n },\n \"application/x-font-vfont\": {\n \"source\": \"apache\"\n },\n \"application/x-freearc\": {\n \"source\": \"apache\",\n \"extensions\": [\"arc\"]\n },\n \"application/x-futuresplash\": {\n \"source\": \"apache\",\n \"extensions\": [\"spl\"]\n },\n \"application/x-gca-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"gca\"]\n },\n \"application/x-glulx\": {\n \"source\": \"apache\",\n \"extensions\": [\"ulx\"]\n },\n \"application/x-gnumeric\": {\n \"source\": \"apache\",\n \"extensions\": [\"gnumeric\"]\n },\n \"application/x-gramps-xml\": {\n \"source\": \"apache\",\n \"extensions\": [\"gramps\"]\n },\n \"application/x-gtar\": {\n \"source\": \"apache\",\n \"extensions\": [\"gtar\"]\n },\n \"application/x-gzip\": {\n \"source\": \"apache\"\n },\n \"application/x-hdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"hdf\"]\n },\n \"application/x-httpd-php\": {\n \"compressible\": true,\n \"extensions\": [\"php\"]\n },\n \"application/x-install-instructions\": {\n \"source\": \"apache\",\n \"extensions\": [\"install\"]\n },\n \"application/x-iso9660-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"iso\"]\n },\n \"application/x-iwork-keynote-sffkey\": {\n \"extensions\": [\"key\"]\n },\n \"application/x-iwork-numbers-sffnumbers\": {\n \"extensions\": [\"numbers\"]\n },\n \"application/x-iwork-pages-sffpages\": {\n \"extensions\": [\"pages\"]\n },\n \"application/x-java-archive-diff\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jardiff\"]\n },\n \"application/x-java-jnlp-file\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jnlp\"]\n },\n \"application/x-javascript\": {\n \"compressible\": true\n },\n \"application/x-keepass2\": {\n \"extensions\": [\"kdbx\"]\n },\n \"application/x-latex\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"latex\"]\n },\n \"application/x-lua-bytecode\": {\n \"extensions\": [\"luac\"]\n },\n \"application/x-lzh-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"lzh\",\"lha\"]\n },\n \"application/x-makeself\": {\n \"source\": \"nginx\",\n \"extensions\": [\"run\"]\n },\n \"application/x-mie\": {\n \"source\": \"apache\",\n \"extensions\": [\"mie\"]\n },\n \"application/x-mobipocket-ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"prc\",\"mobi\"]\n },\n \"application/x-mpegurl\": {\n \"compressible\": false\n },\n \"application/x-ms-application\": {\n \"source\": \"apache\",\n \"extensions\": [\"application\"]\n },\n \"application/x-ms-shortcut\": {\n \"source\": \"apache\",\n \"extensions\": [\"lnk\"]\n },\n \"application/x-ms-wmd\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmd\"]\n },\n \"application/x-ms-wmz\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmz\"]\n },\n \"application/x-ms-xbap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbap\"]\n },\n \"application/x-msaccess\": {\n \"source\": \"apache\",\n \"extensions\": [\"mdb\"]\n },\n \"application/x-msbinder\": {\n \"source\": \"apache\",\n \"extensions\": [\"obd\"]\n },\n \"application/x-mscardfile\": {\n \"source\": \"apache\",\n \"extensions\": [\"crd\"]\n },\n \"application/x-msclip\": {\n \"source\": \"apache\",\n \"extensions\": [\"clp\"]\n },\n \"application/x-msdos-program\": {\n \"extensions\": [\"exe\"]\n },\n \"application/x-msdownload\": {\n \"source\": \"apache\",\n \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n },\n \"application/x-msmediaview\": {\n \"source\": \"apache\",\n \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n },\n \"application/x-msmetafile\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n },\n \"application/x-msmoney\": {\n \"source\": \"apache\",\n \"extensions\": [\"mny\"]\n },\n \"application/x-mspublisher\": {\n \"source\": \"apache\",\n \"extensions\": [\"pub\"]\n },\n \"application/x-msschedule\": {\n \"source\": \"apache\",\n \"extensions\": [\"scd\"]\n },\n \"application/x-msterminal\": {\n \"source\": \"apache\",\n \"extensions\": [\"trm\"]\n },\n \"application/x-mswrite\": {\n \"source\": \"apache\",\n \"extensions\": [\"wri\"]\n },\n \"application/x-netcdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"nc\",\"cdf\"]\n },\n \"application/x-ns-proxy-autoconfig\": {\n \"compressible\": true,\n \"extensions\": [\"pac\"]\n },\n \"application/x-nzb\": {\n \"source\": \"apache\",\n \"extensions\": [\"nzb\"]\n },\n \"application/x-perl\": {\n \"source\": \"nginx\",\n \"extensions\": [\"pl\",\"pm\"]\n },\n \"application/x-pilot\": {\n \"source\": \"nginx\",\n \"extensions\": [\"prc\",\"pdb\"]\n },\n \"application/x-pkcs12\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"p12\",\"pfx\"]\n },\n \"application/x-pkcs7-certificates\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7b\",\"spc\"]\n },\n \"application/x-pkcs7-certreqresp\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7r\"]\n },\n \"application/x-pki-message\": {\n \"source\": \"iana\"\n },\n \"application/x-rar-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"rar\"]\n },\n \"application/x-redhat-package-manager\": {\n \"source\": \"nginx\",\n \"extensions\": [\"rpm\"]\n },\n \"application/x-research-info-systems\": {\n \"source\": \"apache\",\n \"extensions\": [\"ris\"]\n },\n \"application/x-sea\": {\n \"source\": \"nginx\",\n \"extensions\": [\"sea\"]\n },\n \"application/x-sh\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"sh\"]\n },\n \"application/x-shar\": {\n \"source\": \"apache\",\n \"extensions\": [\"shar\"]\n },\n \"application/x-shockwave-flash\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"swf\"]\n },\n \"application/x-silverlight-app\": {\n \"source\": \"apache\",\n \"extensions\": [\"xap\"]\n },\n \"application/x-sql\": {\n \"source\": \"apache\",\n \"extensions\": [\"sql\"]\n },\n \"application/x-stuffit\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"sit\"]\n },\n \"application/x-stuffitx\": {\n \"source\": \"apache\",\n \"extensions\": [\"sitx\"]\n },\n \"application/x-subrip\": {\n \"source\": \"apache\",\n \"extensions\": [\"srt\"]\n },\n \"application/x-sv4cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4cpio\"]\n },\n \"application/x-sv4crc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4crc\"]\n },\n \"application/x-t3vm-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"t3\"]\n },\n \"application/x-tads\": {\n \"source\": \"apache\",\n \"extensions\": [\"gam\"]\n },\n \"application/x-tar\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"tar\"]\n },\n \"application/x-tcl\": {\n \"source\": \"apache\",\n \"extensions\": [\"tcl\",\"tk\"]\n },\n \"application/x-tex\": {\n \"source\": \"apache\",\n \"extensions\": [\"tex\"]\n },\n \"application/x-tex-tfm\": {\n \"source\": \"apache\",\n \"extensions\": [\"tfm\"]\n },\n \"application/x-texinfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"texinfo\",\"texi\"]\n },\n \"application/x-tgif\": {\n \"source\": \"apache\",\n \"extensions\": [\"obj\"]\n },\n \"application/x-ustar\": {\n \"source\": \"apache\",\n \"extensions\": [\"ustar\"]\n },\n \"application/x-virtualbox-hdd\": {\n \"compressible\": true,\n \"extensions\": [\"hdd\"]\n },\n \"application/x-virtualbox-ova\": {\n \"compressible\": true,\n \"extensions\": [\"ova\"]\n },\n \"application/x-virtualbox-ovf\": {\n \"compressible\": true,\n \"extensions\": [\"ovf\"]\n },\n \"application/x-virtualbox-vbox\": {\n \"compressible\": true,\n \"extensions\": [\"vbox\"]\n },\n \"application/x-virtualbox-vbox-extpack\": {\n \"compressible\": false,\n \"extensions\": [\"vbox-extpack\"]\n },\n \"application/x-virtualbox-vdi\": {\n \"compressible\": true,\n \"extensions\": [\"vdi\"]\n },\n \"application/x-virtualbox-vhd\": {\n \"compressible\": true,\n \"extensions\": [\"vhd\"]\n },\n \"application/x-virtualbox-vmdk\": {\n \"compressible\": true,\n \"extensions\": [\"vmdk\"]\n },\n \"application/x-wais-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"src\"]\n },\n \"application/x-web-app-manifest+json\": {\n \"compressible\": true,\n \"extensions\": [\"webapp\"]\n },\n \"application/x-www-form-urlencoded\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/x-x509-ca-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"der\",\"crt\",\"pem\"]\n },\n \"application/x-x509-ca-ra-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-x509-next-ca-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-xfig\": {\n \"source\": \"apache\",\n \"extensions\": [\"fig\"]\n },\n \"application/x-xliff+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/x-xpinstall\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"xpi\"]\n },\n \"application/x-xz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xz\"]\n },\n \"application/x-zmachine\": {\n \"source\": \"apache\",\n \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n },\n \"application/x400-bp\": {\n \"source\": \"iana\"\n },\n \"application/xacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xaml+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xaml\"]\n },\n \"application/xcap-att+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xav\"]\n },\n \"application/xcap-caps+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xca\"]\n },\n \"application/xcap-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdf\"]\n },\n \"application/xcap-el+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xel\"]\n },\n \"application/xcap-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcap-ns+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xns\"]\n },\n \"application/xcon-conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcon-conference-info-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xenc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xenc\"]\n },\n \"application/xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xhtml\",\"xht\"]\n },\n \"application/xhtml-voice+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/xliff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n },\n \"application/xml-dtd\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dtd\"]\n },\n \"application/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"application/xml-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xmpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xop\"]\n },\n \"application/xproc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xpl\"]\n },\n \"application/xslt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xsl\",\"xslt\"]\n },\n \"application/xspf+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xspf\"]\n },\n \"application/xv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n },\n \"application/yang\": {\n \"source\": \"iana\",\n \"extensions\": [\"yang\"]\n },\n \"application/yang-data+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yin+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"yin\"]\n },\n \"application/zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"zip\"]\n },\n \"application/zlib\": {\n \"source\": \"iana\"\n },\n \"application/zstd\": {\n \"source\": \"iana\"\n },\n \"audio/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/3gpp\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"3gpp\"]\n },\n \"audio/3gpp2\": {\n \"source\": \"iana\"\n },\n \"audio/aac\": {\n \"source\": \"iana\"\n },\n \"audio/ac3\": {\n \"source\": \"iana\"\n },\n \"audio/adpcm\": {\n \"source\": \"apache\",\n \"extensions\": [\"adp\"]\n },\n \"audio/amr\": {\n \"source\": \"iana\",\n \"extensions\": [\"amr\"]\n },\n \"audio/amr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/amr-wb+\": {\n \"source\": \"iana\"\n },\n \"audio/aptx\": {\n \"source\": \"iana\"\n },\n \"audio/asc\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-advanced-lossless\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-x\": {\n \"source\": \"iana\"\n },\n \"audio/atrac3\": {\n \"source\": \"iana\"\n },\n \"audio/basic\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"au\",\"snd\"]\n },\n \"audio/bv16\": {\n \"source\": \"iana\"\n },\n \"audio/bv32\": {\n \"source\": \"iana\"\n },\n \"audio/clearmode\": {\n \"source\": \"iana\"\n },\n \"audio/cn\": {\n \"source\": \"iana\"\n },\n \"audio/dat12\": {\n \"source\": \"iana\"\n },\n \"audio/dls\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es201108\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202050\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202211\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202212\": {\n \"source\": \"iana\"\n },\n \"audio/dv\": {\n \"source\": \"iana\"\n },\n \"audio/dvi4\": {\n \"source\": \"iana\"\n },\n \"audio/eac3\": {\n \"source\": \"iana\"\n },\n \"audio/encaprtp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc\": {\n \"source\": \"iana\"\n },\n \"audio/evrc-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc0\": {\n \"source\": \"iana\"\n },\n \"audio/evrc1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb1\": {\n \"source\": \"iana\"\n },\n \"audio/evs\": {\n \"source\": \"iana\"\n },\n \"audio/flexfec\": {\n \"source\": \"iana\"\n },\n \"audio/fwdred\": {\n \"source\": \"iana\"\n },\n \"audio/g711-0\": {\n \"source\": \"iana\"\n },\n \"audio/g719\": {\n \"source\": \"iana\"\n },\n \"audio/g722\": {\n \"source\": \"iana\"\n },\n \"audio/g7221\": {\n \"source\": \"iana\"\n },\n \"audio/g723\": {\n \"source\": \"iana\"\n },\n \"audio/g726-16\": {\n \"source\": \"iana\"\n },\n \"audio/g726-24\": {\n \"source\": \"iana\"\n },\n \"audio/g726-32\": {\n \"source\": \"iana\"\n },\n \"audio/g726-40\": {\n \"source\": \"iana\"\n },\n \"audio/g728\": {\n \"source\": \"iana\"\n },\n \"audio/g729\": {\n \"source\": \"iana\"\n },\n \"audio/g7291\": {\n \"source\": \"iana\"\n },\n \"audio/g729d\": {\n \"source\": \"iana\"\n },\n \"audio/g729e\": {\n \"source\": \"iana\"\n },\n \"audio/gsm\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-efr\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-hr-08\": {\n \"source\": \"iana\"\n },\n \"audio/ilbc\": {\n \"source\": \"iana\"\n },\n \"audio/ip-mr_v2.5\": {\n \"source\": \"iana\"\n },\n \"audio/isac\": {\n \"source\": \"apache\"\n },\n \"audio/l16\": {\n \"source\": \"iana\"\n },\n \"audio/l20\": {\n \"source\": \"iana\"\n },\n \"audio/l24\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/l8\": {\n \"source\": \"iana\"\n },\n \"audio/lpc\": {\n \"source\": \"iana\"\n },\n \"audio/melp\": {\n \"source\": \"iana\"\n },\n \"audio/melp1200\": {\n \"source\": \"iana\"\n },\n \"audio/melp2400\": {\n \"source\": \"iana\"\n },\n \"audio/melp600\": {\n \"source\": \"iana\"\n },\n \"audio/mhas\": {\n \"source\": \"iana\"\n },\n \"audio/midi\": {\n \"source\": \"apache\",\n \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n },\n \"audio/mobile-xmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxmf\"]\n },\n \"audio/mp3\": {\n \"compressible\": false,\n \"extensions\": [\"mp3\"]\n },\n \"audio/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"m4a\",\"mp4a\"]\n },\n \"audio/mp4a-latm\": {\n \"source\": \"iana\"\n },\n \"audio/mpa\": {\n \"source\": \"iana\"\n },\n \"audio/mpa-robust\": {\n \"source\": \"iana\"\n },\n \"audio/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n },\n \"audio/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"audio/musepack\": {\n \"source\": \"apache\"\n },\n \"audio/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n },\n \"audio/opus\": {\n \"source\": \"iana\"\n },\n \"audio/parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/pcma\": {\n \"source\": \"iana\"\n },\n \"audio/pcma-wb\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu-wb\": {\n \"source\": \"iana\"\n },\n \"audio/prs.sid\": {\n \"source\": \"iana\"\n },\n \"audio/qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/raptorfec\": {\n \"source\": \"iana\"\n },\n \"audio/red\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/rtploopback\": {\n \"source\": \"iana\"\n },\n \"audio/rtx\": {\n \"source\": \"iana\"\n },\n \"audio/s3m\": {\n \"source\": \"apache\",\n \"extensions\": [\"s3m\"]\n },\n \"audio/scip\": {\n \"source\": \"iana\"\n },\n \"audio/silk\": {\n \"source\": \"apache\",\n \"extensions\": [\"sil\"]\n },\n \"audio/smv\": {\n \"source\": \"iana\"\n },\n \"audio/smv-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/smv0\": {\n \"source\": \"iana\"\n },\n \"audio/sofa\": {\n \"source\": \"iana\"\n },\n \"audio/sp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/speex\": {\n \"source\": \"iana\"\n },\n \"audio/t140c\": {\n \"source\": \"iana\"\n },\n \"audio/t38\": {\n \"source\": \"iana\"\n },\n \"audio/telephone-event\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp_bb\": {\n \"source\": \"iana\"\n },\n \"audio/tone\": {\n \"source\": \"iana\"\n },\n \"audio/tsvcis\": {\n \"source\": \"iana\"\n },\n \"audio/uemclip\": {\n \"source\": \"iana\"\n },\n \"audio/ulpfec\": {\n \"source\": \"iana\"\n },\n \"audio/usac\": {\n \"source\": \"iana\"\n },\n \"audio/vdvi\": {\n \"source\": \"iana\"\n },\n \"audio/vmr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.3gpp.iufp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.4sb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.audiokoz\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.celp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cisco.nse\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cmles.radio-events\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.anp1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.inf1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dece.audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"uva\",\"uvva\"]\n },\n \"audio/vnd.digital-winds\": {\n \"source\": \"iana\",\n \"extensions\": [\"eol\"]\n },\n \"audio/vnd.dlna.adts\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mlp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mps\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2x\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2z\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pulse.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dra\": {\n \"source\": \"iana\",\n \"extensions\": [\"dra\"]\n },\n \"audio/vnd.dts\": {\n \"source\": \"iana\",\n \"extensions\": [\"dts\"]\n },\n \"audio/vnd.dts.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"dtshd\"]\n },\n \"audio/vnd.dts.uhd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dvb.file\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.everad.plj\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.hns.audio\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.lucent.voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"lvp\"]\n },\n \"audio/vnd.ms-playready.media.pya\": {\n \"source\": \"iana\",\n \"extensions\": [\"pya\"]\n },\n \"audio/vnd.nokia.mobile-xmf\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nortel.vbk\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nuera.ecelp4800\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp4800\"]\n },\n \"audio/vnd.nuera.ecelp7470\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp7470\"]\n },\n \"audio/vnd.nuera.ecelp9600\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp9600\"]\n },\n \"audio/vnd.octel.sbc\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.presonus.multitrack\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rhetorex.32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rip\": {\n \"source\": \"iana\",\n \"extensions\": [\"rip\"]\n },\n \"audio/vnd.rn-realaudio\": {\n \"compressible\": false\n },\n \"audio/vnd.sealedmedia.softseal.mpeg\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.vmx.cvsd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.wave\": {\n \"compressible\": false\n },\n \"audio/vorbis\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/vorbis-config\": {\n \"source\": \"iana\"\n },\n \"audio/wav\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/wave\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"weba\"]\n },\n \"audio/x-aac\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"aac\"]\n },\n \"audio/x-aiff\": {\n \"source\": \"apache\",\n \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n },\n \"audio/x-caf\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"caf\"]\n },\n \"audio/x-flac\": {\n \"source\": \"apache\",\n \"extensions\": [\"flac\"]\n },\n \"audio/x-m4a\": {\n \"source\": \"nginx\",\n \"extensions\": [\"m4a\"]\n },\n \"audio/x-matroska\": {\n \"source\": \"apache\",\n \"extensions\": [\"mka\"]\n },\n \"audio/x-mpegurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"m3u\"]\n },\n \"audio/x-ms-wax\": {\n \"source\": \"apache\",\n \"extensions\": [\"wax\"]\n },\n \"audio/x-ms-wma\": {\n \"source\": \"apache\",\n \"extensions\": [\"wma\"]\n },\n \"audio/x-pn-realaudio\": {\n \"source\": \"apache\",\n \"extensions\": [\"ram\",\"ra\"]\n },\n \"audio/x-pn-realaudio-plugin\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmp\"]\n },\n \"audio/x-realaudio\": {\n \"source\": \"nginx\",\n \"extensions\": [\"ra\"]\n },\n \"audio/x-tta\": {\n \"source\": \"apache\"\n },\n \"audio/x-wav\": {\n \"source\": \"apache\",\n \"extensions\": [\"wav\"]\n },\n \"audio/xm\": {\n \"source\": \"apache\",\n \"extensions\": [\"xm\"]\n },\n \"chemical/x-cdx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cdx\"]\n },\n \"chemical/x-cif\": {\n \"source\": \"apache\",\n \"extensions\": [\"cif\"]\n },\n \"chemical/x-cmdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmdf\"]\n },\n \"chemical/x-cml\": {\n \"source\": \"apache\",\n \"extensions\": [\"cml\"]\n },\n \"chemical/x-csml\": {\n \"source\": \"apache\",\n \"extensions\": [\"csml\"]\n },\n \"chemical/x-pdb\": {\n \"source\": \"apache\"\n },\n \"chemical/x-xyz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xyz\"]\n },\n \"font/collection\": {\n \"source\": \"iana\",\n \"extensions\": [\"ttc\"]\n },\n \"font/otf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"otf\"]\n },\n \"font/sfnt\": {\n \"source\": \"iana\"\n },\n \"font/ttf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttf\"]\n },\n \"font/woff\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff\"]\n },\n \"font/woff2\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff2\"]\n },\n \"image/aces\": {\n \"source\": \"iana\",\n \"extensions\": [\"exr\"]\n },\n \"image/apng\": {\n \"compressible\": false,\n \"extensions\": [\"apng\"]\n },\n \"image/avci\": {\n \"source\": \"iana\",\n \"extensions\": [\"avci\"]\n },\n \"image/avcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"avcs\"]\n },\n \"image/avif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"avif\"]\n },\n \"image/bmp\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/cgm\": {\n \"source\": \"iana\",\n \"extensions\": [\"cgm\"]\n },\n \"image/dicom-rle\": {\n \"source\": \"iana\",\n \"extensions\": [\"drle\"]\n },\n \"image/emf\": {\n \"source\": \"iana\",\n \"extensions\": [\"emf\"]\n },\n \"image/fits\": {\n \"source\": \"iana\",\n \"extensions\": [\"fits\"]\n },\n \"image/g3fax\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3\"]\n },\n \"image/gif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gif\"]\n },\n \"image/heic\": {\n \"source\": \"iana\",\n \"extensions\": [\"heic\"]\n },\n \"image/heic-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heics\"]\n },\n \"image/heif\": {\n \"source\": \"iana\",\n \"extensions\": [\"heif\"]\n },\n \"image/heif-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heifs\"]\n },\n \"image/hej2k\": {\n \"source\": \"iana\",\n \"extensions\": [\"hej2\"]\n },\n \"image/hsj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"hsj2\"]\n },\n \"image/ief\": {\n \"source\": \"iana\",\n \"extensions\": [\"ief\"]\n },\n \"image/jls\": {\n \"source\": \"iana\",\n \"extensions\": [\"jls\"]\n },\n \"image/jp2\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jp2\",\"jpg2\"]\n },\n \"image/jpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpeg\",\"jpg\",\"jpe\"]\n },\n \"image/jph\": {\n \"source\": \"iana\",\n \"extensions\": [\"jph\"]\n },\n \"image/jphc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jhc\"]\n },\n \"image/jpm\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpm\"]\n },\n \"image/jpx\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpx\",\"jpf\"]\n },\n \"image/jxr\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxr\"]\n },\n \"image/jxra\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxra\"]\n },\n \"image/jxrs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxrs\"]\n },\n \"image/jxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxs\"]\n },\n \"image/jxsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsc\"]\n },\n \"image/jxsi\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsi\"]\n },\n \"image/jxss\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxss\"]\n },\n \"image/ktx\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx\"]\n },\n \"image/ktx2\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx2\"]\n },\n \"image/naplps\": {\n \"source\": \"iana\"\n },\n \"image/pjpeg\": {\n \"compressible\": false\n },\n \"image/png\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"png\"]\n },\n \"image/prs.btif\": {\n \"source\": \"iana\",\n \"extensions\": [\"btif\"]\n },\n \"image/prs.pti\": {\n \"source\": \"iana\",\n \"extensions\": [\"pti\"]\n },\n \"image/pwg-raster\": {\n \"source\": \"iana\"\n },\n \"image/sgi\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgi\"]\n },\n \"image/svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"svg\",\"svgz\"]\n },\n \"image/t38\": {\n \"source\": \"iana\",\n \"extensions\": [\"t38\"]\n },\n \"image/tiff\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"tif\",\"tiff\"]\n },\n \"image/tiff-fx\": {\n \"source\": \"iana\",\n \"extensions\": [\"tfx\"]\n },\n \"image/vnd.adobe.photoshop\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"psd\"]\n },\n \"image/vnd.airzip.accelerator.azv\": {\n \"source\": \"iana\",\n \"extensions\": [\"azv\"]\n },\n \"image/vnd.cns.inf2\": {\n \"source\": \"iana\"\n },\n \"image/vnd.dece.graphic\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n },\n \"image/vnd.djvu\": {\n \"source\": \"iana\",\n \"extensions\": [\"djvu\",\"djv\"]\n },\n \"image/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"image/vnd.dwg\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwg\"]\n },\n \"image/vnd.dxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxf\"]\n },\n \"image/vnd.fastbidsheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fbs\"]\n },\n \"image/vnd.fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"fpx\"]\n },\n \"image/vnd.fst\": {\n \"source\": \"iana\",\n \"extensions\": [\"fst\"]\n },\n \"image/vnd.fujixerox.edmics-mmr\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmr\"]\n },\n \"image/vnd.fujixerox.edmics-rlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"rlc\"]\n },\n \"image/vnd.globalgraphics.pgb\": {\n \"source\": \"iana\"\n },\n \"image/vnd.microsoft.icon\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/vnd.mix\": {\n \"source\": \"iana\"\n },\n \"image/vnd.mozilla.apng\": {\n \"source\": \"iana\"\n },\n \"image/vnd.ms-dds\": {\n \"compressible\": true,\n \"extensions\": [\"dds\"]\n },\n \"image/vnd.ms-modi\": {\n \"source\": \"iana\",\n \"extensions\": [\"mdi\"]\n },\n \"image/vnd.ms-photo\": {\n \"source\": \"apache\",\n \"extensions\": [\"wdp\"]\n },\n \"image/vnd.net-fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"npx\"]\n },\n \"image/vnd.pco.b16\": {\n \"source\": \"iana\",\n \"extensions\": [\"b16\"]\n },\n \"image/vnd.radiance\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealed.png\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.gif\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.jpg\": {\n \"source\": \"iana\"\n },\n \"image/vnd.svf\": {\n \"source\": \"iana\"\n },\n \"image/vnd.tencent.tap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tap\"]\n },\n \"image/vnd.valve.source.texture\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtf\"]\n },\n \"image/vnd.wap.wbmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"wbmp\"]\n },\n \"image/vnd.xiff\": {\n \"source\": \"iana\",\n \"extensions\": [\"xif\"]\n },\n \"image/vnd.zbrush.pcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcx\"]\n },\n \"image/webp\": {\n \"source\": \"apache\",\n \"extensions\": [\"webp\"]\n },\n \"image/wmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmf\"]\n },\n \"image/x-3ds\": {\n \"source\": \"apache\",\n \"extensions\": [\"3ds\"]\n },\n \"image/x-cmu-raster\": {\n \"source\": \"apache\",\n \"extensions\": [\"ras\"]\n },\n \"image/x-cmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmx\"]\n },\n \"image/x-freehand\": {\n \"source\": \"apache\",\n \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n },\n \"image/x-icon\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/x-jng\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jng\"]\n },\n \"image/x-mrsid-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"sid\"]\n },\n \"image/x-ms-bmp\": {\n \"source\": \"nginx\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/x-pcx\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcx\"]\n },\n \"image/x-pict\": {\n \"source\": \"apache\",\n \"extensions\": [\"pic\",\"pct\"]\n },\n \"image/x-portable-anymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pnm\"]\n },\n \"image/x-portable-bitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pbm\"]\n },\n \"image/x-portable-graymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgm\"]\n },\n \"image/x-portable-pixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"ppm\"]\n },\n \"image/x-rgb\": {\n \"source\": \"apache\",\n \"extensions\": [\"rgb\"]\n },\n \"image/x-tga\": {\n \"source\": \"apache\",\n \"extensions\": [\"tga\"]\n },\n \"image/x-xbitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbm\"]\n },\n \"image/x-xcf\": {\n \"compressible\": false\n },\n \"image/x-xpixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xpm\"]\n },\n \"image/x-xwindowdump\": {\n \"source\": \"apache\",\n \"extensions\": [\"xwd\"]\n },\n \"message/cpim\": {\n \"source\": \"iana\"\n },\n \"message/delivery-status\": {\n \"source\": \"iana\"\n },\n \"message/disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\n \"disposition-notification\"\n ]\n },\n \"message/external-body\": {\n \"source\": \"iana\"\n },\n \"message/feedback-report\": {\n \"source\": \"iana\"\n },\n \"message/global\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8msg\"]\n },\n \"message/global-delivery-status\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8dsn\"]\n },\n \"message/global-disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8mdn\"]\n },\n \"message/global-headers\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8hdr\"]\n },\n \"message/http\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/imdn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"message/news\": {\n \"source\": \"iana\"\n },\n \"message/partial\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/rfc822\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eml\",\"mime\"]\n },\n \"message/s-http\": {\n \"source\": \"iana\"\n },\n \"message/sip\": {\n \"source\": \"iana\"\n },\n \"message/sipfrag\": {\n \"source\": \"iana\"\n },\n \"message/tracking-status\": {\n \"source\": \"iana\"\n },\n \"message/vnd.si.simp\": {\n \"source\": \"iana\"\n },\n \"message/vnd.wfa.wsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wsc\"]\n },\n \"model/3mf\": {\n \"source\": \"iana\",\n \"extensions\": [\"3mf\"]\n },\n \"model/e57\": {\n \"source\": \"iana\"\n },\n \"model/gltf+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gltf\"]\n },\n \"model/gltf-binary\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"glb\"]\n },\n \"model/iges\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"igs\",\"iges\"]\n },\n \"model/mesh\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n },\n \"model/mtl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mtl\"]\n },\n \"model/obj\": {\n \"source\": \"iana\",\n \"extensions\": [\"obj\"]\n },\n \"model/step\": {\n \"source\": \"iana\"\n },\n \"model/step+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"stpx\"]\n },\n \"model/step+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpz\"]\n },\n \"model/step-xml+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpxz\"]\n },\n \"model/stl\": {\n \"source\": \"iana\",\n \"extensions\": [\"stl\"]\n },\n \"model/vnd.collada+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dae\"]\n },\n \"model/vnd.dwf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwf\"]\n },\n \"model/vnd.flatland.3dml\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"gdl\"]\n },\n \"model/vnd.gs-gdl\": {\n \"source\": \"apache\"\n },\n \"model/vnd.gs.gdl\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gtw\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtw\"]\n },\n \"model/vnd.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"model/vnd.mts\": {\n \"source\": \"iana\",\n \"extensions\": [\"mts\"]\n },\n \"model/vnd.opengex\": {\n \"source\": \"iana\",\n \"extensions\": [\"ogex\"]\n },\n \"model/vnd.parasolid.transmit.binary\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_b\"]\n },\n \"model/vnd.parasolid.transmit.text\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_t\"]\n },\n \"model/vnd.pytha.pyox\": {\n \"source\": \"iana\"\n },\n \"model/vnd.rosette.annotated-data-model\": {\n \"source\": \"iana\"\n },\n \"model/vnd.sap.vds\": {\n \"source\": \"iana\",\n \"extensions\": [\"vds\"]\n },\n \"model/vnd.usdz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"usdz\"]\n },\n \"model/vnd.valve.source.compiled-map\": {\n \"source\": \"iana\",\n \"extensions\": [\"bsp\"]\n },\n \"model/vnd.vtu\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtu\"]\n },\n \"model/vrml\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"wrl\",\"vrml\"]\n },\n \"model/x3d+binary\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3db\",\"x3dbz\"]\n },\n \"model/x3d+fastinfoset\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3db\"]\n },\n \"model/x3d+vrml\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3dv\",\"x3dvz\"]\n },\n \"model/x3d+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"x3d\",\"x3dz\"]\n },\n \"model/x3d-vrml\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3dv\"]\n },\n \"multipart/alternative\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/appledouble\": {\n \"source\": \"iana\"\n },\n \"multipart/byteranges\": {\n \"source\": \"iana\"\n },\n \"multipart/digest\": {\n \"source\": \"iana\"\n },\n \"multipart/encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/form-data\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/header-set\": {\n \"source\": \"iana\"\n },\n \"multipart/mixed\": {\n \"source\": \"iana\"\n },\n \"multipart/multilingual\": {\n \"source\": \"iana\"\n },\n \"multipart/parallel\": {\n \"source\": \"iana\"\n },\n \"multipart/related\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/report\": {\n \"source\": \"iana\"\n },\n \"multipart/signed\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/vnd.bint.med-plus\": {\n \"source\": \"iana\"\n },\n \"multipart/voice-message\": {\n \"source\": \"iana\"\n },\n \"multipart/x-mixed-replace\": {\n \"source\": \"iana\"\n },\n \"text/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"text/cache-manifest\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"appcache\",\"manifest\"]\n },\n \"text/calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"ics\",\"ifb\"]\n },\n \"text/calender\": {\n \"compressible\": true\n },\n \"text/cmd\": {\n \"compressible\": true\n },\n \"text/coffeescript\": {\n \"extensions\": [\"coffee\",\"litcoffee\"]\n },\n \"text/cql\": {\n \"source\": \"iana\"\n },\n \"text/cql-expression\": {\n \"source\": \"iana\"\n },\n \"text/cql-identifier\": {\n \"source\": \"iana\"\n },\n \"text/css\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"css\"]\n },\n \"text/csv\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csv\"]\n },\n \"text/csv-schema\": {\n \"source\": \"iana\"\n },\n \"text/directory\": {\n \"source\": \"iana\"\n },\n \"text/dns\": {\n \"source\": \"iana\"\n },\n \"text/ecmascript\": {\n \"source\": \"iana\"\n },\n \"text/encaprtp\": {\n \"source\": \"iana\"\n },\n \"text/enriched\": {\n \"source\": \"iana\"\n },\n \"text/fhirpath\": {\n \"source\": \"iana\"\n },\n \"text/flexfec\": {\n \"source\": \"iana\"\n },\n \"text/fwdred\": {\n \"source\": \"iana\"\n },\n \"text/gff3\": {\n \"source\": \"iana\"\n },\n \"text/grammar-ref-list\": {\n \"source\": \"iana\"\n },\n \"text/html\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"html\",\"htm\",\"shtml\"]\n },\n \"text/jade\": {\n \"extensions\": [\"jade\"]\n },\n \"text/javascript\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"text/jcr-cnd\": {\n \"source\": \"iana\"\n },\n \"text/jsx\": {\n \"compressible\": true,\n \"extensions\": [\"jsx\"]\n },\n \"text/less\": {\n \"compressible\": true,\n \"extensions\": [\"less\"]\n },\n \"text/markdown\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"markdown\",\"md\"]\n },\n \"text/mathml\": {\n \"source\": \"nginx\",\n \"extensions\": [\"mml\"]\n },\n \"text/mdx\": {\n \"compressible\": true,\n \"extensions\": [\"mdx\"]\n },\n \"text/mizar\": {\n \"source\": \"iana\"\n },\n \"text/n3\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"n3\"]\n },\n \"text/parameters\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/parityfec\": {\n \"source\": \"iana\"\n },\n \"text/plain\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n },\n \"text/provenance-notation\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/prs.fallenstein.rst\": {\n \"source\": \"iana\"\n },\n \"text/prs.lines.tag\": {\n \"source\": \"iana\",\n \"extensions\": [\"dsc\"]\n },\n \"text/prs.prop.logic\": {\n \"source\": \"iana\"\n },\n \"text/raptorfec\": {\n \"source\": \"iana\"\n },\n \"text/red\": {\n \"source\": \"iana\"\n },\n \"text/rfc822-headers\": {\n \"source\": \"iana\"\n },\n \"text/richtext\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtx\"]\n },\n \"text/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"text/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"text/rtploopback\": {\n \"source\": \"iana\"\n },\n \"text/rtx\": {\n \"source\": \"iana\"\n },\n \"text/sgml\": {\n \"source\": \"iana\",\n \"extensions\": [\"sgml\",\"sgm\"]\n },\n \"text/shaclc\": {\n \"source\": \"iana\"\n },\n \"text/shex\": {\n \"source\": \"iana\",\n \"extensions\": [\"shex\"]\n },\n \"text/slim\": {\n \"extensions\": [\"slim\",\"slm\"]\n },\n \"text/spdx\": {\n \"source\": \"iana\",\n \"extensions\": [\"spdx\"]\n },\n \"text/strings\": {\n \"source\": \"iana\"\n },\n \"text/stylus\": {\n \"extensions\": [\"stylus\",\"styl\"]\n },\n \"text/t140\": {\n \"source\": \"iana\"\n },\n \"text/tab-separated-values\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tsv\"]\n },\n \"text/troff\": {\n \"source\": \"iana\",\n \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n },\n \"text/turtle\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"ttl\"]\n },\n \"text/ulpfec\": {\n \"source\": \"iana\"\n },\n \"text/uri-list\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uri\",\"uris\",\"urls\"]\n },\n \"text/vcard\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vcard\"]\n },\n \"text/vnd.a\": {\n \"source\": \"iana\"\n },\n \"text/vnd.abc\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ascii-art\": {\n \"source\": \"iana\"\n },\n \"text/vnd.curl\": {\n \"source\": \"iana\",\n \"extensions\": [\"curl\"]\n },\n \"text/vnd.curl.dcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"dcurl\"]\n },\n \"text/vnd.curl.mcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"mcurl\"]\n },\n \"text/vnd.curl.scurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"scurl\"]\n },\n \"text/vnd.debian.copyright\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.dmclientscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"text/vnd.esmertec.theme-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.familysearch.gedcom\": {\n \"source\": \"iana\",\n \"extensions\": [\"ged\"]\n },\n \"text/vnd.ficlab.flt\": {\n \"source\": \"iana\"\n },\n \"text/vnd.fly\": {\n \"source\": \"iana\",\n \"extensions\": [\"fly\"]\n },\n \"text/vnd.fmi.flexstor\": {\n \"source\": \"iana\",\n \"extensions\": [\"flx\"]\n },\n \"text/vnd.gml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.graphviz\": {\n \"source\": \"iana\",\n \"extensions\": [\"gv\"]\n },\n \"text/vnd.hans\": {\n \"source\": \"iana\"\n },\n \"text/vnd.hgl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.in3d.3dml\": {\n \"source\": \"iana\",\n \"extensions\": [\"3dml\"]\n },\n \"text/vnd.in3d.spot\": {\n \"source\": \"iana\",\n \"extensions\": [\"spot\"]\n },\n \"text/vnd.iptc.newsml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.iptc.nitf\": {\n \"source\": \"iana\"\n },\n \"text/vnd.latex-z\": {\n \"source\": \"iana\"\n },\n \"text/vnd.motorola.reflex\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ms-mediapackage\": {\n \"source\": \"iana\"\n },\n \"text/vnd.net2phone.commcenter.command\": {\n \"source\": \"iana\"\n },\n \"text/vnd.radisys.msml-basic-layout\": {\n \"source\": \"iana\"\n },\n \"text/vnd.senx.warpscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.si.uricatalogue\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sosi\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sun.j2me.app-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"jad\"]\n },\n \"text/vnd.trolltech.linguist\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.wap.si\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.sl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.wml\": {\n \"source\": \"iana\",\n \"extensions\": [\"wml\"]\n },\n \"text/vnd.wap.wmlscript\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmls\"]\n },\n \"text/vtt\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"vtt\"]\n },\n \"text/x-asm\": {\n \"source\": \"apache\",\n \"extensions\": [\"s\",\"asm\"]\n },\n \"text/x-c\": {\n \"source\": \"apache\",\n \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n },\n \"text/x-component\": {\n \"source\": \"nginx\",\n \"extensions\": [\"htc\"]\n },\n \"text/x-fortran\": {\n \"source\": \"apache\",\n \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n },\n \"text/x-gwt-rpc\": {\n \"compressible\": true\n },\n \"text/x-handlebars-template\": {\n \"extensions\": [\"hbs\"]\n },\n \"text/x-java-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"java\"]\n },\n \"text/x-jquery-tmpl\": {\n \"compressible\": true\n },\n \"text/x-lua\": {\n \"extensions\": [\"lua\"]\n },\n \"text/x-markdown\": {\n \"compressible\": true,\n \"extensions\": [\"mkd\"]\n },\n \"text/x-nfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"nfo\"]\n },\n \"text/x-opml\": {\n \"source\": \"apache\",\n \"extensions\": [\"opml\"]\n },\n \"text/x-org\": {\n \"compressible\": true,\n \"extensions\": [\"org\"]\n },\n \"text/x-pascal\": {\n \"source\": \"apache\",\n \"extensions\": [\"p\",\"pas\"]\n },\n \"text/x-processing\": {\n \"compressible\": true,\n \"extensions\": [\"pde\"]\n },\n \"text/x-sass\": {\n \"extensions\": [\"sass\"]\n },\n \"text/x-scss\": {\n \"extensions\": [\"scss\"]\n },\n \"text/x-setext\": {\n \"source\": \"apache\",\n \"extensions\": [\"etx\"]\n },\n \"text/x-sfv\": {\n \"source\": \"apache\",\n \"extensions\": [\"sfv\"]\n },\n \"text/x-suse-ymp\": {\n \"compressible\": true,\n \"extensions\": [\"ymp\"]\n },\n \"text/x-uuencode\": {\n \"source\": \"apache\",\n \"extensions\": [\"uu\"]\n },\n \"text/x-vcalendar\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcs\"]\n },\n \"text/x-vcard\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcf\"]\n },\n \"text/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\"]\n },\n \"text/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"text/yaml\": {\n \"compressible\": true,\n \"extensions\": [\"yaml\",\"yml\"]\n },\n \"video/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"video/3gpp\": {\n \"source\": \"iana\",\n \"extensions\": [\"3gp\",\"3gpp\"]\n },\n \"video/3gpp-tt\": {\n \"source\": \"iana\"\n },\n \"video/3gpp2\": {\n \"source\": \"iana\",\n \"extensions\": [\"3g2\"]\n },\n \"video/av1\": {\n \"source\": \"iana\"\n },\n \"video/bmpeg\": {\n \"source\": \"iana\"\n },\n \"video/bt656\": {\n \"source\": \"iana\"\n },\n \"video/celb\": {\n \"source\": \"iana\"\n },\n \"video/dv\": {\n \"source\": \"iana\"\n },\n \"video/encaprtp\": {\n \"source\": \"iana\"\n },\n \"video/ffv1\": {\n \"source\": \"iana\"\n },\n \"video/flexfec\": {\n \"source\": \"iana\"\n },\n \"video/h261\": {\n \"source\": \"iana\",\n \"extensions\": [\"h261\"]\n },\n \"video/h263\": {\n \"source\": \"iana\",\n \"extensions\": [\"h263\"]\n },\n \"video/h263-1998\": {\n \"source\": \"iana\"\n },\n \"video/h263-2000\": {\n \"source\": \"iana\"\n },\n \"video/h264\": {\n \"source\": \"iana\",\n \"extensions\": [\"h264\"]\n },\n \"video/h264-rcdo\": {\n \"source\": \"iana\"\n },\n \"video/h264-svc\": {\n \"source\": \"iana\"\n },\n \"video/h265\": {\n \"source\": \"iana\"\n },\n \"video/iso.segment\": {\n \"source\": \"iana\",\n \"extensions\": [\"m4s\"]\n },\n \"video/jpeg\": {\n \"source\": \"iana\",\n \"extensions\": [\"jpgv\"]\n },\n \"video/jpeg2000\": {\n \"source\": \"iana\"\n },\n \"video/jpm\": {\n \"source\": \"apache\",\n \"extensions\": [\"jpm\",\"jpgm\"]\n },\n \"video/jxsv\": {\n \"source\": \"iana\"\n },\n \"video/mj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"mj2\",\"mjp2\"]\n },\n \"video/mp1s\": {\n \"source\": \"iana\"\n },\n \"video/mp2p\": {\n \"source\": \"iana\"\n },\n \"video/mp2t\": {\n \"source\": \"iana\",\n \"extensions\": [\"ts\"]\n },\n \"video/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n },\n \"video/mp4v-es\": {\n \"source\": \"iana\"\n },\n \"video/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n },\n \"video/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"video/mpv\": {\n \"source\": \"iana\"\n },\n \"video/nv\": {\n \"source\": \"iana\"\n },\n \"video/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogv\"]\n },\n \"video/parityfec\": {\n \"source\": \"iana\"\n },\n \"video/pointer\": {\n \"source\": \"iana\"\n },\n \"video/quicktime\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"qt\",\"mov\"]\n },\n \"video/raptorfec\": {\n \"source\": \"iana\"\n },\n \"video/raw\": {\n \"source\": \"iana\"\n },\n \"video/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"video/rtploopback\": {\n \"source\": \"iana\"\n },\n \"video/rtx\": {\n \"source\": \"iana\"\n },\n \"video/scip\": {\n \"source\": \"iana\"\n },\n \"video/smpte291\": {\n \"source\": \"iana\"\n },\n \"video/smpte292m\": {\n \"source\": \"iana\"\n },\n \"video/ulpfec\": {\n \"source\": \"iana\"\n },\n \"video/vc1\": {\n \"source\": \"iana\"\n },\n \"video/vc2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.cctv\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvh\",\"uvvh\"]\n },\n \"video/vnd.dece.mobile\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvm\",\"uvvm\"]\n },\n \"video/vnd.dece.mp4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.pd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvp\",\"uvvp\"]\n },\n \"video/vnd.dece.sd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvs\",\"uvvs\"]\n },\n \"video/vnd.dece.video\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvv\",\"uvvv\"]\n },\n \"video/vnd.directv.mpeg\": {\n \"source\": \"iana\"\n },\n \"video/vnd.directv.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dlna.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dvb.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"dvb\"]\n },\n \"video/vnd.fvt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fvt\"]\n },\n \"video/vnd.hns.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsavc\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsmpeg2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.videop\": {\n \"source\": \"iana\"\n },\n \"video/vnd.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxu\",\"m4u\"]\n },\n \"video/vnd.ms-playready.media.pyv\": {\n \"source\": \"iana\",\n \"extensions\": [\"pyv\"]\n },\n \"video/vnd.nokia.interleaved-multimedia\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.mp4vr\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.videovoip\": {\n \"source\": \"iana\"\n },\n \"video/vnd.objectvideo\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.bink\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.smacker\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg1\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.swf\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealedmedia.softseal.mov\": {\n \"source\": \"iana\"\n },\n \"video/vnd.uvvu.mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvu\",\"uvvu\"]\n },\n \"video/vnd.vivo\": {\n \"source\": \"iana\",\n \"extensions\": [\"viv\"]\n },\n \"video/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"video/vp8\": {\n \"source\": \"iana\"\n },\n \"video/vp9\": {\n \"source\": \"iana\"\n },\n \"video/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"webm\"]\n },\n \"video/x-f4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"f4v\"]\n },\n \"video/x-fli\": {\n \"source\": \"apache\",\n \"extensions\": [\"fli\"]\n },\n \"video/x-flv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"flv\"]\n },\n \"video/x-m4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"m4v\"]\n },\n \"video/x-matroska\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n },\n \"video/x-mng\": {\n \"source\": \"apache\",\n \"extensions\": [\"mng\"]\n },\n \"video/x-ms-asf\": {\n \"source\": \"apache\",\n \"extensions\": [\"asf\",\"asx\"]\n },\n \"video/x-ms-vob\": {\n \"source\": \"apache\",\n \"extensions\": [\"vob\"]\n },\n \"video/x-ms-wm\": {\n \"source\": \"apache\",\n \"extensions\": [\"wm\"]\n },\n \"video/x-ms-wmv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"wmv\"]\n },\n \"video/x-ms-wmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmx\"]\n },\n \"video/x-ms-wvx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wvx\"]\n },\n \"video/x-msvideo\": {\n \"source\": \"apache\",\n \"extensions\": [\"avi\"]\n },\n \"video/x-sgi-movie\": {\n \"source\": \"apache\",\n \"extensions\": [\"movie\"]\n },\n \"video/x-smv\": {\n \"source\": \"apache\",\n \"extensions\": [\"smv\"]\n },\n \"x-conference/x-cooltalk\": {\n \"source\": \"apache\",\n \"extensions\": [\"ice\"]\n },\n \"x-shader/x-fragment\": {\n \"compressible\": true\n },\n \"x-shader/x-vertex\": {\n \"compressible\": true\n }\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n", "function Caseless (dict) {\n this.dict = dict || {}\n}\nCaseless.prototype.set = function (name, value, clobber) {\n if (typeof name === 'object') {\n for (var i in name) {\n this.set(i, name[i], value)\n }\n } else {\n if (typeof clobber === 'undefined') clobber = true\n var has = this.has(name)\n\n if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value\n else this.dict[has || name] = value\n return has\n }\n}\nCaseless.prototype.has = function (name) {\n var keys = Object.keys(this.dict)\n , name = name.toLowerCase()\n ;\n for (var i=0;i 0 && !req.useChunkedEncodingByDefault) {\n var idleSocket = this.freeSockets[name].pop()\n idleSocket.removeListener('error', idleSocket._onIdleError)\n delete idleSocket._onIdleError\n req._reusedSocket = true\n req.onSocket(idleSocket)\n } else {\n this.addRequestNoreuse(req, host, port)\n }\n}\n\nForeverAgent.prototype.removeSocket = function(s, name, host, port) {\n if (this.sockets[name]) {\n var index = this.sockets[name].indexOf(s)\n if (index !== -1) {\n this.sockets[name].splice(index, 1)\n }\n } else if (this.sockets[name] && this.sockets[name].length === 0) {\n // don't leak\n delete this.sockets[name]\n delete this.requests[name]\n }\n \n if (this.freeSockets[name]) {\n var index = this.freeSockets[name].indexOf(s)\n if (index !== -1) {\n this.freeSockets[name].splice(index, 1)\n if (this.freeSockets[name].length === 0) {\n delete this.freeSockets[name]\n }\n }\n }\n\n if (this.requests[name] && this.requests[name].length) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(name, host, port).emit('free')\n }\n}\n\nfunction ForeverAgentSSL (options) {\n ForeverAgent.call(this, options)\n}\nutil.inherits(ForeverAgentSSL, ForeverAgent)\n\nForeverAgentSSL.prototype.createConnection = createConnectionSSL\nForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest\n\nfunction createConnectionSSL (port, host, options) {\n if (typeof port === 'object') {\n options = port;\n } else if (typeof host === 'object') {\n options = host;\n } else if (typeof options === 'object') {\n options = options;\n } else {\n options = {};\n }\n\n if (typeof port === 'number') {\n options.port = port;\n }\n\n if (typeof host === 'string') {\n options.host = host;\n }\n\n return tls.connect(options);\n}\n", "var Stream = require('stream').Stream;\nvar util = require('util');\n\nmodule.exports = DelayedStream;\nfunction DelayedStream() {\n this.source = null;\n this.dataSize = 0;\n this.maxDataSize = 1024 * 1024;\n this.pauseStream = true;\n\n this._maxDataSizeExceeded = false;\n this._released = false;\n this._bufferedEvents = [];\n}\nutil.inherits(DelayedStream, Stream);\n\nDelayedStream.create = function(source, options) {\n var delayedStream = new this();\n\n options = options || {};\n for (var option in options) {\n delayedStream[option] = options[option];\n }\n\n delayedStream.source = source;\n\n var realEmit = source.emit;\n source.emit = function() {\n delayedStream._handleEmit(arguments);\n return realEmit.apply(source, arguments);\n };\n\n source.on('error', function() {});\n if (delayedStream.pauseStream) {\n source.pause();\n }\n\n return delayedStream;\n};\n\nObject.defineProperty(DelayedStream.prototype, 'readable', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.source.readable;\n }\n});\n\nDelayedStream.prototype.setEncoding = function() {\n return this.source.setEncoding.apply(this.source, arguments);\n};\n\nDelayedStream.prototype.resume = function() {\n if (!this._released) {\n this.release();\n }\n\n this.source.resume();\n};\n\nDelayedStream.prototype.pause = function() {\n this.source.pause();\n};\n\nDelayedStream.prototype.release = function() {\n this._released = true;\n\n this._bufferedEvents.forEach(function(args) {\n this.emit.apply(this, args);\n }.bind(this));\n this._bufferedEvents = [];\n};\n\nDelayedStream.prototype.pipe = function() {\n var r = Stream.prototype.pipe.apply(this, arguments);\n this.resume();\n return r;\n};\n\nDelayedStream.prototype._handleEmit = function(args) {\n if (this._released) {\n this.emit.apply(this, args);\n return;\n }\n\n if (args[0] === 'data') {\n this.dataSize += args[1].length;\n this._checkIfMaxDataSizeExceeded();\n }\n\n this._bufferedEvents.push(args);\n};\n\nDelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {\n if (this._maxDataSizeExceeded) {\n return;\n }\n\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n this._maxDataSizeExceeded = true;\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'\n this.emit('error', new Error(message));\n};\n", "var util = require('util');\nvar Stream = require('stream').Stream;\nvar DelayedStream = require('delayed-stream');\n\nmodule.exports = CombinedStream;\nfunction CombinedStream() {\n this.writable = false;\n this.readable = true;\n this.dataSize = 0;\n this.maxDataSize = 2 * 1024 * 1024;\n this.pauseStreams = true;\n\n this._released = false;\n this._streams = [];\n this._currentStream = null;\n this._insideLoop = false;\n this._pendingNext = false;\n}\nutil.inherits(CombinedStream, Stream);\n\nCombinedStream.create = function(options) {\n var combinedStream = new this();\n\n options = options || {};\n for (var option in options) {\n combinedStream[option] = options[option];\n }\n\n return combinedStream;\n};\n\nCombinedStream.isStreamLike = function(stream) {\n return (typeof stream !== 'function')\n && (typeof stream !== 'string')\n && (typeof stream !== 'boolean')\n && (typeof stream !== 'number')\n && (!Buffer.isBuffer(stream));\n};\n\nCombinedStream.prototype.append = function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n\n if (isStreamLike) {\n if (!(stream instanceof DelayedStream)) {\n var newStream = DelayedStream.create(stream, {\n maxDataSize: Infinity,\n pauseStream: this.pauseStreams,\n });\n stream.on('data', this._checkDataSize.bind(this));\n stream = newStream;\n }\n\n this._handleErrors(stream);\n\n if (this.pauseStreams) {\n stream.pause();\n }\n }\n\n this._streams.push(stream);\n return this;\n};\n\nCombinedStream.prototype.pipe = function(dest, options) {\n Stream.prototype.pipe.call(this, dest, options);\n this.resume();\n return dest;\n};\n\nCombinedStream.prototype._getNext = function() {\n this._currentStream = null;\n\n if (this._insideLoop) {\n this._pendingNext = true;\n return; // defer call\n }\n\n this._insideLoop = true;\n try {\n do {\n this._pendingNext = false;\n this._realGetNext();\n } while (this._pendingNext);\n } finally {\n this._insideLoop = false;\n }\n};\n\nCombinedStream.prototype._realGetNext = function() {\n var stream = this._streams.shift();\n\n\n if (typeof stream == 'undefined') {\n this.end();\n return;\n }\n\n if (typeof stream !== 'function') {\n this._pipeNext(stream);\n return;\n }\n\n var getStream = stream;\n getStream(function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('data', this._checkDataSize.bind(this));\n this._handleErrors(stream);\n }\n\n this._pipeNext(stream);\n }.bind(this));\n};\n\nCombinedStream.prototype._pipeNext = function(stream) {\n this._currentStream = stream;\n\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('end', this._getNext.bind(this));\n stream.pipe(this, {end: false});\n return;\n }\n\n var value = stream;\n this.write(value);\n this._getNext();\n};\n\nCombinedStream.prototype._handleErrors = function(stream) {\n var self = this;\n stream.on('error', function(err) {\n self._emitError(err);\n });\n};\n\nCombinedStream.prototype.write = function(data) {\n this.emit('data', data);\n};\n\nCombinedStream.prototype.pause = function() {\n if (!this.pauseStreams) {\n return;\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();\n this.emit('pause');\n};\n\nCombinedStream.prototype.resume = function() {\n if (!this._released) {\n this._released = true;\n this.writable = true;\n this._getNext();\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();\n this.emit('resume');\n};\n\nCombinedStream.prototype.end = function() {\n this._reset();\n this.emit('end');\n};\n\nCombinedStream.prototype.destroy = function() {\n this._reset();\n this.emit('close');\n};\n\nCombinedStream.prototype._reset = function() {\n this.writable = false;\n this._streams = [];\n this._currentStream = null;\n};\n\nCombinedStream.prototype._checkDataSize = function() {\n this._updateDataSize();\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';\n this._emitError(new Error(message));\n};\n\nCombinedStream.prototype._updateDataSize = function() {\n this.dataSize = 0;\n\n var self = this;\n this._streams.forEach(function(stream) {\n if (!stream.dataSize) {\n return;\n }\n\n self.dataSize += stream.dataSize;\n });\n\n if (this._currentStream && this._currentStream.dataSize) {\n this.dataSize += this._currentStream.dataSize;\n }\n};\n\nCombinedStream.prototype._emitError = function(err) {\n this._reset();\n this.emit('error', err);\n};\n", "module.exports = defer;\n\n/**\n * Runs provided function on next iteration of the event loop\n *\n * @param {function} fn - function to run\n */\nfunction defer(fn)\n{\n var nextTick = typeof setImmediate == 'function'\n ? setImmediate\n : (\n typeof process == 'object' && typeof process.nextTick == 'function'\n ? process.nextTick\n : null\n );\n\n if (nextTick)\n {\n nextTick(fn);\n }\n else\n {\n setTimeout(fn, 0);\n }\n}\n", "var defer = require('./defer.js');\n\n// API\nmodule.exports = async;\n\n/**\n * Runs provided callback asynchronously\n * even if callback itself is not\n *\n * @param {function} callback - callback to invoke\n * @returns {function} - augmented callback\n */\nfunction async(callback)\n{\n var isAsync = false;\n\n // check if async happened\n defer(function() { isAsync = true; });\n\n return function async_callback(err, result)\n {\n if (isAsync)\n {\n callback(err, result);\n }\n else\n {\n defer(function nextTick_callback()\n {\n callback(err, result);\n });\n }\n };\n}\n", "// API\nmodule.exports = abort;\n\n/**\n * Aborts leftover active jobs\n *\n * @param {object} state - current state object\n */\nfunction abort(state)\n{\n Object.keys(state.jobs).forEach(clean.bind(state));\n\n // reset leftover jobs\n state.jobs = {};\n}\n\n/**\n * Cleans up leftover job by invoking abort function for the provided job id\n *\n * @this state\n * @param {string|number} key - job id to abort\n */\nfunction clean(key)\n{\n if (typeof this.jobs[key] == 'function')\n {\n this.jobs[key]();\n }\n}\n", "var async = require('./async.js')\n , abort = require('./abort.js')\n ;\n\n// API\nmodule.exports = iterate;\n\n/**\n * Iterates over each job object\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {object} state - current job status\n * @param {function} callback - invoked when all elements processed\n */\nfunction iterate(list, iterator, state, callback)\n{\n // store current index\n var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;\n\n state.jobs[key] = runJob(iterator, key, list[key], function(error, output)\n {\n // don't repeat yourself\n // skip secondary callbacks\n if (!(key in state.jobs))\n {\n return;\n }\n\n // clean up jobs\n delete state.jobs[key];\n\n if (error)\n {\n // don't process rest of the results\n // stop still active jobs\n // and reset the list\n abort(state);\n }\n else\n {\n state.results[key] = output;\n }\n\n // return salvaged results\n callback(error, state.results);\n });\n}\n\n/**\n * Runs iterator over provided job element\n *\n * @param {function} iterator - iterator to invoke\n * @param {string|number} key - key/index of the element in the list of jobs\n * @param {mixed} item - job description\n * @param {function} callback - invoked after iterator is done with the job\n * @returns {function|mixed} - job abort function or something else\n */\nfunction runJob(iterator, key, item, callback)\n{\n var aborter;\n\n // allow shortcut if iterator expects only two arguments\n if (iterator.length == 2)\n {\n aborter = iterator(item, async(callback));\n }\n // otherwise go with full three arguments\n else\n {\n aborter = iterator(item, key, async(callback));\n }\n\n return aborter;\n}\n", "// API\nmodule.exports = state;\n\n/**\n * Creates initial state object\n * for iteration over list\n *\n * @param {array|object} list - list to iterate over\n * @param {function|null} sortMethod - function to use for keys sort,\n * or `null` to keep them as is\n * @returns {object} - initial state object\n */\nfunction state(list, sortMethod)\n{\n var isNamedList = !Array.isArray(list)\n , initState =\n {\n index : 0,\n keyedList: isNamedList || sortMethod ? Object.keys(list) : null,\n jobs : {},\n results : isNamedList ? {} : [],\n size : isNamedList ? Object.keys(list).length : list.length\n }\n ;\n\n if (sortMethod)\n {\n // sort array keys based on it's values\n // sort object's keys just on own merit\n initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)\n {\n return sortMethod(list[a], list[b]);\n });\n }\n\n return initState;\n}\n", "var abort = require('./abort.js')\n , async = require('./async.js')\n ;\n\n// API\nmodule.exports = terminator;\n\n/**\n * Terminates jobs in the attached state context\n *\n * @this AsyncKitState#\n * @param {function} callback - final callback to invoke after termination\n */\nfunction terminator(callback)\n{\n if (!Object.keys(this.jobs).length)\n {\n return;\n }\n\n // fast forward iteration index\n this.index = this.size;\n\n // abort jobs\n abort(this);\n\n // send back results we have so far\n async(callback)(null, this.results);\n}\n", "var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = parallel;\n\n/**\n * Runs iterator over provided array elements in parallel\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction parallel(list, iterator, callback)\n{\n var state = initState(list);\n\n while (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, function(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n // looks like it's the last one\n if (Object.keys(state.jobs).length === 0)\n {\n callback(null, state.results);\n return;\n }\n });\n\n state.index++;\n }\n\n return terminator.bind(state, callback);\n}\n", "var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = serialOrdered;\n// sorting helpers\nmodule.exports.ascending = ascending;\nmodule.exports.descending = descending;\n\n/**\n * Runs iterator over provided sorted array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} sortMethod - custom sort function\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serialOrdered(list, iterator, sortMethod, callback)\n{\n var state = initState(list, sortMethod);\n\n iterate(list, iterator, state, function iteratorHandler(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n state.index++;\n\n // are we there yet?\n if (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, iteratorHandler);\n return;\n }\n\n // done here\n callback(null, state.results);\n });\n\n return terminator.bind(state, callback);\n}\n\n/*\n * -- Sort methods\n */\n\n/**\n * sort helper to sort array elements in ascending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction ascending(a, b)\n{\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/**\n * sort helper to sort array elements in descending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction descending(a, b)\n{\n return -1 * ascending(a, b);\n}\n", "var serialOrdered = require('./serialOrdered.js');\n\n// Public API\nmodule.exports = serial;\n\n/**\n * Runs iterator over provided array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serial(list, iterator, callback)\n{\n return serialOrdered(list, iterator, null, callback);\n}\n", "module.exports =\n{\n parallel : require('./parallel.js'),\n serial : require('./serial.js'),\n serialOrdered : require('./serialOrdered.js')\n};\n", "// populates missing values\nmodule.exports = function(dst, src) {\n\n Object.keys(src).forEach(function(prop)\n {\n dst[prop] = dst[prop] || src[prop];\n });\n\n return dst;\n};\n", "var CombinedStream = require('combined-stream');\nvar util = require('util');\nvar path = require('path');\nvar http = require('http');\nvar https = require('https');\nvar parseUrl = require('url').parse;\nvar fs = require('fs');\nvar mime = require('mime-types');\nvar asynckit = require('asynckit');\nvar populate = require('./populate.js');\n\n// Public API\nmodule.exports = FormData;\n\n// make it a Stream\nutil.inherits(FormData, CombinedStream);\n\n/**\n * Create readable \"multipart/form-data\" streams.\n * Can be used to submit forms\n * and file uploads to other web applications.\n *\n * @constructor\n * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream\n */\nfunction FormData(options) {\n if (!(this instanceof FormData)) {\n return new FormData();\n }\n\n this._overheadLength = 0;\n this._valueLength = 0;\n this._valuesToMeasure = [];\n\n CombinedStream.call(this);\n\n options = options || {};\n for (var option in options) {\n this[option] = options[option];\n }\n}\n\nFormData.LINE_BREAK = '\\r\\n';\nFormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';\n\nFormData.prototype.append = function(field, value, options) {\n\n options = options || {};\n\n // allow filename as single option\n if (typeof options == 'string') {\n options = {filename: options};\n }\n\n var append = CombinedStream.prototype.append.bind(this);\n\n // all that streamy business can't handle numbers\n if (typeof value == 'number') {\n value = '' + value;\n }\n\n // https://github.com/felixge/node-form-data/issues/38\n if (util.isArray(value)) {\n // Please convert your array into string\n // the way web server expects it\n this._error(new Error('Arrays are not supported.'));\n return;\n }\n\n var header = this._multiPartHeader(field, value, options);\n var footer = this._multiPartFooter();\n\n append(header);\n append(value);\n append(footer);\n\n // pass along options.knownLength\n this._trackLength(header, value, options);\n};\n\nFormData.prototype._trackLength = function(header, value, options) {\n var valueLength = 0;\n\n // used w/ getLengthSync(), when length is known.\n // e.g. for streaming directly from a remote server,\n // w/ a known file a size, and not wanting to wait for\n // incoming file to finish to get its size.\n if (options.knownLength != null) {\n valueLength += +options.knownLength;\n } else if (Buffer.isBuffer(value)) {\n valueLength = value.length;\n } else if (typeof value === 'string') {\n valueLength = Buffer.byteLength(value);\n }\n\n this._valueLength += valueLength;\n\n // @check why add CRLF? does this account for custom/multiple CRLFs?\n this._overheadLength +=\n Buffer.byteLength(header) +\n FormData.LINE_BREAK.length;\n\n // empty or either doesn't have path or not an http response\n if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) {\n return;\n }\n\n // no need to bother with the length\n if (!options.knownLength) {\n this._valuesToMeasure.push(value);\n }\n};\n\nFormData.prototype._lengthRetriever = function(value, callback) {\n\n if (value.hasOwnProperty('fd')) {\n\n // take read range into a account\n // `end` = Infinity \u2013> read file till the end\n //\n // TODO: Looks like there is bug in Node fs.createReadStream\n // it doesn't respect `end` options without `start` options\n // Fix it when node fixes it.\n // https://github.com/joyent/node/issues/7819\n if (value.end != undefined && value.end != Infinity && value.start != undefined) {\n\n // when end specified\n // no need to calculate range\n // inclusive, starts with 0\n callback(null, value.end + 1 - (value.start ? value.start : 0));\n\n // not that fast snoopy\n } else {\n // still need to fetch file size from fs\n fs.stat(value.path, function(err, stat) {\n\n var fileSize;\n\n if (err) {\n callback(err);\n return;\n }\n\n // update final size based on the range options\n fileSize = stat.size - (value.start ? value.start : 0);\n callback(null, fileSize);\n });\n }\n\n // or http response\n } else if (value.hasOwnProperty('httpVersion')) {\n callback(null, +value.headers['content-length']);\n\n // or request stream http://github.com/mikeal/request\n } else if (value.hasOwnProperty('httpModule')) {\n // wait till response come back\n value.on('response', function(response) {\n value.pause();\n callback(null, +response.headers['content-length']);\n });\n value.resume();\n\n // something else\n } else {\n callback('Unknown stream');\n }\n};\n\nFormData.prototype._multiPartHeader = function(field, value, options) {\n // custom header specified (as string)?\n // it becomes responsible for boundary\n // (e.g. to handle extra CRLFs on .NET servers)\n if (typeof options.header == 'string') {\n return options.header;\n }\n\n var contentDisposition = this._getContentDisposition(value, options);\n var contentType = this._getContentType(value, options);\n\n var contents = '';\n var headers = {\n // add custom disposition as third element or keep it two elements if not\n 'Content-Disposition': ['form-data', 'name=\"' + field + '\"'].concat(contentDisposition || []),\n // if no content type. allow it to be empty array\n 'Content-Type': [].concat(contentType || [])\n };\n\n // allow custom headers.\n if (typeof options.header == 'object') {\n populate(headers, options.header);\n }\n\n var header;\n for (var prop in headers) {\n if (!headers.hasOwnProperty(prop)) continue;\n header = headers[prop];\n\n // skip nullish headers.\n if (header == null) {\n continue;\n }\n\n // convert all headers to arrays.\n if (!Array.isArray(header)) {\n header = [header];\n }\n\n // add non-empty headers.\n if (header.length) {\n contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;\n }\n }\n\n return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;\n};\n\nFormData.prototype._getContentDisposition = function(value, options) {\n\n var filename\n , contentDisposition\n ;\n\n if (typeof options.filepath === 'string') {\n // custom filepath for relative paths\n filename = path.normalize(options.filepath).replace(/\\\\/g, '/');\n } else if (options.filename || value.name || value.path) {\n // custom filename take precedence\n // formidable and the browser add a name property\n // fs- and request- streams have path property\n filename = path.basename(options.filename || value.name || value.path);\n } else if (value.readable && value.hasOwnProperty('httpVersion')) {\n // or try http response\n filename = path.basename(value.client._httpMessage.path);\n }\n\n if (filename) {\n contentDisposition = 'filename=\"' + filename + '\"';\n }\n\n return contentDisposition;\n};\n\nFormData.prototype._getContentType = function(value, options) {\n\n // use custom content-type above all\n var contentType = options.contentType;\n\n // or try `name` from formidable, browser\n if (!contentType && value.name) {\n contentType = mime.lookup(value.name);\n }\n\n // or try `path` from fs-, request- streams\n if (!contentType && value.path) {\n contentType = mime.lookup(value.path);\n }\n\n // or if it's http-reponse\n if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {\n contentType = value.headers['content-type'];\n }\n\n // or guess it from the filepath or filename\n if (!contentType && (options.filepath || options.filename)) {\n contentType = mime.lookup(options.filepath || options.filename);\n }\n\n // fallback to the default content type if `value` is not simple value\n if (!contentType && typeof value == 'object') {\n contentType = FormData.DEFAULT_CONTENT_TYPE;\n }\n\n return contentType;\n};\n\nFormData.prototype._multiPartFooter = function() {\n return function(next) {\n var footer = FormData.LINE_BREAK;\n\n var lastPart = (this._streams.length === 0);\n if (lastPart) {\n footer += this._lastBoundary();\n }\n\n next(footer);\n }.bind(this);\n};\n\nFormData.prototype._lastBoundary = function() {\n return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;\n};\n\nFormData.prototype.getHeaders = function(userHeaders) {\n var header;\n var formHeaders = {\n 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()\n };\n\n for (header in userHeaders) {\n if (userHeaders.hasOwnProperty(header)) {\n formHeaders[header.toLowerCase()] = userHeaders[header];\n }\n }\n\n return formHeaders;\n};\n\nFormData.prototype.getBoundary = function() {\n if (!this._boundary) {\n this._generateBoundary();\n }\n\n return this._boundary;\n};\n\nFormData.prototype._generateBoundary = function() {\n // This generates a 50 character boundary similar to those used by Firefox.\n // They are optimized for boyer-moore parsing.\n var boundary = '--------------------------';\n for (var i = 0; i < 24; i++) {\n boundary += Math.floor(Math.random() * 10).toString(16);\n }\n\n this._boundary = boundary;\n};\n\n// Note: getLengthSync DOESN'T calculate streams length\n// As workaround one can calculate file size manually\n// and add it as knownLength option\nFormData.prototype.getLengthSync = function() {\n var knownLength = this._overheadLength + this._valueLength;\n\n // Don't get confused, there are 3 \"internal\" streams for each keyval pair\n // so it basically checks if there is any value added to the form\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n // https://github.com/form-data/form-data/issues/40\n if (!this.hasKnownLength()) {\n // Some async length retrievers are present\n // therefore synchronous length calculation is false.\n // Please use getLength(callback) to get proper length\n this._error(new Error('Cannot calculate proper length in synchronous way.'));\n }\n\n return knownLength;\n};\n\n// Public API to check if length of added values is known\n// https://github.com/form-data/form-data/issues/196\n// https://github.com/form-data/form-data/issues/262\nFormData.prototype.hasKnownLength = function() {\n var hasKnownLength = true;\n\n if (this._valuesToMeasure.length) {\n hasKnownLength = false;\n }\n\n return hasKnownLength;\n};\n\nFormData.prototype.getLength = function(cb) {\n var knownLength = this._overheadLength + this._valueLength;\n\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n if (!this._valuesToMeasure.length) {\n process.nextTick(cb.bind(this, null, knownLength));\n return;\n }\n\n asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {\n if (err) {\n cb(err);\n return;\n }\n\n values.forEach(function(length) {\n knownLength += length;\n });\n\n cb(null, knownLength);\n });\n};\n\nFormData.prototype.submit = function(params, cb) {\n var request\n , options\n , defaults = {method: 'post'}\n ;\n\n // parse provided url if it's string\n // or treat it as options object\n if (typeof params == 'string') {\n\n params = parseUrl(params);\n options = populate({\n port: params.port,\n path: params.pathname,\n host: params.hostname,\n protocol: params.protocol\n }, defaults);\n\n // use custom params\n } else {\n\n options = populate(params, defaults);\n // if no port provided use default one\n if (!options.port) {\n options.port = options.protocol == 'https:' ? 443 : 80;\n }\n }\n\n // put that good code in getHeaders to some use\n options.headers = this.getHeaders(params.headers);\n\n // https if specified, fallback to http in any other case\n if (options.protocol == 'https:') {\n request = https.request(options);\n } else {\n request = http.request(options);\n }\n\n // get content length and fire away\n this.getLength(function(err, length) {\n if (err) {\n this._error(err);\n return;\n }\n\n // add content length\n request.setHeader('Content-Length', length);\n\n this.pipe(request);\n if (cb) {\n request.on('error', cb);\n request.on('response', cb.bind(this, null));\n }\n }.bind(this));\n\n return request;\n};\n\nFormData.prototype._error = function(err) {\n if (!this.error) {\n this.error = err;\n this.pause();\n this.emit('error', err);\n }\n};\n\nFormData.prototype.toString = function () {\n return '[object FormData]';\n};\n", "var stream = require('stream')\n\n\nfunction isStream (obj) {\n return obj instanceof stream.Stream\n}\n\n\nfunction isReadable (obj) {\n return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object'\n}\n\n\nfunction isWritable (obj) {\n return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object'\n}\n\n\nfunction isDuplex (obj) {\n return isReadable(obj) && isWritable(obj)\n}\n\n\nmodule.exports = isStream\nmodule.exports.isReadable = isReadable\nmodule.exports.isWritable = isWritable\nmodule.exports.isDuplex = isDuplex\n", "module.exports = isTypedArray\nisTypedArray.strict = isStrictTypedArray\nisTypedArray.loose = isLooseTypedArray\n\nvar toString = Object.prototype.toString\nvar names = {\n '[object Int8Array]': true\n , '[object Int16Array]': true\n , '[object Int32Array]': true\n , '[object Uint8Array]': true\n , '[object Uint8ClampedArray]': true\n , '[object Uint16Array]': true\n , '[object Uint32Array]': true\n , '[object Float32Array]': true\n , '[object Float64Array]': true\n}\n\nfunction isTypedArray(arr) {\n return (\n isStrictTypedArray(arr)\n || isLooseTypedArray(arr)\n )\n}\n\nfunction isStrictTypedArray(arr) {\n return (\n arr instanceof Int8Array\n || arr instanceof Int16Array\n || arr instanceof Int32Array\n || arr instanceof Uint8Array\n || arr instanceof Uint8ClampedArray\n || arr instanceof Uint16Array\n || arr instanceof Uint32Array\n || arr instanceof Float32Array\n || arr instanceof Float64Array\n )\n}\n\nfunction isLooseTypedArray(arr) {\n return names[toString.call(arr)]\n}\n", "'use strict'\n\nfunction formatHostname (hostname) {\n // canonicalize the hostname, so that 'oogle.com' won't match 'google.com'\n return hostname.replace(/^\\.*/, '.').toLowerCase()\n}\n\nfunction parseNoProxyZone (zone) {\n zone = zone.trim().toLowerCase()\n\n var zoneParts = zone.split(':', 2)\n var zoneHost = formatHostname(zoneParts[0])\n var zonePort = zoneParts[1]\n var hasPort = zone.indexOf(':') > -1\n\n return {hostname: zoneHost, port: zonePort, hasPort: hasPort}\n}\n\nfunction uriInNoProxy (uri, noProxy) {\n var port = uri.port || (uri.protocol === 'https:' ? '443' : '80')\n var hostname = formatHostname(uri.hostname)\n var noProxyList = noProxy.split(',')\n\n // iterate through the noProxyList until it finds a match.\n return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) {\n var isMatchedAt = hostname.indexOf(noProxyZone.hostname)\n var hostnameMatched = (\n isMatchedAt > -1 &&\n (isMatchedAt === hostname.length - noProxyZone.hostname.length)\n )\n\n if (noProxyZone.hasPort) {\n return (port === noProxyZone.port) && hostnameMatched\n }\n\n return hostnameMatched\n })\n}\n\nfunction getProxyFromURI (uri) {\n // Decide the proper request proxy to use based on the request URI object and the\n // environmental variables (NO_PROXY, HTTP_PROXY, etc.)\n // respect NO_PROXY environment variables (see: https://lynx.invisible-island.net/lynx2.8.7/breakout/lynx_help/keystrokes/environments.html)\n\n var noProxy = process.env.NO_PROXY || process.env.no_proxy || ''\n\n // if the noProxy is a wildcard then return null\n\n if (noProxy === '*') {\n return null\n }\n\n // if the noProxy is not empty and the uri is found return null\n\n if (noProxy !== '' && uriInNoProxy(uri, noProxy)) {\n return null\n }\n\n // Check for HTTP or HTTPS Proxy in environment Else default to null\n\n if (uri.protocol === 'http:') {\n return process.env.HTTP_PROXY ||\n process.env.http_proxy || null\n }\n\n if (uri.protocol === 'https:') {\n return process.env.HTTPS_PROXY ||\n process.env.https_proxy ||\n process.env.HTTP_PROXY ||\n process.env.http_proxy || null\n }\n\n // if none of that works, return null\n // (What uri protocol are you using then?)\n\n return null\n}\n\nmodule.exports = getProxyFromURI\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n", "'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (isArray(obj)) {\n pushToArray(values, stringify(\n obj[key],\n generateArrayPrefix(prefix, key),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n } else {\n pushToArray(values, stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n }\n\n return values;\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.encoder !== null && typeof options.encoder !== 'undefined' && typeof options.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n var sort = typeof options.sort === 'function' ? options.sort : null;\n var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n if (typeof options.format === 'undefined') {\n options.format = formats['default'];\n } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n var formatter = formats.formatters[options.format];\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (options.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = options.arrayFormat;\n } else if ('indices' in options) {\n arrayFormat = options.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (sort) {\n objKeys.sort(sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encode ? encoder : null,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n\n var joined = keys.join(delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n return joined.length > 0 ? prefix + joined : '';\n};\n", "'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n", "'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n", "'use strict'\n\nvar qs = require('qs')\nvar querystring = require('querystring')\n\nfunction Querystring (request) {\n this.request = request\n this.lib = null\n this.useQuerystring = null\n this.parseOptions = null\n this.stringifyOptions = null\n}\n\nQuerystring.prototype.init = function (options) {\n if (this.lib) { return }\n\n this.useQuerystring = options.useQuerystring\n this.lib = (this.useQuerystring ? querystring : qs)\n\n this.parseOptions = options.qsParseOptions || {}\n this.stringifyOptions = options.qsStringifyOptions || {}\n}\n\nQuerystring.prototype.stringify = function (obj) {\n return (this.useQuerystring)\n ? this.rfc3986(this.lib.stringify(obj,\n this.stringifyOptions.sep || null,\n this.stringifyOptions.eq || null,\n this.stringifyOptions))\n : this.lib.stringify(obj, this.stringifyOptions)\n}\n\nQuerystring.prototype.parse = function (str) {\n return (this.useQuerystring)\n ? this.lib.parse(str,\n this.parseOptions.sep || null,\n this.parseOptions.eq || null,\n this.parseOptions)\n : this.lib.parse(str, this.parseOptions)\n}\n\nQuerystring.prototype.rfc3986 = function (str) {\n return str.replace(/[!'()*]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\nQuerystring.prototype.unescape = querystring.unescape\n\nexports.Querystring = Querystring\n", "import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport ws from \"./schemes/ws\";\nSCHEMES[ws.scheme] = ws;\n\nimport wss from \"./schemes/wss\";\nSCHEMES[wss.scheme] = wss;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport ws from \"./ws\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"wss\",\n\tdomainHost : ws.domainHost,\n\tparse : ws.parse,\n\tserialize : ws.serialize\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nexport interface WSComponents extends URIComponents {\n\tresourceName?: string;\n\tsecure?: boolean;\n}\n\nfunction isSecure(wsComponents:WSComponents):boolean {\n\treturn typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n\n//RFC 6455\nconst handler:URISchemeHandler = {\n\tscheme : \"ws\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):WSComponents {\n\t\tconst wsComponents = components as WSComponents;\n\n\t\t//indicate if the secure flag is set\n\t\twsComponents.secure = isSecure(wsComponents);\n\n\t\t//construct resouce name\n\t\twsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n\t\twsComponents.path = undefined;\n\t\twsComponents.query = undefined;\n\n\t\treturn wsComponents;\n\t},\n\n\tserialize : function (wsComponents:WSComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n\t\t\twsComponents.port = undefined;\n\t\t}\n\n\t\t//ensure scheme matches secure flag\n\t\tif (typeof wsComponents.secure === 'boolean') {\n\t\t\twsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws');\n\t\t\twsComponents.secure = undefined;\n\t\t}\n\n\t\t//reconstruct path from resource name\n\t\tif (wsComponents.resourceName) {\n\t\t\tconst [path, query] = wsComponents.resourceName.split('?');\n\t\t\twsComponents.path = (path && path !== '/' ? path : undefined);\n\t\t\twsComponents.query = query;\n\t\t\twsComponents.resourceName = undefined;\n\t\t}\n\n\t\t//forbid fragment component\n\t\twsComponents.fragment = undefined;\n\n\t\treturn wsComponents;\n\t}\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tconst secure = String(components.scheme).toLowerCase() === \"https\";\n\n\t\t//normalize the default port\n\t\tif (components.port === (secure ? 443 : 80) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;", "/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author Gary Court\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = ((\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\" || typeof components.port === \"string\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(String(components.port));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n", "'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n", "import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n", "import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n", "export function merge(...sets:Array):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n", "'use strict';\n\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nmodule.exports = function ucs2length(str) {\n var length = 0\n , len = str.length\n , pos = 0\n , value;\n while (pos < len) {\n length++;\n value = str.charCodeAt(pos++);\n if (value >= 0xD800 && value <= 0xDBFF && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\n }\n }\n return length;\n};\n", "'use strict';\n\n\nmodule.exports = {\n copy: copy,\n checkDataType: checkDataType,\n checkDataTypes: checkDataTypes,\n coerceToTypes: coerceToTypes,\n toHash: toHash,\n getProperty: getProperty,\n escapeQuotes: escapeQuotes,\n equal: require('fast-deep-equal'),\n ucs2length: require('./ucs2length'),\n varOccurences: varOccurences,\n varReplace: varReplace,\n schemaHasRules: schemaHasRules,\n schemaHasRulesExcept: schemaHasRulesExcept,\n schemaUnknownRules: schemaUnknownRules,\n toQuotedString: toQuotedString,\n getPathExpr: getPathExpr,\n getPath: getPath,\n getData: getData,\n unescapeFragment: unescapeFragment,\n unescapeJsonPointer: unescapeJsonPointer,\n escapeFragment: escapeFragment,\n escapeJsonPointer: escapeJsonPointer\n};\n\n\nfunction copy(o, to) {\n to = to || {};\n for (var key in o) to[key] = o[key];\n return to;\n}\n\n\nfunction checkDataType(dataType, data, strictNumbers, negate) {\n var EQUAL = negate ? ' !== ' : ' === '\n , AND = negate ? ' || ' : ' && '\n , OK = negate ? '!' : ''\n , NOT = negate ? '' : '!';\n switch (dataType) {\n case 'null': return data + EQUAL + 'null';\n case 'array': return OK + 'Array.isArray(' + data + ')';\n case 'object': return '(' + OK + data + AND +\n 'typeof ' + data + EQUAL + '\"object\"' + AND +\n NOT + 'Array.isArray(' + data + '))';\n case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n NOT + '(' + data + ' % 1)' +\n AND + data + EQUAL + data +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n case 'number': return '(typeof ' + data + EQUAL + '\"' + dataType + '\"' +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n }\n}\n\n\nfunction checkDataTypes(dataTypes, data, strictNumbers) {\n switch (dataTypes.length) {\n case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);\n default:\n var code = '';\n var types = toHash(dataTypes);\n if (types.array && types.object) {\n code = types.null ? '(': '(!' + data + ' || ';\n code += 'typeof ' + data + ' !== \"object\")';\n delete types.null;\n delete types.array;\n delete types.object;\n }\n if (types.number) delete types.integer;\n for (var t in types)\n code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);\n\n return code;\n }\n}\n\n\nvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\nfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n if (Array.isArray(dataTypes)) {\n var types = [];\n for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n return paths[lvl - up];\n }\n\n if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n data = 'data' + ((lvl - up) || '');\n if (!jsonPointer) return data;\n }\n\n var expr = data;\n var segments = jsonPointer.split('/');\n for (var i=0; i= 0) return { index: index, compiling: true };\n index = this._compilations.length;\n this._compilations[index] = {\n schema: schema,\n root: root,\n baseId: baseId\n };\n return { index: index, compiling: false };\n}\n\n\n/**\n * Removes the schema from the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n */\nfunction endCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var i = compIndex.call(this, schema, root, baseId);\n if (i >= 0) this._compilations.splice(i, 1);\n}\n\n\n/**\n * Index of schema compilation in the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Integer} compilation index\n */\nfunction compIndex(schema, root, baseId) {\n /* jshint validthis: true */\n for (var i=0; i%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n// For the source: https://gist.github.com/dperini/729294\n// For test cases: https://mathiasbynens.be/demo/url-regex\n// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\nvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\nvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\nvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\nvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\nmodule.exports = formats;\n\nfunction formats(mode) {\n mode = mode == 'full' ? 'full' : 'fast';\n return util.copy(formats[mode]);\n}\n\n\nformats.fast = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n 'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n 'uri-reference': /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n 'uri-template': URITEMPLATE,\n url: URL,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\n email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n hostname: HOSTNAME,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: UUID,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nformats.full = {\n date: date,\n time: time,\n 'date-time': date_time,\n uri: uri,\n 'uri-reference': URIREF,\n 'uri-template': URITEMPLATE,\n url: URL,\n email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname: HOSTNAME,\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n uuid: UUID,\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nfunction isLeapYear(year) {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n\nfunction date(str) {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n var matches = str.match(DATE);\n if (!matches) return false;\n\n var year = +matches[1];\n var month = +matches[2];\n var day = +matches[3];\n\n return month >= 1 && month <= 12 && day >= 1 &&\n day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n}\n\n\nfunction time(str, full) {\n var matches = str.match(TIME);\n if (!matches) return false;\n\n var hour = matches[1];\n var minute = matches[2];\n var second = matches[3];\n var timeZone = matches[5];\n return ((hour <= 23 && minute <= 59 && second <= 59) ||\n (hour == 23 && minute == 59 && second == 60)) &&\n (!full || timeZone);\n}\n\n\nvar DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction date_time(str) {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n var dateTime = str.split(DATE_TIME_SEPARATOR);\n return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n}\n\n\nvar NOT_URI_FRAGMENT = /\\/|:/;\nfunction uri(str) {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n}\n\n\nvar Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\n if (Z_ANCHOR.test(str)) return false;\n try {\n new RegExp(str);\n return true;\n } catch(e) {\n return false;\n }\n}\n", "'use strict';\nmodule.exports = function generate_ref(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $async, $refCode;\n if ($schema == '#' || $schema == '#/') {\n if (it.isRoot) {\n $async = it.async;\n $refCode = 'validate';\n } else {\n $async = it.root.schema.$async === true;\n $refCode = 'root.refVal[0]';\n }\n } else {\n var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\n if ($refVal === undefined) {\n var $message = it.MissingRefError.message(it.baseId, $schema);\n if (it.opts.missingRefs == 'fail') {\n it.logger.error($message);\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n } else if (it.opts.missingRefs == 'ignore') {\n it.logger.warn($message);\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n } else {\n throw new it.MissingRefError(it.baseId, $schema, $message);\n }\n } else if ($refVal.inline) {\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n $it.schema = $refVal.schema;\n $it.schemaPath = '';\n $it.errSchemaPath = $schema;\n var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\n out += ' ' + ($code) + ' ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n }\n } else {\n $async = $refVal.$async === true || (it.async && $refVal.$async !== false);\n $refCode = $refVal.code;\n }\n }\n if ($refCode) {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n if (it.opts.passContext) {\n out += ' ' + ($refCode) + '.call(this, ';\n } else {\n out += ' ' + ($refCode) + '( ';\n }\n out += ' ' + ($data) + ', (dataPath || \\'\\')';\n if (it.errorPath != '\"\"') {\n out += ' + ' + (it.errorPath);\n }\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) ';\n var __callValidate = out;\n out = $$outStack.pop();\n if ($async) {\n if (!it.async) throw new Error('async schema referenced by sync schema');\n if ($breakOnError) {\n out += ' var ' + ($valid) + '; ';\n }\n out += ' try { await ' + (__callValidate) + '; ';\n if ($breakOnError) {\n out += ' ' + ($valid) + ' = true; ';\n }\n out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';\n if ($breakOnError) {\n out += ' ' + ($valid) + ' = false; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($valid) + ') { ';\n }\n } else {\n out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_allOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $allSchemasEmpty = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $allSchemasEmpty = false;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($breakOnError) {\n if ($allSchemasEmpty) {\n out += ' if (true) { ';\n } else {\n out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_anyOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $noEmptySchema = $schema.every(function($sch) {\n return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all));\n });\n if ($noEmptySchema) {\n var $currentBaseId = $it.baseId;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n $closingBraces += '}';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match some schema in anyOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_comment(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $comment = it.util.toQuotedString($schema);\n if (it.opts.$comment === true) {\n out += ' console.log(' + ($comment) + ');';\n } else if (typeof it.opts.$comment == 'function') {\n out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_const(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!$isData) {\n out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to constant\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_contains(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId,\n $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all));\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if ($nonEmptySchema) {\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (' + ($nextValid) + ') break; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n } else {\n out += ' if (' + ($data) + '.length == 0) {';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should contain a valid item\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n if ($nonEmptySchema) {\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n }\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_dependencies(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $schemaDeps = {},\n $propertyDeps = {},\n $ownProperties = it.opts.ownProperties;\n for ($property in $schema) {\n if ($property == '__proto__') continue;\n var $sch = $schema[$property];\n var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\n $deps[$property] = $sch;\n }\n out += 'var ' + ($errs) + ' = errors;';\n var $currentErrorPath = it.errorPath;\n out += 'var missing' + ($lvl) + ';';\n for (var $property in $propertyDeps) {\n $deps = $propertyDeps[$property];\n if ($deps.length) {\n out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n if ($breakOnError) {\n out += ' && ( ';\n var arr1 = $deps;\n if (arr1) {\n var $propertyKey, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $propertyKey = arr1[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ')) { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should have ';\n if ($deps.length == 1) {\n out += 'property ' + (it.util.escapeQuotes($deps[0]));\n } else {\n out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n }\n out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n } else {\n out += ' ) { ';\n var arr2 = $deps;\n if (arr2) {\n var $propertyKey, i2 = -1,\n l2 = arr2.length - 1;\n while (i2 < l2) {\n $propertyKey = arr2[i2 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should have ';\n if ($deps.length == 1) {\n out += 'property ' + (it.util.escapeQuotes($deps[0]));\n } else {\n out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n }\n out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n out += ' } ';\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n var $currentBaseId = $it.baseId;\n for (var $property in $schemaDeps) {\n var $sch = $schemaDeps[$property];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n out += ') { ';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + it.util.getProperty($property);\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_enum(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $i = 'i' + $lvl,\n $vSchema = 'schema' + $lvl;\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ';';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to one of the allowed values\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_format(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n if (it.opts.format === false) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $unknownFormats = it.opts.unknownFormats,\n $allowUnknown = Array.isArray($unknownFormats);\n if ($isData) {\n var $format = 'format' + $lvl,\n $isObject = 'isObject' + $lvl,\n $formatType = 'formatType' + $lvl;\n out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n if (it.async) {\n out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n }\n out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' (';\n if ($unknownFormats != 'ignore') {\n out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n if ($allowUnknown) {\n out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n }\n out += ') || ';\n }\n out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n if (it.async) {\n out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n } else {\n out += ' ' + ($format) + '(' + ($data) + ') ';\n }\n out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n } else {\n var $format = it.formats[$schema];\n if (!$format) {\n if ($unknownFormats == 'ignore') {\n it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else {\n throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n var $formatType = $isObject && $format.type || 'string';\n if ($isObject) {\n var $async = $format.async === true;\n $format = $format.validate;\n }\n if ($formatType != $ruleType) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n if ($async) {\n if (!it.async) throw new Error('async format in sync schema');\n var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n } else {\n out += ' if (! ';\n var $formatRef = 'formats' + it.util.getProperty($schema);\n if ($isObject) $formatRef += '.validate';\n if (typeof $format == 'function') {\n out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n } else {\n out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n }\n out += ') { ';\n }\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match format \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_if(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $thenSch = it.schema['then'],\n $elseSch = it.schema['else'],\n $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)),\n $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)),\n $currentBaseId = $it.baseId;\n if ($thenPresent || $elsePresent) {\n var $ifClause;\n $it.createErrors = false;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n $it.createErrors = true;\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n if ($thenPresent) {\n out += ' if (' + ($nextValid) + ') { ';\n $it.schema = it.schema['then'];\n $it.schemaPath = it.schemaPath + '.then';\n $it.errSchemaPath = it.errSchemaPath + '/then';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n } else {\n $ifClause = '\\'then\\'';\n }\n out += ' } ';\n if ($elsePresent) {\n out += ' else { ';\n }\n } else {\n out += ' if (!' + ($nextValid) + ') { ';\n }\n if ($elsePresent) {\n $it.schema = it.schema['else'];\n $it.schemaPath = it.schemaPath + '.else';\n $it.errSchemaPath = it.errSchemaPath + '/else';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n } else {\n $ifClause = '\\'else\\'';\n }\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_items(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId;\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if (Array.isArray($schema)) {\n var $additionalItems = it.schema.additionalItems;\n if ($additionalItems === false) {\n out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n var $passData = $data + '[' + $i + ']';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n $it.dataPathArr[$dataNxt] = $i;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) {\n $it.schema = $additionalItems;\n $it.schemaPath = it.schemaPath + '.additionalItems';\n $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' }';\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limit(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $isMax = $keyword == 'maximum',\n $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\n $schemaExcl = it.schema[$exclusiveKeyword],\n $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,\n $op = $isMax ? '<' : '>',\n $notOp = $isMax ? '>' : '<',\n $errorKeyword = undefined;\n if (!($isData || typeof $schema == 'number' || $schema === undefined)) {\n throw new Error($keyword + ' must be number');\n }\n if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) {\n throw new Error($exclusiveKeyword + ' must be number or boolean');\n }\n if ($isDataExcl) {\n var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n $exclusive = 'exclusive' + $lvl,\n $exclType = 'exclType' + $lvl,\n $exclIsNumber = 'exclIsNumber' + $lvl,\n $opExpr = 'op' + $lvl,\n $opStr = '\\' + ' + $opExpr + ' + \\'';\n out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n $schemaValueExcl = 'schemaExcl' + $lvl;\n out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n var $errorKeyword = $exclusiveKeyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n if ($schema === undefined) {\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaValueExcl;\n $isData = $isDataExcl;\n }\n } else {\n var $exclIsNumber = typeof $schemaExcl == 'number',\n $opStr = $op;\n if ($exclIsNumber && $isData) {\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n } else {\n if ($exclIsNumber && $schema === undefined) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaExcl;\n $notOp += '=';\n } else {\n if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $notOp += '=';\n } else {\n $exclusive = false;\n $opStr += '=';\n }\n }\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n }\n }\n $errorKeyword = $errorKeyword || $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ' + ($opStr) + ' ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxItems' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxItems') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitLength(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxLength' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n if (it.opts.unicode === false) {\n out += ' ' + ($data) + '.length ';\n } else {\n out += ' ucs2length(' + ($data) + ') ';\n }\n out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be ';\n if ($keyword == 'maxLength') {\n out += 'longer';\n } else {\n out += 'shorter';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' characters\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitProperties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxProperties' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxProperties') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' properties\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_multipleOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n out += 'var division' + ($lvl) + ';if (';\n if ($isData) {\n out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n }\n out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n if (it.opts.multipleOfPrecision) {\n out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n } else {\n out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n }\n out += ' ) ';\n if ($isData) {\n out += ' ) ';\n }\n out += ' ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be multiple of ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_not(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.createErrors = false;\n var $allErrorsOption;\n if ($it.opts.allErrors) {\n $allErrorsOption = $it.opts.allErrors;\n $it.opts.allErrors = false;\n }\n out += ' ' + (it.validate($it)) + ' ';\n $it.createErrors = true;\n if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (' + ($nextValid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n out += ' var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_oneOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $prevValid = 'prevValid' + $lvl,\n $passingSchemas = 'passingSchemas' + $lvl;\n out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n } else {\n out += ' var ' + ($nextValid) + ' = true; ';\n }\n if ($i) {\n out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n $closingBraces += '}';\n }\n out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_pattern(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match pattern \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_properties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl;\n var $schemaKeys = Object.keys($schema || {}).filter(notProto),\n $pProperties = it.schema.patternProperties || {},\n $pPropertyKeys = Object.keys($pProperties).filter(notProto),\n $aProperties = it.schema.additionalProperties,\n $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n $noAdditional = $aProperties === false,\n $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n $removeAdditional = it.opts.removeAdditional,\n $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n var $required = it.schema.required;\n if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {\n var $requiredHash = it.util.toHash($required);\n }\n\n function notProto(p) {\n return p !== '__proto__';\n }\n out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined;';\n }\n if ($checkAdditional) {\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n if ($someProperties) {\n out += ' var isAdditional' + ($lvl) + ' = !(false ';\n if ($schemaKeys.length) {\n if ($schemaKeys.length > 8) {\n out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';\n } else {\n var arr1 = $schemaKeys;\n if (arr1) {\n var $propertyKey, i1 = -1,\n l1 = arr1.length - 1;\n while (i1 < l1) {\n $propertyKey = arr1[i1 += 1];\n out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr2 = $pPropertyKeys;\n if (arr2) {\n var $pProperty, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $pProperty = arr2[$i += 1];\n out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n }\n }\n }\n out += ' ); if (isAdditional' + ($lvl) + ') { ';\n }\n if ($removeAdditional == 'all') {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n var $currentErrorPath = it.errorPath;\n var $additionalProperty = '\\' + ' + $key + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n }\n if ($noAdditional) {\n if ($removeAdditional) {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n out += ' ' + ($nextValid) + ' = false; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is an invalid additional property';\n } else {\n out += 'should NOT have additional properties';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n out += ' break; ';\n }\n }\n } else if ($additionalIsSchema) {\n if ($removeAdditional == 'failing') {\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n } else {\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n }\n if ($someProperties) {\n out += ' } ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n if ($schemaKeys.length) {\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n var $prop = it.util.getProperty($propertyKey),\n $passData = $data + $prop,\n $hasDefault = $useDefaults && $sch.default !== undefined;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + $prop;\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n $code = it.util.varReplace($code, $nextData, $passData);\n var $useData = $passData;\n } else {\n var $useData = $nextData;\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n }\n if ($hasDefault) {\n out += ' ' + ($code) + ' ';\n } else {\n if ($requiredHash && $requiredHash[$propertyKey]) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = false; ';\n var $currentErrorPath = it.errorPath,\n $currErrSchemaPath = $errSchemaPath,\n $missingProperty = it.util.escapeQuotes($propertyKey);\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n $errSchemaPath = it.errSchemaPath + '/required';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n it.errorPath = $currentErrorPath;\n out += ' } else { ';\n } else {\n if ($breakOnError) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = true; } else { ';\n } else {\n out += ' if (' + ($useData) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ' ) { ';\n }\n }\n out += ' ' + ($code) + ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr4 = $pPropertyKeys;\n if (arr4) {\n var $pProperty, i4 = -1,\n l4 = arr4.length - 1;\n while (i4 < l4) {\n $pProperty = arr4[i4 += 1];\n var $sch = $pProperties[$pProperty];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else ' + ($nextValid) + ' = true; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_propertyNames(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n out += 'var ' + ($errs) + ' = errors;';\n if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $i = 'i' + $lvl,\n $invalidName = '\\' + ' + $key + ' + \\'',\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined; ';\n }\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' var startErrs' + ($lvl) + ' = errors; ';\n var $passData = $key;\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + ' 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) {\n $required[$required.length] = $property;\n }\n }\n }\n } else {\n var $required = $schema;\n }\n }\n if ($isData || $required.length) {\n var $currentErrorPath = it.errorPath,\n $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n $ownProperties = it.opts.ownProperties;\n if ($breakOnError) {\n out += ' var missing' + ($lvl) + '; ';\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n out += ' var ' + ($valid) + ' = true; ';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += '; if (!' + ($valid) + ') break; } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n } else {\n out += ' if ( ';\n var arr2 = $required;\n if (arr2) {\n var $propertyKey, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $propertyKey = arr2[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ') { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n }\n } else {\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n if ($isData) {\n out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n if ($isData) {\n out += ' } ';\n }\n } else {\n var arr3 = $required;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n }\n it.errorPath = $currentErrorPath;\n } else if ($breakOnError) {\n out += ' if (true) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_uniqueItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (($schema || $isData) && it.opts.uniqueItems !== false) {\n if ($isData) {\n out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n }\n out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n var $itemType = it.schema.items && it.schema.items.type,\n $typeIsArray = Array.isArray($itemType);\n if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n } else {\n out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; ';\n if ($typeIsArray) {\n out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n }\n out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n }\n out += ' } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n", "'use strict';\n\n//all requires must be explicit because browserify won't work with dynamic requires\nmodule.exports = {\n '$ref': require('./ref'),\n allOf: require('./allOf'),\n anyOf: require('./anyOf'),\n '$comment': require('./comment'),\n const: require('./const'),\n contains: require('./contains'),\n dependencies: require('./dependencies'),\n 'enum': require('./enum'),\n format: require('./format'),\n 'if': require('./if'),\n items: require('./items'),\n maximum: require('./_limit'),\n minimum: require('./_limit'),\n maxItems: require('./_limitItems'),\n minItems: require('./_limitItems'),\n maxLength: require('./_limitLength'),\n minLength: require('./_limitLength'),\n maxProperties: require('./_limitProperties'),\n minProperties: require('./_limitProperties'),\n multipleOf: require('./multipleOf'),\n not: require('./not'),\n oneOf: require('./oneOf'),\n pattern: require('./pattern'),\n properties: require('./properties'),\n propertyNames: require('./propertyNames'),\n required: require('./required'),\n uniqueItems: require('./uniqueItems'),\n validate: require('./validate')\n};\n", "'use strict';\n\nvar ruleModules = require('../dotjs')\n , toHash = require('./util').toHash;\n\nmodule.exports = function rules() {\n var RULES = [\n { type: 'number',\n rules: [ { 'maximum': ['exclusiveMaximum'] },\n { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },\n { type: 'string',\n rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\n { type: 'array',\n rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },\n { type: 'object',\n rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',\n { 'properties': ['additionalProperties', 'patternProperties'] } ] },\n { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }\n ];\n\n var ALL = [ 'type', '$comment' ];\n var KEYWORDS = [\n '$schema', '$id', 'id', '$data', '$async', 'title',\n 'description', 'default', 'definitions',\n 'examples', 'readOnly', 'writeOnly',\n 'contentMediaType', 'contentEncoding',\n 'additionalItems', 'then', 'else'\n ];\n var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\n RULES.all = toHash(ALL);\n RULES.types = toHash(TYPES);\n\n RULES.forEach(function (group) {\n group.rules = group.rules.map(function (keyword) {\n var implKeywords;\n if (typeof keyword == 'object') {\n var key = Object.keys(keyword)[0];\n implKeywords = keyword[key];\n keyword = key;\n implKeywords.forEach(function (k) {\n ALL.push(k);\n RULES.all[k] = true;\n });\n }\n ALL.push(keyword);\n var rule = RULES.all[keyword] = {\n keyword: keyword,\n code: ruleModules[keyword],\n implements: implKeywords\n };\n return rule;\n });\n\n RULES.all.$comment = {\n keyword: '$comment',\n code: ruleModules.$comment\n };\n\n if (group.type) RULES.types[group.type] = group;\n });\n\n RULES.keywords = toHash(ALL.concat(KEYWORDS));\n RULES.custom = {};\n\n return RULES;\n};\n", "'use strict';\n\nvar KEYWORDS = [\n 'multipleOf',\n 'maximum',\n 'exclusiveMaximum',\n 'minimum',\n 'exclusiveMinimum',\n 'maxLength',\n 'minLength',\n 'pattern',\n 'additionalItems',\n 'maxItems',\n 'minItems',\n 'uniqueItems',\n 'maxProperties',\n 'minProperties',\n 'required',\n 'additionalProperties',\n 'enum',\n 'format',\n 'const'\n];\n\nmodule.exports = function (metaSchema, keywordsJsonPointers) {\n for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n errors = errors || this.errors;\n if (!errors) return 'No errors';\n options = options || {};\n var separator = options.separator === undefined ? ', ' : options.separator;\n var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n var text = '';\n for (var i=0; i b ? 1 : a < b ? -1 : 0\n}\n\nfunction generateBase (httpMethod, base_uri, params) {\n // adapted from https://dev.twitter.com/docs/auth/oauth and \n // https://dev.twitter.com/docs/auth/creating-signature\n\n // Parameter normalization\n // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2\n var normalized = map(params)\n // 1. First, the name and value of each parameter are encoded\n .map(function (p) {\n return [ rfc3986(p[0]), rfc3986(p[1] || '') ]\n })\n // 2. The parameters are sorted by name, using ascending byte value\n // ordering. If two or more parameters share the same name, they\n // are sorted by their value.\n .sort(function (a, b) {\n return compare(a[0], b[0]) || compare(a[1], b[1])\n })\n // 3. The name of each parameter is concatenated to its corresponding\n // value using an \"=\" character (ASCII code 61) as a separator, even\n // if the value is empty.\n .map(function (p) { return p.join('=') })\n // 4. The sorted name/value pairs are concatenated together into a\n // single string by using an \"&\" character (ASCII code 38) as\n // separator.\n .join('&')\n\n var base = [\n rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'),\n rfc3986(base_uri),\n rfc3986(normalized)\n ].join('&')\n\n return base\n}\n\nfunction hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return sha(key, base, 'sha1')\n}\n\nfunction hmacsign256 (httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return sha(key, base, 'sha256')\n}\n\nfunction rsasign (httpMethod, base_uri, params, private_key, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = private_key || ''\n\n return rsa(key, base)\n}\n\nfunction plaintext (consumer_secret, token_secret) {\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return key\n}\n\nfunction sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) {\n var method\n var skipArgs = 1\n\n switch (signMethod) {\n case 'RSA-SHA1':\n method = rsasign\n break\n case 'HMAC-SHA1':\n method = hmacsign\n break\n case 'HMAC-SHA256':\n method = hmacsign256\n break\n case 'PLAINTEXT':\n method = plaintext\n skipArgs = 4\n break\n default:\n throw new Error('Signature method not supported: ' + signMethod)\n }\n\n return method.apply(null, [].slice.call(arguments, skipArgs))\n}\n\nexports.hmacsign = hmacsign\nexports.hmacsign256 = hmacsign256\nexports.rsasign = rsasign\nexports.plaintext = plaintext\nexports.sign = sign\nexports.rfc3986 = rfc3986\nexports.generateBase = generateBase", "'use strict'\n\nvar url = require('url')\nvar qs = require('qs')\nvar caseless = require('caseless')\nvar uuid = require('uuid/v4')\nvar oauth = require('oauth-sign')\nvar crypto = require('crypto')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction OAuth (request) {\n this.request = request\n this.params = null\n}\n\nOAuth.prototype.buildParams = function (_oauth, uri, method, query, form, qsLib) {\n var oa = {}\n for (var i in _oauth) {\n oa['oauth_' + i] = _oauth[i]\n }\n if (!oa.oauth_version) {\n oa.oauth_version = '1.0'\n }\n if (!oa.oauth_timestamp) {\n oa.oauth_timestamp = Math.floor(Date.now() / 1000).toString()\n }\n if (!oa.oauth_nonce) {\n oa.oauth_nonce = uuid().replace(/-/g, '')\n }\n if (!oa.oauth_signature_method) {\n oa.oauth_signature_method = 'HMAC-SHA1'\n }\n\n var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key // eslint-disable-line camelcase\n delete oa.oauth_consumer_secret\n delete oa.oauth_private_key\n\n var token_secret = oa.oauth_token_secret // eslint-disable-line camelcase\n delete oa.oauth_token_secret\n\n var realm = oa.oauth_realm\n delete oa.oauth_realm\n delete oa.oauth_transport_method\n\n var baseurl = uri.protocol + '//' + uri.host + uri.pathname\n var params = qsLib.parse([].concat(query, form, qsLib.stringify(oa)).join('&'))\n\n oa.oauth_signature = oauth.sign(\n oa.oauth_signature_method,\n method,\n baseurl,\n params,\n consumer_secret_or_private_key, // eslint-disable-line camelcase\n token_secret // eslint-disable-line camelcase\n )\n\n if (realm) {\n oa.realm = realm\n }\n\n return oa\n}\n\nOAuth.prototype.buildBodyHash = function (_oauth, body) {\n if (['HMAC-SHA1', 'RSA-SHA1'].indexOf(_oauth.signature_method || 'HMAC-SHA1') < 0) {\n this.request.emit('error', new Error('oauth: ' + _oauth.signature_method +\n ' signature_method not supported with body_hash signing.'))\n }\n\n var shasum = crypto.createHash('sha1')\n shasum.update(body || '')\n var sha1 = shasum.digest('hex')\n\n return Buffer.from(sha1, 'hex').toString('base64')\n}\n\nOAuth.prototype.concatParams = function (oa, sep, wrap) {\n wrap = wrap || ''\n\n var params = Object.keys(oa).filter(function (i) {\n return i !== 'realm' && i !== 'oauth_signature'\n }).sort()\n\n if (oa.realm) {\n params.splice(0, 0, 'realm')\n }\n params.push('oauth_signature')\n\n return params.map(function (i) {\n return i + '=' + wrap + oauth.rfc3986(oa[i]) + wrap\n }).join(sep)\n}\n\nOAuth.prototype.onRequest = function (_oauth) {\n var self = this\n self.params = _oauth\n\n var uri = self.request.uri || {}\n var method = self.request.method || ''\n var headers = caseless(self.request.headers)\n var body = self.request.body || ''\n var qsLib = self.request.qsLib || qs\n\n var form\n var query\n var contentType = headers.get('content-type') || ''\n var formContentType = 'application/x-www-form-urlencoded'\n var transport = _oauth.transport_method || 'header'\n\n if (contentType.slice(0, formContentType.length) === formContentType) {\n contentType = formContentType\n form = body\n }\n if (uri.query) {\n query = uri.query\n }\n if (transport === 'body' && (method !== 'POST' || contentType !== formContentType)) {\n self.request.emit('error', new Error('oauth: transport_method of body requires POST ' +\n 'and content-type ' + formContentType))\n }\n\n if (!form && typeof _oauth.body_hash === 'boolean') {\n _oauth.body_hash = self.buildBodyHash(_oauth, self.request.body.toString())\n }\n\n var oa = self.buildParams(_oauth, uri, method, query, form, qsLib)\n\n switch (transport) {\n case 'header':\n self.request.setHeader('Authorization', 'OAuth ' + self.concatParams(oa, ',', '\"'))\n break\n\n case 'query':\n var href = self.request.uri.href += (query ? '&' : '?') + self.concatParams(oa, '&')\n self.request.uri = url.parse(href)\n self.request.path = self.request.uri.path\n break\n\n case 'body':\n self.request.body = (form ? form + '&' : '') + self.concatParams(oa, '&')\n break\n\n default:\n self.request.emit('error', new Error('oauth: transport_method invalid'))\n }\n}\n\nexports.OAuth = OAuth\n", "'use strict'\n\nvar crypto = require('crypto')\n\nfunction randomString (size) {\n var bits = (size + 1) * 6\n var buffer = crypto.randomBytes(Math.ceil(bits / 8))\n var string = buffer.toString('base64').replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\n return string.slice(0, size)\n}\n\nfunction calculatePayloadHash (payload, algorithm, contentType) {\n var hash = crypto.createHash(algorithm)\n hash.update('hawk.1.payload\\n')\n hash.update((contentType ? contentType.split(';')[0].trim().toLowerCase() : '') + '\\n')\n hash.update(payload || '')\n hash.update('\\n')\n return hash.digest('base64')\n}\n\nexports.calculateMac = function (credentials, opts) {\n var normalized = 'hawk.1.header\\n' +\n opts.ts + '\\n' +\n opts.nonce + '\\n' +\n (opts.method || '').toUpperCase() + '\\n' +\n opts.resource + '\\n' +\n opts.host.toLowerCase() + '\\n' +\n opts.port + '\\n' +\n (opts.hash || '') + '\\n'\n\n if (opts.ext) {\n normalized = normalized + opts.ext.replace('\\\\', '\\\\\\\\').replace('\\n', '\\\\n')\n }\n\n normalized = normalized + '\\n'\n\n if (opts.app) {\n normalized = normalized + opts.app + '\\n' + (opts.dlg || '') + '\\n'\n }\n\n var hmac = crypto.createHmac(credentials.algorithm, credentials.key).update(normalized)\n var digest = hmac.digest('base64')\n return digest\n}\n\nexports.header = function (uri, method, opts) {\n var timestamp = opts.timestamp || Math.floor((Date.now() + (opts.localtimeOffsetMsec || 0)) / 1000)\n var credentials = opts.credentials\n if (!credentials || !credentials.id || !credentials.key || !credentials.algorithm) {\n return ''\n }\n\n if (['sha1', 'sha256'].indexOf(credentials.algorithm) === -1) {\n return ''\n }\n\n var artifacts = {\n ts: timestamp,\n nonce: opts.nonce || randomString(6),\n method: method,\n resource: uri.pathname + (uri.search || ''),\n host: uri.hostname,\n port: uri.port || (uri.protocol === 'http:' ? 80 : 443),\n hash: opts.hash,\n ext: opts.ext,\n app: opts.app,\n dlg: opts.dlg\n }\n\n if (!artifacts.hash && (opts.payload || opts.payload === '')) {\n artifacts.hash = calculatePayloadHash(opts.payload, credentials.algorithm, opts.contentType)\n }\n\n var mac = exports.calculateMac(credentials, artifacts)\n\n var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''\n var header = 'Hawk id=\"' + credentials.id +\n '\", ts=\"' + artifacts.ts +\n '\", nonce=\"' + artifacts.nonce +\n (artifacts.hash ? '\", hash=\"' + artifacts.hash : '') +\n (hasExt ? '\", ext=\"' + artifacts.ext.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"') : '') +\n '\", mac=\"' + mac + '\"'\n\n if (artifacts.app) {\n header = header + ', app=\"' + artifacts.app + (artifacts.dlg ? '\", dlg=\"' + artifacts.dlg : '') + '\"'\n }\n\n return header\n}\n", "'use strict'\n\nvar uuid = require('uuid/v4')\nvar CombinedStream = require('combined-stream')\nvar isstream = require('isstream')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction Multipart (request) {\n this.request = request\n this.boundary = uuid()\n this.chunked = false\n this.body = null\n}\n\nMultipart.prototype.isChunked = function (options) {\n var self = this\n var chunked = false\n var parts = options.data || options\n\n if (!parts.forEach) {\n self.request.emit('error', new Error('Argument error, options.multipart.'))\n }\n\n if (options.chunked !== undefined) {\n chunked = options.chunked\n }\n\n if (self.request.getHeader('transfer-encoding') === 'chunked') {\n chunked = true\n }\n\n if (!chunked) {\n parts.forEach(function (part) {\n if (typeof part.body === 'undefined') {\n self.request.emit('error', new Error('Body attribute missing in multipart.'))\n }\n if (isstream(part.body)) {\n chunked = true\n }\n })\n }\n\n return chunked\n}\n\nMultipart.prototype.setHeaders = function (chunked) {\n var self = this\n\n if (chunked && !self.request.hasHeader('transfer-encoding')) {\n self.request.setHeader('transfer-encoding', 'chunked')\n }\n\n var header = self.request.getHeader('content-type')\n\n if (!header || header.indexOf('multipart') === -1) {\n self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary)\n } else {\n if (header.indexOf('boundary') !== -1) {\n self.boundary = header.replace(/.*boundary=([^\\s;]+).*/, '$1')\n } else {\n self.request.setHeader('content-type', header + '; boundary=' + self.boundary)\n }\n }\n}\n\nMultipart.prototype.build = function (parts, chunked) {\n var self = this\n var body = chunked ? new CombinedStream() : []\n\n function add (part) {\n if (typeof part === 'number') {\n part = part.toString()\n }\n return chunked ? body.append(part) : body.push(Buffer.from(part))\n }\n\n if (self.request.preambleCRLF) {\n add('\\r\\n')\n }\n\n parts.forEach(function (part) {\n var preamble = '--' + self.boundary + '\\r\\n'\n Object.keys(part).forEach(function (key) {\n if (key === 'body') { return }\n preamble += key + ': ' + part[key] + '\\r\\n'\n })\n preamble += '\\r\\n'\n add(preamble)\n add(part.body)\n add('\\r\\n')\n })\n add('--' + self.boundary + '--')\n\n if (self.request.postambleCRLF) {\n add('\\r\\n')\n }\n\n return body\n}\n\nMultipart.prototype.onRequest = function (options) {\n var self = this\n\n var chunked = self.isChunked(options)\n var parts = options.data || options\n\n self.setHeaders(chunked)\n self.chunked = chunked\n self.body = self.build(parts, chunked)\n}\n\nexports.Multipart = Multipart\n", "'use strict'\n\nvar url = require('url')\nvar isUrl = /^https?:/\n\nfunction Redirect (request) {\n this.request = request\n this.followRedirect = true\n this.followRedirects = true\n this.followAllRedirects = false\n this.followOriginalHttpMethod = false\n this.allowRedirect = function () { return true }\n this.maxRedirects = 10\n this.redirects = []\n this.redirectsFollowed = 0\n this.removeRefererHeader = false\n}\n\nRedirect.prototype.onRequest = function (options) {\n var self = this\n\n if (options.maxRedirects !== undefined) {\n self.maxRedirects = options.maxRedirects\n }\n if (typeof options.followRedirect === 'function') {\n self.allowRedirect = options.followRedirect\n }\n if (options.followRedirect !== undefined) {\n self.followRedirects = !!options.followRedirect\n }\n if (options.followAllRedirects !== undefined) {\n self.followAllRedirects = options.followAllRedirects\n }\n if (self.followRedirects || self.followAllRedirects) {\n self.redirects = self.redirects || []\n }\n if (options.removeRefererHeader !== undefined) {\n self.removeRefererHeader = options.removeRefererHeader\n }\n if (options.followOriginalHttpMethod !== undefined) {\n self.followOriginalHttpMethod = options.followOriginalHttpMethod\n }\n}\n\nRedirect.prototype.redirectTo = function (response) {\n var self = this\n var request = self.request\n\n var redirectTo = null\n if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) {\n var location = response.caseless.get('location')\n request.debug('redirect', location)\n\n if (self.followAllRedirects) {\n redirectTo = location\n } else if (self.followRedirects) {\n switch (request.method) {\n case 'PATCH':\n case 'PUT':\n case 'POST':\n case 'DELETE':\n // Do not follow redirects\n break\n default:\n redirectTo = location\n break\n }\n }\n } else if (response.statusCode === 401) {\n var authHeader = request._auth.onResponse(response)\n if (authHeader) {\n request.setHeader('authorization', authHeader)\n redirectTo = request.uri\n }\n }\n return redirectTo\n}\n\nRedirect.prototype.onResponse = function (response) {\n var self = this\n var request = self.request\n\n var redirectTo = self.redirectTo(response)\n if (!redirectTo || !self.allowRedirect.call(request, response)) {\n return false\n }\n\n request.debug('redirect to', redirectTo)\n\n // ignore any potential response body. it cannot possibly be useful\n // to us at this point.\n // response.resume should be defined, but check anyway before calling. Workaround for browserify.\n if (response.resume) {\n response.resume()\n }\n\n if (self.redirectsFollowed >= self.maxRedirects) {\n request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href))\n return false\n }\n self.redirectsFollowed += 1\n\n if (!isUrl.test(redirectTo)) {\n redirectTo = url.resolve(request.uri.href, redirectTo)\n }\n\n var uriPrev = request.uri\n request.uri = url.parse(redirectTo)\n\n // handle the case where we change protocol from https to http or vice versa\n if (request.uri.protocol !== uriPrev.protocol) {\n delete request.agent\n }\n\n self.redirects.push({ statusCode: response.statusCode, redirectUri: redirectTo })\n\n if (self.followAllRedirects && request.method !== 'HEAD' &&\n response.statusCode !== 401 && response.statusCode !== 307) {\n request.method = self.followOriginalHttpMethod ? request.method : 'GET'\n }\n // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215\n delete request.src\n delete request.req\n delete request._started\n if (response.statusCode !== 401 && response.statusCode !== 307) {\n // Remove parameters from the previous response, unless this is the second request\n // for a server that requires digest authentication.\n delete request.body\n delete request._form\n if (request.headers) {\n request.removeHeader('host')\n request.removeHeader('content-type')\n request.removeHeader('content-length')\n if (request.uri.hostname !== request.originalHost.split(':')[0]) {\n // Remove authorization if changing hostnames (but not if just\n // changing ports or protocols). This matches the behavior of curl:\n // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710\n request.removeHeader('authorization')\n }\n }\n }\n\n if (!self.removeRefererHeader) {\n request.setHeader('referer', uriPrev.href)\n }\n\n request.emit('redirect')\n\n request.init()\n\n return true\n}\n\nexports.Redirect = Redirect\n", "'use strict'\n\nvar net = require('net')\n , tls = require('tls')\n , http = require('http')\n , https = require('https')\n , events = require('events')\n , assert = require('assert')\n , util = require('util')\n , Buffer = require('safe-buffer').Buffer\n ;\n\nexports.httpOverHttp = httpOverHttp\nexports.httpsOverHttp = httpsOverHttp\nexports.httpOverHttps = httpOverHttps\nexports.httpsOverHttps = httpsOverHttps\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options)\n agent.request = http.request\n return agent\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options)\n agent.request = http.request\n agent.createSocket = createSecureSocket\n agent.defaultPort = 443\n return agent\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options)\n agent.request = https.request\n return agent\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options)\n agent.request = https.request\n agent.createSocket = createSecureSocket\n agent.defaultPort = 443\n return agent\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this\n self.options = options || {}\n self.proxyOptions = self.options.proxy || {}\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets\n self.requests = []\n self.sockets = []\n\n self.on('free', function onFree(socket, host, port) {\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i]\n if (pending.host === host && pending.port === port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1)\n pending.request.onSocket(socket)\n return\n }\n }\n socket.destroy()\n self.removeSocket(socket)\n })\n}\nutil.inherits(TunnelingAgent, events.EventEmitter)\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, options) {\n var self = this\n\n // Legacy API: addRequest(req, host, port, path)\n if (typeof options === 'string') {\n options = {\n host: options,\n port: arguments[2],\n path: arguments[3]\n };\n }\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push({host: options.host, port: options.port, request: req})\n return\n }\n\n // If we are under maxSockets create a new one.\n self.createConnection({host: options.host, port: options.port, request: req})\n}\n\nTunnelingAgent.prototype.createConnection = function createConnection(pending) {\n var self = this\n\n self.createSocket(pending, function(socket) {\n socket.on('free', onFree)\n socket.on('close', onCloseOrRemove)\n socket.on('agentRemove', onCloseOrRemove)\n pending.request.onSocket(socket)\n\n function onFree() {\n self.emit('free', socket, pending.host, pending.port)\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket)\n socket.removeListener('free', onFree)\n socket.removeListener('close', onCloseOrRemove)\n socket.removeListener('agentRemove', onCloseOrRemove)\n }\n })\n}\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this\n var placeholder = {}\n self.sockets.push(placeholder)\n\n var connectOptions = mergeOptions({}, self.proxyOptions,\n { method: 'CONNECT'\n , path: options.host + ':' + options.port\n , agent: false\n }\n )\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {}\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n Buffer.from(connectOptions.proxyAuth).toString('base64')\n }\n\n debug('making CONNECT request')\n var connectReq = self.request(connectOptions)\n connectReq.useChunkedEncodingByDefault = false // for v0.6\n connectReq.once('response', onResponse) // for v0.6\n connectReq.once('upgrade', onUpgrade) // for v0.6\n connectReq.once('connect', onConnect) // for v0.7 or later\n connectReq.once('error', onError)\n connectReq.end()\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head)\n })\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners()\n socket.removeAllListeners()\n\n if (res.statusCode === 200) {\n assert.equal(head.length, 0)\n debug('tunneling connection has established')\n self.sockets[self.sockets.indexOf(placeholder)] = socket\n cb(socket)\n } else {\n debug('tunneling socket could not be established, statusCode=%d', res.statusCode)\n var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode)\n error.code = 'ECONNRESET'\n options.request.emit('error', error)\n self.removeSocket(placeholder)\n }\n }\n\n function onError(cause) {\n connectReq.removeAllListeners()\n\n debug('tunneling socket could not be established, cause=%s\\n', cause.message, cause.stack)\n var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message)\n error.code = 'ECONNRESET'\n options.request.emit('error', error)\n self.removeSocket(placeholder)\n }\n}\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) return\n\n this.sockets.splice(pos, 1)\n\n var pending = this.requests.shift()\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createConnection(pending)\n }\n}\n\nfunction createSecureSocket(options, cb) {\n var self = this\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, mergeOptions({}, self.options,\n { servername: options.host\n , socket: socket\n }\n ))\n self.sockets[self.sockets.indexOf(socket)] = secureSocket\n cb(secureSocket)\n })\n}\n\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i]\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides)\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j]\n if (overrides[k] !== undefined) {\n target[k] = overrides[k]\n }\n }\n }\n }\n return target\n}\n\n\nvar debug\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments)\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0]\n } else {\n args.unshift('TUNNEL:')\n }\n console.error.apply(console, args)\n }\n} else {\n debug = function() {}\n}\nexports.debug = debug // for test\n", "'use strict'\n\nvar url = require('url')\nvar tunnel = require('tunnel-agent')\n\nvar defaultProxyHeaderWhiteList = [\n 'accept',\n 'accept-charset',\n 'accept-encoding',\n 'accept-language',\n 'accept-ranges',\n 'cache-control',\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-md5',\n 'content-range',\n 'content-type',\n 'connection',\n 'date',\n 'expect',\n 'max-forwards',\n 'pragma',\n 'referer',\n 'te',\n 'user-agent',\n 'via'\n]\n\nvar defaultProxyHeaderExclusiveList = [\n 'proxy-authorization'\n]\n\nfunction constructProxyHost (uriObject) {\n var port = uriObject.port\n var protocol = uriObject.protocol\n var proxyHost = uriObject.hostname + ':'\n\n if (port) {\n proxyHost += port\n } else if (protocol === 'https:') {\n proxyHost += '443'\n } else {\n proxyHost += '80'\n }\n\n return proxyHost\n}\n\nfunction constructProxyHeaderWhiteList (headers, proxyHeaderWhiteList) {\n var whiteList = proxyHeaderWhiteList\n .reduce(function (set, header) {\n set[header.toLowerCase()] = true\n return set\n }, {})\n\n return Object.keys(headers)\n .filter(function (header) {\n return whiteList[header.toLowerCase()]\n })\n .reduce(function (set, header) {\n set[header] = headers[header]\n return set\n }, {})\n}\n\nfunction constructTunnelOptions (request, proxyHeaders) {\n var proxy = request.proxy\n\n var tunnelOptions = {\n proxy: {\n host: proxy.hostname,\n port: +proxy.port,\n proxyAuth: proxy.auth,\n headers: proxyHeaders\n },\n headers: request.headers,\n ca: request.ca,\n cert: request.cert,\n key: request.key,\n passphrase: request.passphrase,\n pfx: request.pfx,\n ciphers: request.ciphers,\n rejectUnauthorized: request.rejectUnauthorized,\n secureOptions: request.secureOptions,\n secureProtocol: request.secureProtocol\n }\n\n return tunnelOptions\n}\n\nfunction constructTunnelFnName (uri, proxy) {\n var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http')\n var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http')\n return [uriProtocol, proxyProtocol].join('Over')\n}\n\nfunction getTunnelFn (request) {\n var uri = request.uri\n var proxy = request.proxy\n var tunnelFnName = constructTunnelFnName(uri, proxy)\n return tunnel[tunnelFnName]\n}\n\nfunction Tunnel (request) {\n this.request = request\n this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList\n this.proxyHeaderExclusiveList = []\n if (typeof request.tunnel !== 'undefined') {\n this.tunnelOverride = request.tunnel\n }\n}\n\nTunnel.prototype.isEnabled = function () {\n var self = this\n var request = self.request\n // Tunnel HTTPS by default. Allow the user to override this setting.\n\n // If self.tunnelOverride is set (the user specified a value), use it.\n if (typeof self.tunnelOverride !== 'undefined') {\n return self.tunnelOverride\n }\n\n // If the destination is HTTPS, tunnel.\n if (request.uri.protocol === 'https:') {\n return true\n }\n\n // Otherwise, do not use tunnel.\n return false\n}\n\nTunnel.prototype.setup = function (options) {\n var self = this\n var request = self.request\n\n options = options || {}\n\n if (typeof request.proxy === 'string') {\n request.proxy = url.parse(request.proxy)\n }\n\n if (!request.proxy || !request.tunnel) {\n return false\n }\n\n // Setup Proxy Header Exclusive List and White List\n if (options.proxyHeaderWhiteList) {\n self.proxyHeaderWhiteList = options.proxyHeaderWhiteList\n }\n if (options.proxyHeaderExclusiveList) {\n self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList\n }\n\n var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList)\n var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList)\n\n // Setup Proxy Headers and Proxy Headers Host\n // Only send the Proxy White Listed Header names\n var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList)\n proxyHeaders.host = constructProxyHost(request.uri)\n\n proxyHeaderExclusiveList.forEach(request.removeHeader, request)\n\n // Set Agent from Tunnel Data\n var tunnelFn = getTunnelFn(request)\n var tunnelOptions = constructTunnelOptions(request, proxyHeaders)\n request.agent = tunnelFn(tunnelOptions)\n\n return true\n}\n\nTunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList\nTunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList\nexports.Tunnel = Tunnel\n", null, "'use strict'\n\nvar http = require('http')\nvar https = require('https')\nvar url = require('url')\nvar util = require('util')\nvar stream = require('stream')\nvar zlib = require('zlib')\nvar aws2 = require('aws-sign2')\nvar aws4 = require('aws4')\nvar httpSignature = require('http-signature')\nvar mime = require('mime-types')\nvar caseless = require('caseless')\nvar ForeverAgent = require('forever-agent')\nvar FormData = require('form-data')\nvar extend = require('extend')\nvar isstream = require('isstream')\nvar isTypedArray = require('is-typedarray').strict\nvar helpers = require('./lib/helpers')\nvar cookies = require('./lib/cookies')\nvar getProxyFromURI = require('./lib/getProxyFromURI')\nvar Querystring = require('./lib/querystring').Querystring\nvar Har = require('./lib/har').Har\nvar Auth = require('./lib/auth').Auth\nvar OAuth = require('./lib/oauth').OAuth\nvar hawk = require('./lib/hawk')\nvar Multipart = require('./lib/multipart').Multipart\nvar Redirect = require('./lib/redirect').Redirect\nvar Tunnel = require('./lib/tunnel').Tunnel\nvar now = require('performance-now')\nvar Buffer = require('safe-buffer').Buffer\n\nvar safeStringify = helpers.safeStringify\nvar isReadStream = helpers.isReadStream\nvar toBase64 = helpers.toBase64\nvar defer = helpers.defer\nvar copy = helpers.copy\nvar version = helpers.version\nvar globalCookieJar = cookies.jar()\n\nvar globalPool = {}\n\nfunction filterForNonReserved (reserved, options) {\n // Filter out properties that are not reserved.\n // Reserved values are passed in at call site.\n\n var object = {}\n for (var i in options) {\n var notReserved = (reserved.indexOf(i) === -1)\n if (notReserved) {\n object[i] = options[i]\n }\n }\n return object\n}\n\nfunction filterOutReservedFunctions (reserved, options) {\n // Filter out properties that are functions and are reserved.\n // Reserved values are passed in at call site.\n\n var object = {}\n for (var i in options) {\n var isReserved = !(reserved.indexOf(i) === -1)\n var isFunction = (typeof options[i] === 'function')\n if (!(isReserved && isFunction)) {\n object[i] = options[i]\n }\n }\n return object\n}\n\n// Return a simpler request object to allow serialization\nfunction requestToJSON () {\n var self = this\n return {\n uri: self.uri,\n method: self.method,\n headers: self.headers\n }\n}\n\n// Return a simpler response object to allow serialization\nfunction responseToJSON () {\n var self = this\n return {\n statusCode: self.statusCode,\n body: self.body,\n headers: self.headers,\n request: requestToJSON.call(self.request)\n }\n}\n\nfunction Request (options) {\n // if given the method property in options, set property explicitMethod to true\n\n // extend the Request instance with any non-reserved properties\n // remove any reserved functions from the options object\n // set Request instance to be readable and writable\n // call init\n\n var self = this\n\n // start with HAR, then override with additional options\n if (options.har) {\n self._har = new Har(self)\n options = self._har.options(options)\n }\n\n stream.Stream.call(self)\n var reserved = Object.keys(Request.prototype)\n var nonReserved = filterForNonReserved(reserved, options)\n\n extend(self, nonReserved)\n options = filterOutReservedFunctions(reserved, options)\n\n self.readable = true\n self.writable = true\n if (options.method) {\n self.explicitMethod = true\n }\n self._qs = new Querystring(self)\n self._auth = new Auth(self)\n self._oauth = new OAuth(self)\n self._multipart = new Multipart(self)\n self._redirect = new Redirect(self)\n self._tunnel = new Tunnel(self)\n self.init(options)\n}\n\nutil.inherits(Request, stream.Stream)\n\n// Debugging\nRequest.debug = process.env.NODE_DEBUG && /\\brequest\\b/.test(process.env.NODE_DEBUG)\nfunction debug () {\n if (Request.debug) {\n console.error('REQUEST %s', util.format.apply(util, arguments))\n }\n}\nRequest.prototype.debug = debug\n\nRequest.prototype.init = function (options) {\n // init() contains all the code to setup the request object.\n // the actual outgoing request is not started until start() is called\n // this function is called from both the constructor and on redirect.\n var self = this\n if (!options) {\n options = {}\n }\n self.headers = self.headers ? copy(self.headers) : {}\n\n // Delete headers with value undefined since they break\n // ClientRequest.OutgoingMessage.setHeader in node 0.12\n for (var headerName in self.headers) {\n if (typeof self.headers[headerName] === 'undefined') {\n delete self.headers[headerName]\n }\n }\n\n caseless.httpify(self, self.headers)\n\n if (!self.method) {\n self.method = options.method || 'GET'\n }\n if (!self.localAddress) {\n self.localAddress = options.localAddress\n }\n\n self._qs.init(options)\n\n debug(options)\n if (!self.pool && self.pool !== false) {\n self.pool = globalPool\n }\n self.dests = self.dests || []\n self.__isRequestRequest = true\n\n // Protect against double callback\n if (!self._callback && self.callback) {\n self._callback = self.callback\n self.callback = function () {\n if (self._callbackCalled) {\n return // Print a warning maybe?\n }\n self._callbackCalled = true\n self._callback.apply(self, arguments)\n }\n self.on('error', self.callback.bind())\n self.on('complete', self.callback.bind(self, null))\n }\n\n // People use this property instead all the time, so support it\n if (!self.uri && self.url) {\n self.uri = self.url\n delete self.url\n }\n\n // If there's a baseUrl, then use it as the base URL (i.e. uri must be\n // specified as a relative path and is appended to baseUrl).\n if (self.baseUrl) {\n if (typeof self.baseUrl !== 'string') {\n return self.emit('error', new Error('options.baseUrl must be a string'))\n }\n\n if (typeof self.uri !== 'string') {\n return self.emit('error', new Error('options.uri must be a string when using options.baseUrl'))\n }\n\n if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) {\n return self.emit('error', new Error('options.uri must be a path when using options.baseUrl'))\n }\n\n // Handle all cases to make sure that there's only one slash between\n // baseUrl and uri.\n var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1\n var uriStartsWithSlash = self.uri.indexOf('/') === 0\n\n if (baseUrlEndsWithSlash && uriStartsWithSlash) {\n self.uri = self.baseUrl + self.uri.slice(1)\n } else if (baseUrlEndsWithSlash || uriStartsWithSlash) {\n self.uri = self.baseUrl + self.uri\n } else if (self.uri === '') {\n self.uri = self.baseUrl\n } else {\n self.uri = self.baseUrl + '/' + self.uri\n }\n delete self.baseUrl\n }\n\n // A URI is needed by this point, emit error if we haven't been able to get one\n if (!self.uri) {\n return self.emit('error', new Error('options.uri is a required argument'))\n }\n\n // If a string URI/URL was given, parse it into a URL object\n if (typeof self.uri === 'string') {\n self.uri = url.parse(self.uri)\n }\n\n // Some URL objects are not from a URL parsed string and need href added\n if (!self.uri.href) {\n self.uri.href = url.format(self.uri)\n }\n\n // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme\n if (self.uri.protocol === 'unix:') {\n return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`'))\n }\n\n // Support Unix Sockets\n if (self.uri.host === 'unix') {\n self.enableUnixSocket()\n }\n\n if (self.strictSSL === false) {\n self.rejectUnauthorized = false\n }\n\n if (!self.uri.pathname) { self.uri.pathname = '/' }\n\n if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) {\n // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar\n // Detect and reject it as soon as possible\n var faultyUri = url.format(self.uri)\n var message = 'Invalid URI \"' + faultyUri + '\"'\n if (Object.keys(options).length === 0) {\n // No option ? This can be the sign of a redirect\n // As this is a case where the user cannot do anything (they didn't call request directly with this URL)\n // they should be warned that it can be caused by a redirection (can save some hair)\n message += '. This can be caused by a crappy redirection.'\n }\n // This error was fatal\n self.abort()\n return self.emit('error', new Error(message))\n }\n\n if (!self.hasOwnProperty('proxy')) {\n self.proxy = getProxyFromURI(self.uri)\n }\n\n self.tunnel = self._tunnel.isEnabled()\n if (self.proxy) {\n self._tunnel.setup(options)\n }\n\n self._redirect.onRequest(options)\n\n self.setHost = false\n if (!self.hasHeader('host')) {\n var hostHeaderName = self.originalHostHeaderName || 'host'\n self.setHeader(hostHeaderName, self.uri.host)\n // Drop :port suffix from Host header if known protocol.\n if (self.uri.port) {\n if ((self.uri.port === '80' && self.uri.protocol === 'http:') ||\n (self.uri.port === '443' && self.uri.protocol === 'https:')) {\n self.setHeader(hostHeaderName, self.uri.hostname)\n }\n }\n self.setHost = true\n }\n\n self.jar(self._jar || options.jar)\n\n if (!self.uri.port) {\n if (self.uri.protocol === 'http:') { self.uri.port = 80 } else if (self.uri.protocol === 'https:') { self.uri.port = 443 }\n }\n\n if (self.proxy && !self.tunnel) {\n self.port = self.proxy.port\n self.host = self.proxy.hostname\n } else {\n self.port = self.uri.port\n self.host = self.uri.hostname\n }\n\n if (options.form) {\n self.form(options.form)\n }\n\n if (options.formData) {\n var formData = options.formData\n var requestForm = self.form()\n var appendFormValue = function (key, value) {\n if (value && value.hasOwnProperty('value') && value.hasOwnProperty('options')) {\n requestForm.append(key, value.value, value.options)\n } else {\n requestForm.append(key, value)\n }\n }\n for (var formKey in formData) {\n if (formData.hasOwnProperty(formKey)) {\n var formValue = formData[formKey]\n if (formValue instanceof Array) {\n for (var j = 0; j < formValue.length; j++) {\n appendFormValue(formKey, formValue[j])\n }\n } else {\n appendFormValue(formKey, formValue)\n }\n }\n }\n }\n\n if (options.qs) {\n self.qs(options.qs)\n }\n\n if (self.uri.path) {\n self.path = self.uri.path\n } else {\n self.path = self.uri.pathname + (self.uri.search || '')\n }\n\n if (self.path.length === 0) {\n self.path = '/'\n }\n\n // Auth must happen last in case signing is dependent on other headers\n if (options.aws) {\n self.aws(options.aws)\n }\n\n if (options.hawk) {\n self.hawk(options.hawk)\n }\n\n if (options.httpSignature) {\n self.httpSignature(options.httpSignature)\n }\n\n if (options.auth) {\n if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) {\n options.auth.user = options.auth.username\n }\n if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) {\n options.auth.pass = options.auth.password\n }\n\n self.auth(\n options.auth.user,\n options.auth.pass,\n options.auth.sendImmediately,\n options.auth.bearer\n )\n }\n\n if (self.gzip && !self.hasHeader('accept-encoding')) {\n self.setHeader('accept-encoding', 'gzip, deflate')\n }\n\n if (self.uri.auth && !self.hasHeader('authorization')) {\n var uriAuthPieces = self.uri.auth.split(':').map(function (item) { return self._qs.unescape(item) })\n self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true)\n }\n\n if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) {\n var proxyAuthPieces = self.proxy.auth.split(':').map(function (item) { return self._qs.unescape(item) })\n var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':'))\n self.setHeader('proxy-authorization', authHeader)\n }\n\n if (self.proxy && !self.tunnel) {\n self.path = (self.uri.protocol + '//' + self.uri.host + self.path)\n }\n\n if (options.json) {\n self.json(options.json)\n }\n if (options.multipart) {\n self.multipart(options.multipart)\n }\n\n if (options.time) {\n self.timing = true\n\n // NOTE: elapsedTime is deprecated in favor of .timings\n self.elapsedTime = self.elapsedTime || 0\n }\n\n function setContentLength () {\n if (isTypedArray(self.body)) {\n self.body = Buffer.from(self.body)\n }\n\n if (!self.hasHeader('content-length')) {\n var length\n if (typeof self.body === 'string') {\n length = Buffer.byteLength(self.body)\n } else if (Array.isArray(self.body)) {\n length = self.body.reduce(function (a, b) { return a + b.length }, 0)\n } else {\n length = self.body.length\n }\n\n if (length) {\n self.setHeader('content-length', length)\n } else {\n self.emit('error', new Error('Argument error, options.body.'))\n }\n }\n }\n if (self.body && !isstream(self.body)) {\n setContentLength()\n }\n\n if (options.oauth) {\n self.oauth(options.oauth)\n } else if (self._oauth.params && self.hasHeader('authorization')) {\n self.oauth(self._oauth.params)\n }\n\n var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol\n var defaultModules = {'http:': http, 'https:': https}\n var httpModules = self.httpModules || {}\n\n self.httpModule = httpModules[protocol] || defaultModules[protocol]\n\n if (!self.httpModule) {\n return self.emit('error', new Error('Invalid protocol: ' + protocol))\n }\n\n if (options.ca) {\n self.ca = options.ca\n }\n\n if (!self.agent) {\n if (options.agentOptions) {\n self.agentOptions = options.agentOptions\n }\n\n if (options.agentClass) {\n self.agentClass = options.agentClass\n } else if (options.forever) {\n var v = version()\n // use ForeverAgent in node 0.10- only\n if (v.major === 0 && v.minor <= 10) {\n self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL\n } else {\n self.agentClass = self.httpModule.Agent\n self.agentOptions = self.agentOptions || {}\n self.agentOptions.keepAlive = true\n }\n } else {\n self.agentClass = self.httpModule.Agent\n }\n }\n\n if (self.pool === false) {\n self.agent = false\n } else {\n self.agent = self.agent || self.getNewAgent()\n }\n\n self.on('pipe', function (src) {\n if (self.ntick && self._started) {\n self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.'))\n }\n self.src = src\n if (isReadStream(src)) {\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', mime.lookup(src.path))\n }\n } else {\n if (src.headers) {\n for (var i in src.headers) {\n if (!self.hasHeader(i)) {\n self.setHeader(i, src.headers[i])\n }\n }\n }\n if (self._json && !self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n if (src.method && !self.explicitMethod) {\n self.method = src.method\n }\n }\n\n // self.on('pipe', function () {\n // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.')\n // })\n })\n\n defer(function () {\n if (self._aborted) {\n return\n }\n\n var end = function () {\n if (self._form) {\n if (!self._auth.hasAuth) {\n self._form.pipe(self)\n } else if (self._auth.hasAuth && self._auth.sentAuth) {\n self._form.pipe(self)\n }\n }\n if (self._multipart && self._multipart.chunked) {\n self._multipart.body.pipe(self)\n }\n if (self.body) {\n if (isstream(self.body)) {\n self.body.pipe(self)\n } else {\n setContentLength()\n if (Array.isArray(self.body)) {\n self.body.forEach(function (part) {\n self.write(part)\n })\n } else {\n self.write(self.body)\n }\n self.end()\n }\n } else if (self.requestBodyStream) {\n console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.')\n self.requestBodyStream.pipe(self)\n } else if (!self.src) {\n if (self._auth.hasAuth && !self._auth.sentAuth) {\n self.end()\n return\n }\n if (self.method !== 'GET' && typeof self.method !== 'undefined') {\n self.setHeader('content-length', 0)\n }\n self.end()\n }\n }\n\n if (self._form && !self.hasHeader('content-length')) {\n // Before ending the request, we had to compute the length of the whole form, asyncly\n self.setHeader(self._form.getHeaders(), true)\n self._form.getLength(function (err, length) {\n if (!err && !isNaN(length)) {\n self.setHeader('content-length', length)\n }\n end()\n })\n } else {\n end()\n }\n\n self.ntick = true\n })\n}\n\nRequest.prototype.getNewAgent = function () {\n var self = this\n var Agent = self.agentClass\n var options = {}\n if (self.agentOptions) {\n for (var i in self.agentOptions) {\n options[i] = self.agentOptions[i]\n }\n }\n if (self.ca) {\n options.ca = self.ca\n }\n if (self.ciphers) {\n options.ciphers = self.ciphers\n }\n if (self.secureProtocol) {\n options.secureProtocol = self.secureProtocol\n }\n if (self.secureOptions) {\n options.secureOptions = self.secureOptions\n }\n if (typeof self.rejectUnauthorized !== 'undefined') {\n options.rejectUnauthorized = self.rejectUnauthorized\n }\n\n if (self.cert && self.key) {\n options.key = self.key\n options.cert = self.cert\n }\n\n if (self.pfx) {\n options.pfx = self.pfx\n }\n\n if (self.passphrase) {\n options.passphrase = self.passphrase\n }\n\n var poolKey = ''\n\n // different types of agents are in different pools\n if (Agent !== self.httpModule.Agent) {\n poolKey += Agent.name\n }\n\n // ca option is only relevant if proxy or destination are https\n var proxy = self.proxy\n if (typeof proxy === 'string') {\n proxy = url.parse(proxy)\n }\n var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:'\n\n if (isHttps) {\n if (options.ca) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.ca\n }\n\n if (typeof options.rejectUnauthorized !== 'undefined') {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.rejectUnauthorized\n }\n\n if (options.cert) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.cert.toString('ascii') + options.key.toString('ascii')\n }\n\n if (options.pfx) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.pfx.toString('ascii')\n }\n\n if (options.ciphers) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.ciphers\n }\n\n if (options.secureProtocol) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.secureProtocol\n }\n\n if (options.secureOptions) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.secureOptions\n }\n }\n\n if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) {\n // not doing anything special. Use the globalAgent\n return self.httpModule.globalAgent\n }\n\n // we're using a stored agent. Make sure it's protocol-specific\n poolKey = self.uri.protocol + poolKey\n\n // generate a new agent for this setting if none yet exists\n if (!self.pool[poolKey]) {\n self.pool[poolKey] = new Agent(options)\n // properly set maxSockets on new agents\n if (self.pool.maxSockets) {\n self.pool[poolKey].maxSockets = self.pool.maxSockets\n }\n }\n\n return self.pool[poolKey]\n}\n\nRequest.prototype.start = function () {\n // start() is called once we are ready to send the outgoing HTTP request.\n // this is usually called on the first write(), end() or on nextTick()\n var self = this\n\n if (self.timing) {\n // All timings will be relative to this request's startTime. In order to do this,\n // we need to capture the wall-clock start time (via Date), immediately followed\n // by the high-resolution timer (via now()). While these two won't be set\n // at the _exact_ same time, they should be close enough to be able to calculate\n // high-resolution, monotonically non-decreasing timestamps relative to startTime.\n var startTime = new Date().getTime()\n var startTimeNow = now()\n }\n\n if (self._aborted) {\n return\n }\n\n self._started = true\n self.method = self.method || 'GET'\n self.href = self.uri.href\n\n if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) {\n self.setHeader('content-length', self.src.stat.size)\n }\n if (self._aws) {\n self.aws(self._aws, true)\n }\n\n // We have a method named auth, which is completely different from the http.request\n // auth option. If we don't remove it, we're gonna have a bad time.\n var reqOptions = copy(self)\n delete reqOptions.auth\n\n debug('make request', self.uri.href)\n\n // node v6.8.0 now supports a `timeout` value in `http.request()`, but we\n // should delete it for now since we handle timeouts manually for better\n // consistency with node versions before v6.8.0\n delete reqOptions.timeout\n\n try {\n self.req = self.httpModule.request(reqOptions)\n } catch (err) {\n self.emit('error', err)\n return\n }\n\n if (self.timing) {\n self.startTime = startTime\n self.startTimeNow = startTimeNow\n\n // Timing values will all be relative to startTime (by comparing to startTimeNow\n // so we have an accurate clock)\n self.timings = {}\n }\n\n var timeout\n if (self.timeout && !self.timeoutTimer) {\n if (self.timeout < 0) {\n timeout = 0\n } else if (typeof self.timeout === 'number' && isFinite(self.timeout)) {\n timeout = self.timeout\n }\n }\n\n self.req.on('response', self.onRequestResponse.bind(self))\n self.req.on('error', self.onRequestError.bind(self))\n self.req.on('drain', function () {\n self.emit('drain')\n })\n\n self.req.on('socket', function (socket) {\n // `._connecting` was the old property which was made public in node v6.1.0\n var isConnecting = socket._connecting || socket.connecting\n if (self.timing) {\n self.timings.socket = now() - self.startTimeNow\n\n if (isConnecting) {\n var onLookupTiming = function () {\n self.timings.lookup = now() - self.startTimeNow\n }\n\n var onConnectTiming = function () {\n self.timings.connect = now() - self.startTimeNow\n }\n\n socket.once('lookup', onLookupTiming)\n socket.once('connect', onConnectTiming)\n\n // clean up timing event listeners if needed on error\n self.req.once('error', function () {\n socket.removeListener('lookup', onLookupTiming)\n socket.removeListener('connect', onConnectTiming)\n })\n }\n }\n\n var setReqTimeout = function () {\n // This timeout sets the amount of time to wait *between* bytes sent\n // from the server once connected.\n //\n // In particular, it's useful for erroring if the server fails to send\n // data halfway through streaming a response.\n self.req.setTimeout(timeout, function () {\n if (self.req) {\n self.abort()\n var e = new Error('ESOCKETTIMEDOUT')\n e.code = 'ESOCKETTIMEDOUT'\n e.connect = false\n self.emit('error', e)\n }\n })\n }\n if (timeout !== undefined) {\n // Only start the connection timer if we're actually connecting a new\n // socket, otherwise if we're already connected (because this is a\n // keep-alive connection) do not bother. This is important since we won't\n // get a 'connect' event for an already connected socket.\n if (isConnecting) {\n var onReqSockConnect = function () {\n socket.removeListener('connect', onReqSockConnect)\n self.clearTimeout()\n setReqTimeout()\n }\n\n socket.on('connect', onReqSockConnect)\n\n self.req.on('error', function (err) { // eslint-disable-line handle-callback-err\n socket.removeListener('connect', onReqSockConnect)\n })\n\n // Set a timeout in memory - this block will throw if the server takes more\n // than `timeout` to write the HTTP status and headers (corresponding to\n // the on('response') event on the client). NB: this measures wall-clock\n // time, not the time between bytes sent by the server.\n self.timeoutTimer = setTimeout(function () {\n socket.removeListener('connect', onReqSockConnect)\n self.abort()\n var e = new Error('ETIMEDOUT')\n e.code = 'ETIMEDOUT'\n e.connect = true\n self.emit('error', e)\n }, timeout)\n } else {\n // We're already connected\n setReqTimeout()\n }\n }\n self.emit('socket', socket)\n })\n\n self.emit('request', self.req)\n}\n\nRequest.prototype.onRequestError = function (error) {\n var self = this\n if (self._aborted) {\n return\n }\n if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' &&\n self.agent.addRequestNoreuse) {\n self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) }\n self.start()\n self.req.end()\n return\n }\n self.clearTimeout()\n self.emit('error', error)\n}\n\nRequest.prototype.onRequestResponse = function (response) {\n var self = this\n\n if (self.timing) {\n self.timings.response = now() - self.startTimeNow\n }\n\n debug('onRequestResponse', self.uri.href, response.statusCode, response.headers)\n response.on('end', function () {\n if (self.timing) {\n self.timings.end = now() - self.startTimeNow\n response.timingStart = self.startTime\n\n // fill in the blanks for any periods that didn't trigger, such as\n // no lookup or connect due to keep alive\n if (!self.timings.socket) {\n self.timings.socket = 0\n }\n if (!self.timings.lookup) {\n self.timings.lookup = self.timings.socket\n }\n if (!self.timings.connect) {\n self.timings.connect = self.timings.lookup\n }\n if (!self.timings.response) {\n self.timings.response = self.timings.connect\n }\n\n debug('elapsed time', self.timings.end)\n\n // elapsedTime includes all redirects\n self.elapsedTime += Math.round(self.timings.end)\n\n // NOTE: elapsedTime is deprecated in favor of .timings\n response.elapsedTime = self.elapsedTime\n\n // timings is just for the final fetch\n response.timings = self.timings\n\n // pre-calculate phase timings as well\n response.timingPhases = {\n wait: self.timings.socket,\n dns: self.timings.lookup - self.timings.socket,\n tcp: self.timings.connect - self.timings.lookup,\n firstByte: self.timings.response - self.timings.connect,\n download: self.timings.end - self.timings.response,\n total: self.timings.end\n }\n }\n debug('response end', self.uri.href, response.statusCode, response.headers)\n })\n\n if (self._aborted) {\n debug('aborted', self.uri.href)\n response.resume()\n return\n }\n\n self.response = response\n response.request = self\n response.toJSON = responseToJSON\n\n // XXX This is different on 0.10, because SSL is strict by default\n if (self.httpModule === https &&\n self.strictSSL && (!response.hasOwnProperty('socket') ||\n !response.socket.authorized)) {\n debug('strict ssl error', self.uri.href)\n var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL'\n self.emit('error', new Error('SSL Error: ' + sslErr))\n return\n }\n\n // Save the original host before any redirect (if it changes, we need to\n // remove any authorization headers). Also remember the case of the header\n // name because lots of broken servers expect Host instead of host and we\n // want the caller to be able to specify this.\n self.originalHost = self.getHeader('host')\n if (!self.originalHostHeaderName) {\n self.originalHostHeaderName = self.hasHeader('host')\n }\n if (self.setHost) {\n self.removeHeader('host')\n }\n self.clearTimeout()\n\n var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar\n var addCookie = function (cookie) {\n // set the cookie if it's domain in the href's domain.\n try {\n targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true})\n } catch (e) {\n self.emit('error', e)\n }\n }\n\n response.caseless = caseless(response.headers)\n\n if (response.caseless.has('set-cookie') && (!self._disableCookies)) {\n var headerName = response.caseless.has('set-cookie')\n if (Array.isArray(response.headers[headerName])) {\n response.headers[headerName].forEach(addCookie)\n } else {\n addCookie(response.headers[headerName])\n }\n }\n\n if (self._redirect.onResponse(response)) {\n return // Ignore the rest of the response\n } else {\n // Be a good stream and emit end when the response is finished.\n // Hack to emit end on close because of a core bug that never fires end\n response.on('close', function () {\n if (!self._ended) {\n self.response.emit('end')\n }\n })\n\n response.once('end', function () {\n self._ended = true\n })\n\n var noBody = function (code) {\n return (\n self.method === 'HEAD' ||\n // Informational\n (code >= 100 && code < 200) ||\n // No Content\n code === 204 ||\n // Not Modified\n code === 304\n )\n }\n\n var responseContent\n if (self.gzip && !noBody(response.statusCode)) {\n var contentEncoding = response.headers['content-encoding'] || 'identity'\n contentEncoding = contentEncoding.trim().toLowerCase()\n\n // Be more lenient with decoding compressed responses, since (very rarely)\n // servers send slightly invalid gzip responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n var zlibOptions = {\n flush: zlib.Z_SYNC_FLUSH,\n finishFlush: zlib.Z_SYNC_FLUSH\n }\n\n if (contentEncoding === 'gzip') {\n responseContent = zlib.createGunzip(zlibOptions)\n response.pipe(responseContent)\n } else if (contentEncoding === 'deflate') {\n responseContent = zlib.createInflate(zlibOptions)\n response.pipe(responseContent)\n } else {\n // Since previous versions didn't check for Content-Encoding header,\n // ignore any invalid values to preserve backwards-compatibility\n if (contentEncoding !== 'identity') {\n debug('ignoring unrecognized Content-Encoding ' + contentEncoding)\n }\n responseContent = response\n }\n } else {\n responseContent = response\n }\n\n if (self.encoding) {\n if (self.dests.length !== 0) {\n console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.')\n } else {\n responseContent.setEncoding(self.encoding)\n }\n }\n\n if (self._paused) {\n responseContent.pause()\n }\n\n self.responseContent = responseContent\n\n self.emit('response', response)\n\n self.dests.forEach(function (dest) {\n self.pipeDest(dest)\n })\n\n responseContent.on('data', function (chunk) {\n if (self.timing && !self.responseStarted) {\n self.responseStartTime = (new Date()).getTime()\n\n // NOTE: responseStartTime is deprecated in favor of .timings\n response.responseStartTime = self.responseStartTime\n }\n self._destdata = true\n self.emit('data', chunk)\n })\n responseContent.once('end', function (chunk) {\n self.emit('end', chunk)\n })\n responseContent.on('error', function (error) {\n self.emit('error', error)\n })\n responseContent.on('close', function () { self.emit('close') })\n\n if (self.callback) {\n self.readResponseBody(response)\n } else { // if no callback\n self.on('end', function () {\n if (self._aborted) {\n debug('aborted', self.uri.href)\n return\n }\n self.emit('complete', response)\n })\n }\n }\n debug('finish init function', self.uri.href)\n}\n\nRequest.prototype.readResponseBody = function (response) {\n var self = this\n debug(\"reading response's body\")\n var buffers = []\n var bufferLength = 0\n var strings = []\n\n self.on('data', function (chunk) {\n if (!Buffer.isBuffer(chunk)) {\n strings.push(chunk)\n } else if (chunk.length) {\n bufferLength += chunk.length\n buffers.push(chunk)\n }\n })\n self.on('end', function () {\n debug('end event', self.uri.href)\n if (self._aborted) {\n debug('aborted', self.uri.href)\n // `buffer` is defined in the parent scope and used in a closure it exists for the life of the request.\n // This can lead to leaky behavior if the user retains a reference to the request object.\n buffers = []\n bufferLength = 0\n return\n }\n\n if (bufferLength) {\n debug('has body', self.uri.href, bufferLength)\n response.body = Buffer.concat(buffers, bufferLength)\n if (self.encoding !== null) {\n response.body = response.body.toString(self.encoding)\n }\n // `buffer` is defined in the parent scope and used in a closure it exists for the life of the Request.\n // This can lead to leaky behavior if the user retains a reference to the request object.\n buffers = []\n bufferLength = 0\n } else if (strings.length) {\n // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation.\n // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse().\n if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\\uFEFF') {\n strings[0] = strings[0].substring(1)\n }\n response.body = strings.join('')\n }\n\n if (self._json) {\n try {\n response.body = JSON.parse(response.body, self._jsonReviver)\n } catch (e) {\n debug('invalid JSON received', self.uri.href)\n }\n }\n debug('emitting complete', self.uri.href)\n if (typeof response.body === 'undefined' && !self._json) {\n response.body = self.encoding === null ? Buffer.alloc(0) : ''\n }\n self.emit('complete', response, response.body)\n })\n}\n\nRequest.prototype.abort = function () {\n var self = this\n self._aborted = true\n\n if (self.req) {\n self.req.abort()\n } else if (self.response) {\n self.response.destroy()\n }\n\n self.clearTimeout()\n self.emit('abort')\n}\n\nRequest.prototype.pipeDest = function (dest) {\n var self = this\n var response = self.response\n // Called after the response is received\n if (dest.headers && !dest.headersSent) {\n if (response.caseless.has('content-type')) {\n var ctname = response.caseless.has('content-type')\n if (dest.setHeader) {\n dest.setHeader(ctname, response.headers[ctname])\n } else {\n dest.headers[ctname] = response.headers[ctname]\n }\n }\n\n if (response.caseless.has('content-length')) {\n var clname = response.caseless.has('content-length')\n if (dest.setHeader) {\n dest.setHeader(clname, response.headers[clname])\n } else {\n dest.headers[clname] = response.headers[clname]\n }\n }\n }\n if (dest.setHeader && !dest.headersSent) {\n for (var i in response.headers) {\n // If the response content is being decoded, the Content-Encoding header\n // of the response doesn't represent the piped content, so don't pass it.\n if (!self.gzip || i !== 'content-encoding') {\n dest.setHeader(i, response.headers[i])\n }\n }\n dest.statusCode = response.statusCode\n }\n if (self.pipefilter) {\n self.pipefilter(response, dest)\n }\n}\n\nRequest.prototype.qs = function (q, clobber) {\n var self = this\n var base\n if (!clobber && self.uri.query) {\n base = self._qs.parse(self.uri.query)\n } else {\n base = {}\n }\n\n for (var i in q) {\n base[i] = q[i]\n }\n\n var qs = self._qs.stringify(base)\n\n if (qs === '') {\n return self\n }\n\n self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs)\n self.url = self.uri\n self.path = self.uri.path\n\n if (self.uri.host === 'unix') {\n self.enableUnixSocket()\n }\n\n return self\n}\nRequest.prototype.form = function (form) {\n var self = this\n if (form) {\n if (!/^application\\/x-www-form-urlencoded\\b/.test(self.getHeader('content-type'))) {\n self.setHeader('content-type', 'application/x-www-form-urlencoded')\n }\n self.body = (typeof form === 'string')\n ? self._qs.rfc3986(form.toString('utf8'))\n : self._qs.stringify(form).toString('utf8')\n return self\n }\n // create form-data object\n self._form = new FormData()\n self._form.on('error', function (err) {\n err.message = 'form-data: ' + err.message\n self.emit('error', err)\n self.abort()\n })\n return self._form\n}\nRequest.prototype.multipart = function (multipart) {\n var self = this\n\n self._multipart.onRequest(multipart)\n\n if (!self._multipart.chunked) {\n self.body = self._multipart.body\n }\n\n return self\n}\nRequest.prototype.json = function (val) {\n var self = this\n\n if (!self.hasHeader('accept')) {\n self.setHeader('accept', 'application/json')\n }\n\n if (typeof self.jsonReplacer === 'function') {\n self._jsonReplacer = self.jsonReplacer\n }\n\n self._json = true\n if (typeof val === 'boolean') {\n if (self.body !== undefined) {\n if (!/^application\\/x-www-form-urlencoded\\b/.test(self.getHeader('content-type'))) {\n self.body = safeStringify(self.body, self._jsonReplacer)\n } else {\n self.body = self._qs.rfc3986(self.body)\n }\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n }\n } else {\n self.body = safeStringify(val, self._jsonReplacer)\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n }\n\n if (typeof self.jsonReviver === 'function') {\n self._jsonReviver = self.jsonReviver\n }\n\n return self\n}\nRequest.prototype.getHeader = function (name, headers) {\n var self = this\n var result, re, match\n if (!headers) {\n headers = self.headers\n }\n Object.keys(headers).forEach(function (key) {\n if (key.length !== name.length) {\n return\n }\n re = new RegExp(name, 'i')\n match = key.match(re)\n if (match) {\n result = headers[key]\n }\n })\n return result\n}\nRequest.prototype.enableUnixSocket = function () {\n // Get the socket & request paths from the URL\n var unixParts = this.uri.path.split(':')\n var host = unixParts[0]\n var path = unixParts[1]\n // Apply unix properties to request\n this.socketPath = host\n this.uri.pathname = path\n this.uri.path = path\n this.uri.host = host\n this.uri.hostname = host\n this.uri.isUnix = true\n}\n\nRequest.prototype.auth = function (user, pass, sendImmediately, bearer) {\n var self = this\n\n self._auth.onRequest(user, pass, sendImmediately, bearer)\n\n return self\n}\nRequest.prototype.aws = function (opts, now) {\n var self = this\n\n if (!now) {\n self._aws = opts\n return self\n }\n\n if (opts.sign_version === 4 || opts.sign_version === '4') {\n // use aws4\n var options = {\n host: self.uri.host,\n path: self.uri.path,\n method: self.method,\n headers: self.headers,\n body: self.body\n }\n if (opts.service) {\n options.service = opts.service\n }\n var signRes = aws4.sign(options, {\n accessKeyId: opts.key,\n secretAccessKey: opts.secret,\n sessionToken: opts.session\n })\n self.setHeader('authorization', signRes.headers.Authorization)\n self.setHeader('x-amz-date', signRes.headers['X-Amz-Date'])\n if (signRes.headers['X-Amz-Security-Token']) {\n self.setHeader('x-amz-security-token', signRes.headers['X-Amz-Security-Token'])\n }\n } else {\n // default: use aws-sign2\n var date = new Date()\n self.setHeader('date', date.toUTCString())\n var auth = {\n key: opts.key,\n secret: opts.secret,\n verb: self.method.toUpperCase(),\n date: date,\n contentType: self.getHeader('content-type') || '',\n md5: self.getHeader('content-md5') || '',\n amazonHeaders: aws2.canonicalizeHeaders(self.headers)\n }\n var path = self.uri.path\n if (opts.bucket && path) {\n auth.resource = '/' + opts.bucket + path\n } else if (opts.bucket && !path) {\n auth.resource = '/' + opts.bucket\n } else if (!opts.bucket && path) {\n auth.resource = path\n } else if (!opts.bucket && !path) {\n auth.resource = '/'\n }\n auth.resource = aws2.canonicalizeResource(auth.resource)\n self.setHeader('authorization', aws2.authorization(auth))\n }\n\n return self\n}\nRequest.prototype.httpSignature = function (opts) {\n var self = this\n httpSignature.signRequest({\n getHeader: function (header) {\n return self.getHeader(header, self.headers)\n },\n setHeader: function (header, value) {\n self.setHeader(header, value)\n },\n method: self.method,\n path: self.path\n }, opts)\n debug('httpSignature authorization', self.getHeader('authorization'))\n\n return self\n}\nRequest.prototype.hawk = function (opts) {\n var self = this\n self.setHeader('Authorization', hawk.header(self.uri, self.method, opts))\n}\nRequest.prototype.oauth = function (_oauth) {\n var self = this\n\n self._oauth.onRequest(_oauth)\n\n return self\n}\n\nRequest.prototype.jar = function (jar) {\n var self = this\n var cookies\n\n if (self._redirect.redirectsFollowed === 0) {\n self.originalCookieHeader = self.getHeader('cookie')\n }\n\n if (!jar) {\n // disable cookies\n cookies = false\n self._disableCookies = true\n } else {\n var targetCookieJar = jar.getCookieString ? jar : globalCookieJar\n var urihref = self.uri.href\n // fetch cookie in the Specified host\n if (targetCookieJar) {\n cookies = targetCookieJar.getCookieString(urihref)\n }\n }\n\n // if need cookie and cookie is not empty\n if (cookies && cookies.length) {\n if (self.originalCookieHeader) {\n // Don't overwrite existing Cookie header\n self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies)\n } else {\n self.setHeader('cookie', cookies)\n }\n }\n self._jar = jar\n return self\n}\n\n// Stream API\nRequest.prototype.pipe = function (dest, opts) {\n var self = this\n\n if (self.response) {\n if (self._destdata) {\n self.emit('error', new Error('You cannot pipe after data has been emitted from the response.'))\n } else if (self._ended) {\n self.emit('error', new Error('You cannot pipe after the response has been ended.'))\n } else {\n stream.Stream.prototype.pipe.call(self, dest, opts)\n self.pipeDest(dest)\n return dest\n }\n } else {\n self.dests.push(dest)\n stream.Stream.prototype.pipe.call(self, dest, opts)\n return dest\n }\n}\nRequest.prototype.write = function () {\n var self = this\n if (self._aborted) { return }\n\n if (!self._started) {\n self.start()\n }\n if (self.req) {\n return self.req.write.apply(self.req, arguments)\n }\n}\nRequest.prototype.end = function (chunk) {\n var self = this\n if (self._aborted) { return }\n\n if (chunk) {\n self.write(chunk)\n }\n if (!self._started) {\n self.start()\n }\n if (self.req) {\n self.req.end()\n }\n}\nRequest.prototype.pause = function () {\n var self = this\n if (!self.responseContent) {\n self._paused = true\n } else {\n self.responseContent.pause.apply(self.responseContent, arguments)\n }\n}\nRequest.prototype.resume = function () {\n var self = this\n if (!self.responseContent) {\n self._paused = false\n } else {\n self.responseContent.resume.apply(self.responseContent, arguments)\n }\n}\nRequest.prototype.destroy = function () {\n var self = this\n this.clearTimeout()\n if (!self._ended) {\n self.end()\n } else if (self.response) {\n self.response.destroy()\n }\n}\n\nRequest.prototype.clearTimeout = function () {\n if (this.timeoutTimer) {\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n}\n\nRequest.defaultProxyHeaderWhiteList =\n Tunnel.defaultProxyHeaderWhiteList.slice()\n\nRequest.defaultProxyHeaderExclusiveList =\n Tunnel.defaultProxyHeaderExclusiveList.slice()\n\n// Exports\n\nRequest.prototype.toJSON = requestToJSON\nmodule.exports = Request\n", "// Copyright 2010-2012 Mikeal Rogers\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n'use strict'\n\nvar extend = require('extend')\nvar cookies = require('./lib/cookies')\nvar helpers = require('./lib/helpers')\n\nvar paramsHaveRequestBody = helpers.paramsHaveRequestBody\n\n// organize params for patch, post, put, head, del\nfunction initParams (uri, options, callback) {\n if (typeof options === 'function') {\n callback = options\n }\n\n var params = {}\n if (options !== null && typeof options === 'object') {\n extend(params, options, {uri: uri})\n } else if (typeof uri === 'string') {\n extend(params, {uri: uri})\n } else {\n extend(params, uri)\n }\n\n params.callback = callback || params.callback\n return params\n}\n\nfunction request (uri, options, callback) {\n if (typeof uri === 'undefined') {\n throw new Error('undefined is not a valid uri or options object.')\n }\n\n var params = initParams(uri, options, callback)\n\n if (params.method === 'HEAD' && paramsHaveRequestBody(params)) {\n throw new Error('HTTP HEAD requests MUST NOT include a request body.')\n }\n\n return new request.Request(params)\n}\n\nfunction verbFunc (verb) {\n var method = verb.toUpperCase()\n return function (uri, options, callback) {\n var params = initParams(uri, options, callback)\n params.method = method\n return request(params, params.callback)\n }\n}\n\n// define like this to please codeintel/intellisense IDEs\nrequest.get = verbFunc('get')\nrequest.head = verbFunc('head')\nrequest.options = verbFunc('options')\nrequest.post = verbFunc('post')\nrequest.put = verbFunc('put')\nrequest.patch = verbFunc('patch')\nrequest.del = verbFunc('delete')\nrequest['delete'] = verbFunc('delete')\n\nrequest.jar = function (store) {\n return cookies.jar(store)\n}\n\nrequest.cookie = function (str) {\n return cookies.parse(str)\n}\n\nfunction wrapRequestMethod (method, options, requester, verb) {\n return function (uri, opts, callback) {\n var params = initParams(uri, opts, callback)\n\n var target = {}\n extend(true, target, options, params)\n\n target.pool = params.pool || options.pool\n\n if (verb) {\n target.method = verb.toUpperCase()\n }\n\n if (typeof requester === 'function') {\n method = requester\n }\n\n return method(target, target.callback)\n }\n}\n\nrequest.defaults = function (options, requester) {\n var self = this\n\n options = options || {}\n\n if (typeof options === 'function') {\n requester = options\n options = {}\n }\n\n var defaults = wrapRequestMethod(self, options, requester)\n\n var verbs = ['get', 'head', 'post', 'put', 'patch', 'del', 'delete']\n verbs.forEach(function (verb) {\n defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb)\n })\n\n defaults.cookie = wrapRequestMethod(self.cookie, options, requester)\n defaults.jar = self.jar\n defaults.defaults = self.defaults\n return defaults\n}\n\nrequest.forever = function (agentOptions, optionsArg) {\n var options = {}\n if (optionsArg) {\n extend(options, optionsArg)\n }\n if (agentOptions) {\n options.agentOptions = agentOptions\n }\n\n options.forever = true\n return request.defaults(options)\n}\n\n// Exports\n\nmodule.exports = request\nrequest.Request = require('./request')\nrequest.initParams = initParams\n\n// Backwards compatibility for request.debug\nObject.defineProperty(request, 'debug', {\n enumerable: true,\n get: function () {\n return request.Request.debug\n },\n set: function (debug) {\n request.Request.debug = debug\n }\n})\n", "\n/**\n * Module exports.\n */\n\nmodule.exports = dataUriToBuffer;\n\n/**\n * Returns a `Buffer` instance from the given data URI `uri`.\n *\n * @param {String} uri Data URI to turn into a Buffer instance\n * @return {Buffer} Buffer instance from Data URI\n * @api public\n */\n\nfunction dataUriToBuffer (uri) {\n if (!/^data\\:/i.test(uri)) {\n throw new TypeError('`uri` does not appear to be a Data URI (must begin with \"data:\")');\n }\n\n // strip newlines\n uri = uri.replace(/\\r?\\n/g, '');\n\n // split the URI up into the \"metadata\" and the \"data\" portions\n var firstComma = uri.indexOf(',');\n if (-1 === firstComma || firstComma <= 4) throw new TypeError('malformed data: URI');\n\n // remove the \"data:\" scheme and parse the metadata\n var meta = uri.substring(5, firstComma).split(';');\n\n var base64 = false;\n var charset = 'US-ASCII';\n for (var i = 0; i < meta.length; i++) {\n if ('base64' == meta[i]) {\n base64 = true;\n } else if (0 == meta[i].indexOf('charset=')) {\n charset = meta[i].substring(8);\n }\n }\n\n // get the encoded data portion and decode URI-encoded chars\n var data = unescape(uri.substring(firstComma + 1));\n\n var encoding = base64 ? 'base64' : 'ascii';\n var buffer = new Buffer(data, encoding);\n\n // set `.type` property to MIME type\n buffer.type = meta[0] || 'text/plain';\n\n // set the `.charset` property\n buffer.charset = charset;\n\n return buffer;\n}\n", "var toBuffer = require('data-uri-to-buffer')\n\nfunction parseDataUri (dataUri) {\n\n return {\n mimeType: normalizeMimeType(parseMimeType(dataUri)),\n data: toBuffer(dataUri)\n }\n}\n\nfunction parseMimeType(uri) {\n return uri.substring(5, uri.indexOf(';'))\n}\n\nvar prefix = /^(\\w+\\/)+/\nfunction normalizeMimeType(mime) {\n mime = mime.toLowerCase()\n var once = mime.match(prefix)\n if (!once || !(once = once[1])) {\n return mime\n }\n return mime.replace(prefix, once)\n\n}\n\nmodule.exports = parseDataUri", "'use strict'\n\nvar ndarray = require('ndarray')\nvar path = require('path')\nvar PNG = require('pngjs').PNG\nvar jpeg = require('jpeg-js')\nvar pack = require('ndarray-pack')\nvar GifReader = require('omggif').GifReader\nvar Bitmap = require('node-bitmap')\nvar fs = require('fs')\nvar request = require('request')\nvar mime = require('mime-types')\nvar parseDataURI = require('parse-data-uri')\n\nfunction handlePNG(data, cb) {\n var png = new PNG();\n png.parse(data, function(err, img_data) {\n if(err) {\n cb(err)\n return\n }\n cb(null, ndarray(new Uint8Array(img_data.data),\n [img_data.width|0, img_data.height|0, 4],\n [4, 4*img_data.width|0, 1],\n 0))\n })\n}\n\nfunction handleJPEG(data, cb) {\n var jpegData\n try {\n jpegData = jpeg.decode(data)\n }\n catch(e) {\n cb(e)\n return\n }\n if(!jpegData) {\n cb(new Error(\"Error decoding jpeg\"))\n return\n }\n var nshape = [ jpegData.height, jpegData.width, 4 ]\n var result = ndarray(jpegData.data, nshape)\n cb(null, result.transpose(1,0))\n}\n\nfunction handleGIF(data, cb) {\n var reader\n try {\n reader = new GifReader(data)\n } catch(err) {\n cb(err)\n return\n }\n if(reader.numFrames() > 0) {\n var nshape = [reader.numFrames(), reader.height, reader.width, 4]\n try {\n var ndata = new Uint8Array(nshape[0] * nshape[1] * nshape[2] * nshape[3])\n } catch(err) {\n cb(err)\n return\n }\n var result = ndarray(ndata, nshape)\n try {\n for(var i=0; i= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {!Array.<*>} array The array to check.\n * @param {*} item The item to look for in the array.\n * @return {boolean} True if the item appears in the array.\n */\nfunction includes(array, item) {\n return array.indexOf(item) !== -1;\n}\n\nvar floor = Math.floor;\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xd800 || c > 0xdfff) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 \u2264 c \u2264 0xDFFF\n else if (0xdc00 <= c && c <= 0xdfff) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xfffd);\n }\n\n // 0xD800 \u2264 c \u2264 0xDBFF\n else if (0xd800 <= c && c <= 0xdbff) {\n // 1. If i = n\u22121, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xfffd);\n }\n // 2. Otherwise, i < n\u22121:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = s.charCodeAt(i + 1);\n\n // 2. If 0xDC00 \u2264 d \u2264 0xDFFF, then:\n if (0xdc00 <= d && d <= 0xdfff) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3ff;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3ff;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xfffd);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xffff) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xd800, (cp & 0x3ff) + 0xdc00);\n }\n }\n return s;\n}\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 4. Terminology\n//\n\n/**\n * An ASCII byte is a byte in the range 0x00 to 0x7F, inclusive.\n * @param {number} a The number to test.\n * @return {boolean} True if a is in the range 0x00 to 0x7F, inclusive.\n */\nfunction isASCIIByte(a) {\n return 0x00 <= a && a <= 0x7f;\n}\n\n/**\n * An ASCII code point is a code point in the range U+0000 to\n * U+007F, inclusive.\n */\nvar isASCIICodePoint = isASCIIByte;\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.|Uint8Array)} tokens Array of tokens that provide\n * the stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.} */\n this.tokens = [].slice.call(tokens);\n // Reversed as push/pop is more efficient than shift/unshift.\n this.tokens.reverse();\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function () {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function () {\n if (!this.tokens.length) return end_of_stream;\n return this.tokens.pop();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.)} token The token(s) to prepend to the\n * stream.\n */\n prepend: function (token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/ token;\n while (tokens.length) this.tokens.push(tokens.pop());\n } else {\n this.tokens.push(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.)} token The tokens(s) to push to the\n * stream.\n */\n push: function (token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/ token;\n while (tokens.length) this.tokens.unshift(tokens.shift());\n } else {\n this.tokens.unshift(token);\n }\n }\n};\n\n//\n// 5. Encodings\n//\n\n// 5.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal) throw TypeError('Decoder error');\n return opt_code_point || 0xfffd;\n}\n\n/**\n * @param {number} code_point The code point that could not be encoded.\n * @return {number} Always throws, no value is actually returned.\n */\nfunction encoderError(code_point) {\n throw TypeError('The code point ' + code_point + ' could not be encoded.');\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function (stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit, or |finished|.\n */\n handler: function (stream, code_point) {}\n};\n\n// 5.2 Names and labels\n\n// TODO: Define @typedef for Encoding: {name:string,labels:Array.}\n// https://github.com/google/closure-compiler/issues/247\n\n/**\n * @param {string} label The encoding label.\n * @return {?{name:string,labels:Array.}}\n */\nfunction getEncoding(label) {\n // 1. Remove any leading and trailing ASCII whitespace from label.\n label = String(label).trim().toLowerCase();\n\n // 2. If label is an ASCII case-insensitive match for any of the\n // labels listed in the table below, return the corresponding\n // encoding, and failure otherwise.\n if (Object.prototype.hasOwnProperty.call(label_to_encoding, label)) {\n return label_to_encoding[label];\n }\n return null;\n}\n\n/**\n * Encodings table: https://encoding.spec.whatwg.org/encodings.json\n * @const\n * @type {!Array.<{\n * heading: string,\n * encodings: Array.<{name:string,labels:Array.}>\n * }>}\n */\nvar encodings = [\n {\n encodings: [\n {\n labels: ['unicode-1-1-utf-8', 'utf-8', 'utf8'],\n name: 'UTF-8'\n }\n ],\n heading: 'The Encoding'\n },\n {\n encodings: [\n {\n labels: ['866', 'cp866', 'csibm866', 'ibm866'],\n name: 'IBM866'\n },\n {\n labels: [\n 'csisolatin2',\n 'iso-8859-2',\n 'iso-ir-101',\n 'iso8859-2',\n 'iso88592',\n 'iso_8859-2',\n 'iso_8859-2:1987',\n 'l2',\n 'latin2'\n ],\n name: 'ISO-8859-2'\n },\n {\n labels: [\n 'csisolatin3',\n 'iso-8859-3',\n 'iso-ir-109',\n 'iso8859-3',\n 'iso88593',\n 'iso_8859-3',\n 'iso_8859-3:1988',\n 'l3',\n 'latin3'\n ],\n name: 'ISO-8859-3'\n },\n {\n labels: [\n 'csisolatin4',\n 'iso-8859-4',\n 'iso-ir-110',\n 'iso8859-4',\n 'iso88594',\n 'iso_8859-4',\n 'iso_8859-4:1988',\n 'l4',\n 'latin4'\n ],\n name: 'ISO-8859-4'\n },\n {\n labels: [\n 'csisolatincyrillic',\n 'cyrillic',\n 'iso-8859-5',\n 'iso-ir-144',\n 'iso8859-5',\n 'iso88595',\n 'iso_8859-5',\n 'iso_8859-5:1988'\n ],\n name: 'ISO-8859-5'\n },\n {\n labels: [\n 'arabic',\n 'asmo-708',\n 'csiso88596e',\n 'csiso88596i',\n 'csisolatinarabic',\n 'ecma-114',\n 'iso-8859-6',\n 'iso-8859-6-e',\n 'iso-8859-6-i',\n 'iso-ir-127',\n 'iso8859-6',\n 'iso88596',\n 'iso_8859-6',\n 'iso_8859-6:1987'\n ],\n name: 'ISO-8859-6'\n },\n {\n labels: [\n 'csisolatingreek',\n 'ecma-118',\n 'elot_928',\n 'greek',\n 'greek8',\n 'iso-8859-7',\n 'iso-ir-126',\n 'iso8859-7',\n 'iso88597',\n 'iso_8859-7',\n 'iso_8859-7:1987',\n 'sun_eu_greek'\n ],\n name: 'ISO-8859-7'\n },\n {\n labels: [\n 'csiso88598e',\n 'csisolatinhebrew',\n 'hebrew',\n 'iso-8859-8',\n 'iso-8859-8-e',\n 'iso-ir-138',\n 'iso8859-8',\n 'iso88598',\n 'iso_8859-8',\n 'iso_8859-8:1988',\n 'visual'\n ],\n name: 'ISO-8859-8'\n },\n {\n labels: ['csiso88598i', 'iso-8859-8-i', 'logical'],\n name: 'ISO-8859-8-I'\n },\n {\n labels: [\n 'csisolatin6',\n 'iso-8859-10',\n 'iso-ir-157',\n 'iso8859-10',\n 'iso885910',\n 'l6',\n 'latin6'\n ],\n name: 'ISO-8859-10'\n },\n {\n labels: ['iso-8859-13', 'iso8859-13', 'iso885913'],\n name: 'ISO-8859-13'\n },\n {\n labels: ['iso-8859-14', 'iso8859-14', 'iso885914'],\n name: 'ISO-8859-14'\n },\n {\n labels: ['csisolatin9', 'iso-8859-15', 'iso8859-15', 'iso885915', 'iso_8859-15', 'l9'],\n name: 'ISO-8859-15'\n },\n {\n labels: ['iso-8859-16'],\n name: 'ISO-8859-16'\n },\n {\n labels: ['cskoi8r', 'koi', 'koi8', 'koi8-r', 'koi8_r'],\n name: 'KOI8-R'\n },\n {\n labels: ['koi8-ru', 'koi8-u'],\n name: 'KOI8-U'\n },\n {\n labels: ['csmacintosh', 'mac', 'macintosh', 'x-mac-roman'],\n name: 'macintosh'\n },\n {\n labels: ['dos-874', 'iso-8859-11', 'iso8859-11', 'iso885911', 'tis-620', 'windows-874'],\n name: 'windows-874'\n },\n {\n labels: ['cp1250', 'windows-1250', 'x-cp1250'],\n name: 'windows-1250'\n },\n {\n labels: ['cp1251', 'windows-1251', 'x-cp1251'],\n name: 'windows-1251'\n },\n {\n labels: [\n 'ansi_x3.4-1968',\n 'ascii',\n 'cp1252',\n 'cp819',\n 'csisolatin1',\n 'ibm819',\n 'iso-8859-1',\n 'iso-ir-100',\n 'iso8859-1',\n 'iso88591',\n 'iso_8859-1',\n 'iso_8859-1:1987',\n 'l1',\n 'latin1',\n 'us-ascii',\n 'windows-1252',\n 'x-cp1252'\n ],\n name: 'windows-1252'\n },\n {\n labels: ['cp1253', 'windows-1253', 'x-cp1253'],\n name: 'windows-1253'\n },\n {\n labels: [\n 'cp1254',\n 'csisolatin5',\n 'iso-8859-9',\n 'iso-ir-148',\n 'iso8859-9',\n 'iso88599',\n 'iso_8859-9',\n 'iso_8859-9:1989',\n 'l5',\n 'latin5',\n 'windows-1254',\n 'x-cp1254'\n ],\n name: 'windows-1254'\n },\n {\n labels: ['cp1255', 'windows-1255', 'x-cp1255'],\n name: 'windows-1255'\n },\n {\n labels: ['cp1256', 'windows-1256', 'x-cp1256'],\n name: 'windows-1256'\n },\n {\n labels: ['cp1257', 'windows-1257', 'x-cp1257'],\n name: 'windows-1257'\n },\n {\n labels: ['cp1258', 'windows-1258', 'x-cp1258'],\n name: 'windows-1258'\n },\n {\n labels: ['x-mac-cyrillic', 'x-mac-ukrainian'],\n name: 'x-mac-cyrillic'\n }\n ],\n heading: 'Legacy single-byte encodings'\n },\n {\n encodings: [\n {\n labels: [\n 'chinese',\n 'csgb2312',\n 'csiso58gb231280',\n 'gb2312',\n 'gb_2312',\n 'gb_2312-80',\n 'gbk',\n 'iso-ir-58',\n 'x-gbk'\n ],\n name: 'GBK'\n },\n {\n labels: ['gb18030'],\n name: 'gb18030'\n }\n ],\n heading: 'Legacy multi-byte Chinese (simplified) encodings'\n },\n {\n encodings: [\n {\n labels: ['big5', 'big5-hkscs', 'cn-big5', 'csbig5', 'x-x-big5'],\n name: 'Big5'\n }\n ],\n heading: 'Legacy multi-byte Chinese (traditional) encodings'\n },\n {\n encodings: [\n {\n labels: ['cseucpkdfmtjapanese', 'euc-jp', 'x-euc-jp'],\n name: 'EUC-JP'\n },\n {\n labels: ['csiso2022jp', 'iso-2022-jp'],\n name: 'ISO-2022-JP'\n },\n {\n labels: [\n 'csshiftjis',\n 'ms932',\n 'ms_kanji',\n 'shift-jis',\n 'shift_jis',\n 'sjis',\n 'windows-31j',\n 'x-sjis'\n ],\n name: 'Shift_JIS'\n }\n ],\n heading: 'Legacy multi-byte Japanese encodings'\n },\n {\n encodings: [\n {\n labels: [\n 'cseuckr',\n 'csksc56011987',\n 'euc-kr',\n 'iso-ir-149',\n 'korean',\n 'ks_c_5601-1987',\n 'ks_c_5601-1989',\n 'ksc5601',\n 'ksc_5601',\n 'windows-949'\n ],\n name: 'EUC-KR'\n }\n ],\n heading: 'Legacy multi-byte Korean encodings'\n },\n {\n encodings: [\n {\n labels: ['csiso2022kr', 'hz-gb-2312', 'iso-2022-cn', 'iso-2022-cn-ext', 'iso-2022-kr'],\n name: 'replacement'\n },\n {\n labels: ['utf-16be'],\n name: 'UTF-16BE'\n },\n {\n labels: ['utf-16', 'utf-16le'],\n name: 'UTF-16LE'\n },\n {\n labels: ['x-user-defined'],\n name: 'x-user-defined'\n }\n ],\n heading: 'Legacy miscellaneous encodings'\n }\n];\n\n// Label to encoding registry.\n/** @type {Object.}>} */\nvar label_to_encoding = {};\nencodings.forEach(function (category) {\n category.encodings.forEach(function (encoding) {\n encoding.labels.forEach(function (label) {\n label_to_encoding[label] = encoding;\n });\n });\n});\n\n// Registry of of encoder/decoder factories, by encoding name.\n/** @type {Object.} */\nvar encoders = {};\n/** @type {Object.} */\nvar decoders = {};\n\n//\n// 6. Indexes\n//\n\n/**\n * @param {number} pointer The |pointer| to search for.\n * @param {(!Array.|undefined)} index The |index| to search within.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in |index|.\n */\nfunction indexCodePointFor(pointer, index) {\n if (!index) return null;\n return index[pointer] || null;\n}\n\n/**\n * @param {number} code_point The |code point| to search for.\n * @param {!Array.} index The |index| to search within.\n * @return {?number} The first pointer corresponding to |code point| in\n * |index|, or null if |code point| is not in |index|.\n */\nfunction indexPointerFor(code_point, index) {\n var pointer = index.indexOf(code_point);\n return pointer === -1 ? null : pointer;\n}\n\n/**\n * @param {string} name Name of the index.\n * @return {(!Array.|!Array.>)}\n * */\nfunction index(name) {\n if (!('encoding-indexes' in globalThis)) {\n throw Error('Indexes missing.' + ' Did you forget to include encoding-indexes.js first?');\n }\n return globalThis['encoding-indexes'][name];\n}\n\n/**\n * @param {number} pointer The |pointer| to search for in the gb18030 index.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in the gb18030 index.\n */\nfunction indexGB18030RangesCodePointFor(pointer) {\n // 1. If pointer is greater than 39419 and less than 189000, or\n // pointer is greater than 1237575, return null.\n if ((pointer > 39419 && pointer < 189000) || pointer > 1237575) return null;\n\n // 2. If pointer is 7457, return code point U+E7C7.\n if (pointer === 7457) return 0xe7c7;\n\n // 3. Let offset be the last pointer in index gb18030 ranges that\n // is equal to or less than pointer and let code point offset be\n // its corresponding code point.\n var offset = 0;\n var code_point_offset = 0;\n var idx = index('gb18030-ranges');\n var i;\n for (i = 0; i < idx.length; ++i) {\n /** @type {!Array.} */\n var entry = idx[i];\n if (entry[0] <= pointer) {\n offset = entry[0];\n code_point_offset = entry[1];\n } else {\n break;\n }\n }\n\n // 4. Return a code point whose value is code point offset +\n // pointer \u2212 offset.\n return code_point_offset + pointer - offset;\n}\n\n/**\n * @param {number} code_point The |code point| to locate in the gb18030 index.\n * @return {number} The first pointer corresponding to |code point| in the\n * gb18030 index.\n */\nfunction indexGB18030RangesPointerFor(code_point) {\n // 1. If code point is U+E7C7, return pointer 7457.\n if (code_point === 0xe7c7) return 7457;\n\n // 2. Let offset be the last code point in index gb18030 ranges\n // that is equal to or less than code point and let pointer offset\n // be its corresponding pointer.\n var offset = 0;\n var pointer_offset = 0;\n var idx = index('gb18030-ranges');\n var i;\n for (i = 0; i < idx.length; ++i) {\n /** @type {!Array.} */\n var entry = idx[i];\n if (entry[1] <= code_point) {\n offset = entry[1];\n pointer_offset = entry[0];\n } else {\n break;\n }\n }\n\n // 3. Return a pointer whose value is pointer offset + code point\n // \u2212 offset.\n return pointer_offset + code_point - offset;\n}\n\n/**\n * @param {number} code_point The |code_point| to search for in the Shift_JIS\n * index.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in the Shift_JIS index.\n */\nfunction indexShiftJISPointerFor(code_point) {\n // 1. Let index be index jis0208 excluding all entries whose\n // pointer is in the range 8272 to 8835, inclusive.\n shift_jis_index =\n shift_jis_index ||\n index('jis0208').map(function (code_point, pointer) {\n return inRange(pointer, 8272, 8835) ? null : code_point;\n });\n var index_ = shift_jis_index;\n\n // 2. Return the index pointer for code point in index.\n return index_.indexOf(code_point);\n}\nvar shift_jis_index;\n\n/**\n * @param {number} code_point The |code_point| to search for in the big5\n * index.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in the big5 index.\n */\nfunction indexBig5PointerFor(code_point) {\n // 1. Let index be index Big5 excluding all entries whose pointer\n big5_index_no_hkscs =\n big5_index_no_hkscs ||\n index('big5').map(function (code_point, pointer) {\n return pointer < (0xa1 - 0x81) * 157 ? null : code_point;\n });\n var index_ = big5_index_no_hkscs;\n\n // 2. If code point is U+2550, U+255E, U+2561, U+256A, U+5341, or\n // U+5345, return the last pointer corresponding to code point in\n // index.\n if (\n code_point === 0x2550 ||\n code_point === 0x255e ||\n code_point === 0x2561 ||\n code_point === 0x256a ||\n code_point === 0x5341 ||\n code_point === 0x5345\n ) {\n return index_.lastIndexOf(code_point);\n }\n\n // 3. Return the index pointer for code point in index.\n return indexPointerFor(code_point, index_);\n}\nvar big5_index_no_hkscs;\n\n//\n// 8. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 8.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} label The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(label, options) {\n // Web IDL conventions\n if (!(this instanceof TextDecoder))\n throw TypeError(\"Called as a function. Did you forget 'new'?\");\n label = label !== undefined ? String(label) : DEFAULT_ENCODING;\n options = ToDictionary(options);\n\n // A TextDecoder object has an associated encoding, decoder,\n // stream, ignore BOM flag (initially unset), BOM seen flag\n // (initially unset), error mode (initially replacement), and do\n // not flush flag (initially unset).\n\n /** @private */\n this._encoding = null;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._ignoreBOM = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {string} */\n this._error_mode = 'replacement';\n /** @private @type {boolean} */\n this._do_not_flush = false;\n\n // 1. Let encoding be the result of getting an encoding from\n // label.\n var encoding = getEncoding(label);\n\n // 2. If encoding is failure or replacement, throw a RangeError.\n if (encoding === null || encoding.name === 'replacement')\n throw RangeError('Unknown encoding: ' + label);\n if (!decoders[encoding.name]) {\n throw Error('Decoder not present.' + ' Did you forget to include encoding-indexes.js first?');\n }\n\n // 3. Let dec be a new TextDecoder object.\n var dec = this;\n\n // 4. Set dec's encoding to encoding.\n dec._encoding = encoding;\n\n // 5. If options's fatal member is true, set dec's error mode to\n // fatal.\n if (Boolean(options['fatal'])) dec._error_mode = 'fatal';\n\n // 6. If options's ignoreBOM member is true, set dec's ignore BOM\n // flag.\n if (Boolean(options['ignoreBOM'])) dec._ignoreBOM = true;\n\n // For pre-ES5 runtimes:\n if (!Object.defineProperty) {\n this.encoding = dec._encoding.name.toLowerCase();\n this.fatal = dec._error_mode === 'fatal';\n this.ignoreBOM = dec._ignoreBOM;\n }\n\n // 7. Return dec.\n return dec;\n}\n\nif (Object.defineProperty) {\n // The encoding attribute's getter must return encoding's name.\n Object.defineProperty(TextDecoder.prototype, 'encoding', {\n /** @this {TextDecoder} */\n get: function () {\n return this._encoding.name.toLowerCase();\n }\n });\n\n // The fatal attribute's getter must return true if error mode\n // is fatal, and false otherwise.\n Object.defineProperty(TextDecoder.prototype, 'fatal', {\n /** @this {TextDecoder} */\n get: function () {\n return this._error_mode === 'fatal';\n }\n });\n\n // The ignoreBOM attribute's getter must return true if ignore\n // BOM flag is set, and false otherwise.\n Object.defineProperty(TextDecoder.prototype, 'ignoreBOM', {\n /** @this {TextDecoder} */\n get: function () {\n return this._ignoreBOM;\n }\n });\n}\n\n/**\n * @param {BufferSource=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\nTextDecoder.prototype.decode = function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (\n typeof input === 'object' &&\n 'buffer' in input &&\n input.buffer instanceof ArrayBuffer\n ) {\n bytes = new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n // 1. If the do not flush flag is unset, set decoder to a new\n // encoding's decoder, set stream to a new stream, and unset the\n // BOM seen flag.\n if (!this._do_not_flush) {\n this._decoder = decoders[this._encoding.name]({\n fatal: this._error_mode === 'fatal'\n });\n this._BOMseen = false;\n }\n\n // 2. If options's stream is true, set the do not flush flag, and\n // unset the do not flush flag otherwise.\n this._do_not_flush = Boolean(options['stream']);\n\n // 3. If input is given, push a copy of input to stream.\n // TODO: Align with spec algorithm - maintain stream on instance.\n var input_stream = new Stream(bytes);\n\n // 4. Let output be a new stream.\n var output = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n\n // 5. While true:\n while (true) {\n // 1. Let token be the result of reading from stream.\n var token = input_stream.read();\n\n // 2. If token is end-of-stream and the do not flush flag is\n // set, return output, serialized.\n // TODO: Align with spec algorithm.\n if (token === end_of_stream) break;\n\n // 3. Otherwise, run these subsubsteps:\n\n // 1. Let result be the result of processing token for decoder,\n // stream, output, and error mode.\n result = this._decoder.handler(input_stream, token);\n\n // 2. If result is finished, return output, serialized.\n if (result === finished) break;\n\n if (result !== null) {\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.}*/ result);\n else output.push(result);\n }\n\n // 3. Otherwise, if result is error, throw a TypeError.\n // (Thrown in handler)\n\n // 4. Otherwise, do nothing.\n }\n // TODO: Align with spec algorithm.\n if (!this._do_not_flush) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished) break;\n if (result === null) continue;\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.}*/ result);\n else output.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n // A TextDecoder object also has an associated serialize stream\n // algorithm...\n /**\n * @param {!Array.} stream\n * @return {string}\n * @this {TextDecoder}\n */\n function serializeStream(stream) {\n // 1. Let token be the result of reading from stream.\n // (Done in-place on array, rather than as a stream)\n\n // 2. If encoding is UTF-8, UTF-16BE, or UTF-16LE, and ignore\n // BOM flag and BOM seen flag are unset, run these subsubsteps:\n if (\n includes(['UTF-8', 'UTF-16LE', 'UTF-16BE'], this._encoding.name) &&\n !this._ignoreBOM &&\n !this._BOMseen\n ) {\n if (stream.length > 0 && stream[0] === 0xfeff) {\n // 1. If token is U+FEFF, set BOM seen flag.\n this._BOMseen = true;\n stream.shift();\n } else if (stream.length > 0) {\n // 2. Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to stream.\n this._BOMseen = true;\n } else {\n // 3. Otherwise, if token is not end-of-stream, append token\n // to output.\n // (no-op)\n }\n }\n // 4. Otherwise, return output.\n return codePointsToString(stream);\n }\n\n return serializeStream.call(this, output);\n};\n\n// 8.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} label The label of the encoding. NONSTANDARD.\n * @param {Object=} options NONSTANDARD.\n */\nfunction TextEncoder(label, options) {\n // Web IDL conventions\n if (!(this instanceof TextEncoder))\n throw TypeError(\"Called as a function. Did you forget 'new'?\");\n options = ToDictionary(options);\n\n // A TextEncoder object has an associated encoding and encoder.\n\n /** @private */\n this._encoding = null;\n /** @private @type {?Encoder} */\n this._encoder = null;\n\n // Non-standard\n /** @private @type {boolean} */\n this._do_not_flush = false;\n /** @private @type {string} */\n this._fatal = Boolean(options['fatal']) ? 'fatal' : 'replacement';\n\n // 1. Let enc be a new TextEncoder object.\n var enc = this;\n\n // 2. Set enc's encoding to UTF-8's encoder.\n if (Boolean(options['NONSTANDARD_allowLegacyEncoding'])) {\n // NONSTANDARD behavior.\n label = label !== undefined ? String(label) : DEFAULT_ENCODING;\n var encoding = getEncoding(label);\n if (encoding === null || encoding.name === 'replacement')\n throw RangeError('Unknown encoding: ' + label);\n if (!encoders[encoding.name]) {\n throw Error('Encoder not present.' + ' Did you forget to include encoding-indexes.js first?');\n }\n enc._encoding = encoding;\n } else {\n // Standard behavior.\n enc._encoding = getEncoding('utf-8');\n\n if (label !== undefined && 'console' in globalThis) {\n console.warn('TextEncoder constructor called with encoding label, ' + 'which is ignored.');\n }\n }\n\n // For pre-ES5 runtimes:\n if (!Object.defineProperty) this.encoding = enc._encoding.name.toLowerCase();\n\n // 3. Return enc.\n return enc;\n}\n\nif (Object.defineProperty) {\n // The encoding attribute's getter must return encoding's name.\n Object.defineProperty(TextEncoder.prototype, 'encoding', {\n /** @this {TextEncoder} */\n get: function () {\n return this._encoding.name.toLowerCase();\n }\n });\n}\n\n/**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {!Uint8Array} Encoded bytes, as a Uint8Array.\n */\nTextEncoder.prototype.encode = function encode(opt_string, options) {\n opt_string = opt_string === undefined ? '' : String(opt_string);\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful when\n // the input is a USVString so streaming is not necessary.\n if (!this._do_not_flush)\n this._encoder = encoders[this._encoding.name]({\n fatal: this._fatal === 'fatal'\n });\n this._do_not_flush = Boolean(options['stream']);\n\n // 1. Convert input to a stream.\n var input = new Stream(stringToCodePoints(opt_string));\n\n // 2. Let output be a new stream\n var output = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n // 3. While true, run these substeps:\n while (true) {\n // 1. Let token be the result of reading from input.\n var token = input.read();\n if (token === end_of_stream) break;\n // 2. Let result be the result of processing token for encoder,\n // input, output.\n result = this._encoder.handler(input, token);\n if (result === finished) break;\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.}*/ result);\n else output.push(result);\n }\n // TODO: Align with spec algorithm.\n if (!this._do_not_flush) {\n while (true) {\n result = this._encoder.handler(input, input.read());\n if (result === finished) break;\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.}*/ result);\n else output.push(result);\n }\n this._encoder = null;\n }\n // 3. If result is finished, convert output into a byte sequence,\n // and then return a Uint8Array object wrapping an ArrayBuffer\n // containing output.\n return new Uint8Array(output);\n};\n\n//\n// 9. The encoding\n//\n\n// 9.1 utf-8\n\n// 9.1.1 utf-8 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xbf;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream) return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7f)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n else if (inRange(bite, 0xc2, 0xdf)) {\n // 1. Set utf-8 bytes needed to 1.\n utf8_bytes_needed = 1;\n\n // 2. Set UTF-8 code point to byte & 0x1F.\n utf8_code_point = bite & 0x1f;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xe0, 0xef)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xe0) utf8_lower_boundary = 0xa0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xed) utf8_upper_boundary = 0x9f;\n // 3. Set utf-8 bytes needed to 2.\n utf8_bytes_needed = 2;\n // 4. Set UTF-8 code point to byte & 0xF.\n utf8_code_point = bite & 0xf;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xf0, 0xf4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xf0) utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xf4) utf8_upper_boundary = 0x8f;\n // 3. Set utf-8 bytes needed to 3.\n utf8_bytes_needed = 3;\n // 4. Set UTF-8 code point to byte & 0x7.\n utf8_code_point = bite & 0x7;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Return continue.\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, inclusive, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xbf;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xbf;\n\n // 6. Set UTF-8 code point to (UTF-8 code point << 6) | (byte &\n // 0x3F)\n utf8_code_point = (utf8_code_point << 6) | (bite & 0x3f);\n\n // 7. Increase utf-8 bytes seen by one.\n utf8_bytes_seen += 1;\n\n // 8. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed) return null;\n\n // 9. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 10. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 11. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n// 9.1.2 utf-8 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF, inclusive:\n if (inRange(code_point, 0x0080, 0x07ff)) {\n // 1 and 0xC0\n count = 1;\n offset = 0xc0;\n }\n // U+0800 to U+FFFF, inclusive:\n else if (inRange(code_point, 0x0800, 0xffff)) {\n // 2 and 0xE0\n count = 2;\n offset = 0xe0;\n }\n // U+10000 to U+10FFFF, inclusive:\n else if (inRange(code_point, 0x10000, 0x10ffff)) {\n // 3 and 0xF0\n count = 3;\n offset = 0xf0;\n }\n\n // 4. Let bytes be a byte sequence whose first byte is (code\n // point >> (6 \u00D7 count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n // 1. Set temp to code point >> (6 \u00D7 (count \u2212 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3f));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['UTF-8'] = function (options) {\n return new UTF8Encoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['UTF-8'] = function (options) {\n return new UTF8Decoder(options);\n};\n\n//\n// 10. Legacy single-byte encodings\n//\n\n// 10.1 single-byte decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {!Array.} index The encoding index.\n * @param {{fatal: boolean}} options\n */\nfunction SingleByteDecoder(index, options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream, return finished.\n if (bite === end_of_stream) return finished;\n\n // 2. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 3. Let code point be the index code point for byte \u2212 0x80 in\n // index single-byte.\n var code_point = index[bite - 0x80];\n\n // 4. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 5. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n// 10.2 single-byte encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {!Array.} index The encoding index.\n * @param {{fatal: boolean}} options\n */\nfunction SingleByteEncoder(index, options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Let pointer be the index pointer for code point in index\n // single-byte.\n var pointer = indexPointerFor(code_point, index);\n\n // 4. If pointer is null, return error with code point.\n if (pointer === null) encoderError(code_point);\n\n // 5. Return a byte whose value is pointer + 0x80.\n return pointer + 0x80;\n };\n}\n\n(function () {\n if (!('encoding-indexes' in globalThis)) return;\n encodings.forEach(function (category) {\n if (category.heading !== 'Legacy single-byte encodings') return;\n category.encodings.forEach(function (encoding) {\n var name = encoding.name;\n var idx = index(name.toLowerCase());\n /** @param {{fatal: boolean}} options */\n decoders[name] = function (options) {\n return new SingleByteDecoder(idx, options);\n };\n /** @param {{fatal: boolean}} options */\n encoders[name] = function (options) {\n return new SingleByteEncoder(idx, options);\n };\n });\n });\n})();\n\n//\n// 11. Legacy multi-byte Chinese (simplified) encodings\n//\n\n// 11.1 gbk\n\n// 11.1.1 gbk decoder\n// gbk's decoder is gb18030's decoder.\n/** @param {{fatal: boolean}} options */\ndecoders['GBK'] = function (options) {\n return new GB18030Decoder(options);\n};\n\n// 11.1.2 gbk encoder\n// gbk's encoder is gb18030's encoder with its gbk flag set.\n/** @param {{fatal: boolean}} options */\nencoders['GBK'] = function (options) {\n return new GB18030Encoder(options, true);\n};\n\n// 11.2 gb18030\n\n// 11.2.1 gb18030 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction GB18030Decoder(options) {\n var fatal = options.fatal;\n // gb18030's decoder has an associated gb18030 first, gb18030\n // second, and gb18030 third (all initially 0x00).\n var /** @type {number} */ gb18030_first = 0x00,\n /** @type {number} */ gb18030_second = 0x00,\n /** @type {number} */ gb18030_third = 0x00;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and gb18030 first, gb18030\n // second, and gb18030 third are 0x00, return finished.\n if (\n bite === end_of_stream &&\n gb18030_first === 0x00 &&\n gb18030_second === 0x00 &&\n gb18030_third === 0x00\n ) {\n return finished;\n }\n // 2. If byte is end-of-stream, and gb18030 first, gb18030\n // second, or gb18030 third is not 0x00, set gb18030 first,\n // gb18030 second, and gb18030 third to 0x00, and return error.\n if (\n bite === end_of_stream &&\n (gb18030_first !== 0x00 || gb18030_second !== 0x00 || gb18030_third !== 0x00)\n ) {\n gb18030_first = 0x00;\n gb18030_second = 0x00;\n gb18030_third = 0x00;\n decoderError(fatal);\n }\n var code_point;\n // 3. If gb18030 third is not 0x00, run these substeps:\n if (gb18030_third !== 0x00) {\n // 1. Let code point be null.\n code_point = null;\n // 2. If byte is in the range 0x30 to 0x39, inclusive, set\n // code point to the index gb18030 ranges code point for\n // (((gb18030 first \u2212 0x81) \u00D7 10 + gb18030 second \u2212 0x30) \u00D7\n // 126 + gb18030 third \u2212 0x81) \u00D7 10 + byte \u2212 0x30.\n if (inRange(bite, 0x30, 0x39)) {\n code_point = indexGB18030RangesCodePointFor(\n (((gb18030_first - 0x81) * 10 + gb18030_second - 0x30) * 126 + gb18030_third - 0x81) *\n 10 +\n bite -\n 0x30\n );\n }\n\n // 3. Let buffer be a byte sequence consisting of gb18030\n // second, gb18030 third, and byte, in order.\n var buffer = [gb18030_second, gb18030_third, bite];\n\n // 4. Set gb18030 first, gb18030 second, and gb18030 third to\n // 0x00.\n gb18030_first = 0x00;\n gb18030_second = 0x00;\n gb18030_third = 0x00;\n\n // 5. If code point is null, prepend buffer to stream and\n // return error.\n if (code_point === null) {\n stream.prepend(buffer);\n return decoderError(fatal);\n }\n\n // 6. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If gb18030 second is not 0x00, run these substeps:\n if (gb18030_second !== 0x00) {\n // 1. If byte is in the range 0x81 to 0xFE, inclusive, set\n // gb18030 third to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n gb18030_third = bite;\n return null;\n }\n\n // 2. Prepend gb18030 second followed by byte to stream, set\n // gb18030 first and gb18030 second to 0x00, and return error.\n stream.prepend([gb18030_second, bite]);\n gb18030_first = 0x00;\n gb18030_second = 0x00;\n return decoderError(fatal);\n }\n\n // 5. If gb18030 first is not 0x00, run these substeps:\n if (gb18030_first !== 0x00) {\n // 1. If byte is in the range 0x30 to 0x39, inclusive, set\n // gb18030 second to byte and return continue.\n if (inRange(bite, 0x30, 0x39)) {\n gb18030_second = bite;\n return null;\n }\n\n // 2. Let lead be gb18030 first, let pointer be null, and set\n // gb18030 first to 0x00.\n var lead = gb18030_first;\n var pointer = null;\n gb18030_first = 0x00;\n\n // 3. Let offset be 0x40 if byte is less than 0x7F and 0x41\n // otherwise.\n var offset = bite < 0x7f ? 0x40 : 0x41;\n\n // 4. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80\n // to 0xFE, inclusive, set pointer to (lead \u2212 0x81) \u00D7 190 +\n // (byte \u2212 offset).\n if (inRange(bite, 0x40, 0x7e) || inRange(bite, 0x80, 0xfe))\n pointer = (lead - 0x81) * 190 + (bite - offset);\n\n // 5. Let code point be null if pointer is null and the index\n // code point for pointer in index gb18030 otherwise.\n code_point = pointer === null ? null : indexCodePointFor(pointer, index('gb18030'));\n\n // 6. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (code_point === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 7. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 8. Return a code point whose value is code point.\n return code_point;\n }\n\n // 6. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 7. If byte is 0x80, return code point U+20AC.\n if (bite === 0x80) return 0x20ac;\n\n // 8. If byte is in the range 0x81 to 0xFE, inclusive, set\n // gb18030 first to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n gb18030_first = bite;\n return null;\n }\n\n // 9. Return error.\n return decoderError(fatal);\n };\n}\n\n// 11.2.2 gb18030 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n * @param {boolean=} gbk_flag\n */\nfunction GB18030Encoder(options, gbk_flag) {\n var fatal = options.fatal;\n // gb18030's decoder has an associated gbk flag (initially unset).\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. If code point is U+E5E5, return error with code point.\n if (code_point === 0xe5e5) return encoderError(code_point);\n\n // 4. If the gbk flag is set and code point is U+20AC, return\n // byte 0x80.\n if (gbk_flag && code_point === 0x20ac) return 0x80;\n\n // 5. Let pointer be the index pointer for code point in index\n // gb18030.\n var pointer = indexPointerFor(code_point, index('gb18030'));\n\n // 6. If pointer is not null, run these substeps:\n if (pointer !== null) {\n // 1. Let lead be floor(pointer / 190) + 0x81.\n var lead = floor(pointer / 190) + 0x81;\n\n // 2. Let trail be pointer % 190.\n var trail = pointer % 190;\n\n // 3. Let offset be 0x40 if trail is less than 0x3F and 0x41 otherwise.\n var offset = trail < 0x3f ? 0x40 : 0x41;\n\n // 4. Return two bytes whose values are lead and trail + offset.\n return [lead, trail + offset];\n }\n\n // 7. If gbk flag is set, return error with code point.\n if (gbk_flag) return encoderError(code_point);\n\n // 8. Set pointer to the index gb18030 ranges pointer for code\n // point.\n pointer = indexGB18030RangesPointerFor(code_point);\n\n // 9. Let byte1 be floor(pointer / 10 / 126 / 10).\n var byte1 = floor(pointer / 10 / 126 / 10);\n\n // 10. Set pointer to pointer \u2212 byte1 \u00D7 10 \u00D7 126 \u00D7 10.\n pointer = pointer - byte1 * 10 * 126 * 10;\n\n // 11. Let byte2 be floor(pointer / 10 / 126).\n var byte2 = floor(pointer / 10 / 126);\n\n // 12. Set pointer to pointer \u2212 byte2 \u00D7 10 \u00D7 126.\n pointer = pointer - byte2 * 10 * 126;\n\n // 13. Let byte3 be floor(pointer / 10).\n var byte3 = floor(pointer / 10);\n\n // 14. Let byte4 be pointer \u2212 byte3 \u00D7 10.\n var byte4 = pointer - byte3 * 10;\n\n // 15. Return four bytes whose values are byte1 + 0x81, byte2 +\n // 0x30, byte3 + 0x81, byte4 + 0x30.\n return [byte1 + 0x81, byte2 + 0x30, byte3 + 0x81, byte4 + 0x30];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['gb18030'] = function (options) {\n return new GB18030Encoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['gb18030'] = function (options) {\n return new GB18030Decoder(options);\n};\n\n//\n// 12. Legacy multi-byte Chinese (traditional) encodings\n//\n\n// 12.1 Big5\n\n// 12.1.1 Big5 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction Big5Decoder(options) {\n var fatal = options.fatal;\n // Big5's decoder has an associated Big5 lead (initially 0x00).\n var /** @type {number} */ Big5_lead = 0x00;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and Big5 lead is not 0x00, set\n // Big5 lead to 0x00 and return error.\n if (bite === end_of_stream && Big5_lead !== 0x00) {\n Big5_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and Big5 lead is 0x00, return\n // finished.\n if (bite === end_of_stream && Big5_lead === 0x00) return finished;\n\n // 3. If Big5 lead is not 0x00, let lead be Big5 lead, let\n // pointer be null, set Big5 lead to 0x00, and then run these\n // substeps:\n if (Big5_lead !== 0x00) {\n var lead = Big5_lead;\n var pointer = null;\n Big5_lead = 0x00;\n\n // 1. Let offset be 0x40 if byte is less than 0x7F and 0x62\n // otherwise.\n var offset = bite < 0x7f ? 0x40 : 0x62;\n\n // 2. If byte is in the range 0x40 to 0x7E, inclusive, or 0xA1\n // to 0xFE, inclusive, set pointer to (lead \u2212 0x81) \u00D7 157 +\n // (byte \u2212 offset).\n if (inRange(bite, 0x40, 0x7e) || inRange(bite, 0xa1, 0xfe))\n pointer = (lead - 0x81) * 157 + (bite - offset);\n\n // 3. If there is a row in the table below whose first column\n // is pointer, return the two code points listed in its second\n // column\n // Pointer | Code points\n // --------+--------------\n // 1133 | U+00CA U+0304\n // 1135 | U+00CA U+030C\n // 1164 | U+00EA U+0304\n // 1166 | U+00EA U+030C\n switch (pointer) {\n case 1133:\n return [0x00ca, 0x0304];\n case 1135:\n return [0x00ca, 0x030c];\n case 1164:\n return [0x00ea, 0x0304];\n case 1166:\n return [0x00ea, 0x030c];\n }\n\n // 4. Let code point be null if pointer is null and the index\n // code point for pointer in index Big5 otherwise.\n var code_point = pointer === null ? null : indexCodePointFor(pointer, index('big5'));\n\n // 5. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (code_point === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 6. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 7. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 5. If byte is in the range 0x81 to 0xFE, inclusive, set Big5\n // lead to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n Big5_lead = bite;\n return null;\n }\n\n // 6. Return error.\n return decoderError(fatal);\n };\n}\n\n// 12.1.2 Big5 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction Big5Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Let pointer be the index Big5 pointer for code point.\n var pointer = indexBig5PointerFor(code_point);\n\n // 4. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 5. Let lead be floor(pointer / 157) + 0x81.\n var lead = floor(pointer / 157) + 0x81;\n\n // 6. If lead is less than 0xA1, return error with code point.\n if (lead < 0xa1) return encoderError(code_point);\n\n // 7. Let trail be pointer % 157.\n var trail = pointer % 157;\n\n // 8. Let offset be 0x40 if trail is less than 0x3F and 0x62\n // otherwise.\n var offset = trail < 0x3f ? 0x40 : 0x62;\n\n // Return two bytes whose values are lead and trail + offset.\n return [lead, trail + offset];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['Big5'] = function (options) {\n return new Big5Encoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['Big5'] = function (options) {\n return new Big5Decoder(options);\n};\n\n//\n// 13. Legacy multi-byte Japanese encodings\n//\n\n// 13.1 euc-jp\n\n// 13.1.1 euc-jp decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCJPDecoder(options) {\n var fatal = options.fatal;\n\n // euc-jp's decoder has an associated euc-jp jis0212 flag\n // (initially unset) and euc-jp lead (initially 0x00).\n var /** @type {boolean} */ eucjp_jis0212_flag = false,\n /** @type {number} */ eucjp_lead = 0x00;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and euc-jp lead is not 0x00, set\n // euc-jp lead to 0x00, and return error.\n if (bite === end_of_stream && eucjp_lead !== 0x00) {\n eucjp_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and euc-jp lead is 0x00, return\n // finished.\n if (bite === end_of_stream && eucjp_lead === 0x00) return finished;\n\n // 3. If euc-jp lead is 0x8E and byte is in the range 0xA1 to\n // 0xDF, inclusive, set euc-jp lead to 0x00 and return a code\n // point whose value is 0xFF61 \u2212 0xA1 + byte.\n if (eucjp_lead === 0x8e && inRange(bite, 0xa1, 0xdf)) {\n eucjp_lead = 0x00;\n return 0xff61 - 0xa1 + bite;\n }\n\n // 4. If euc-jp lead is 0x8F and byte is in the range 0xA1 to\n // 0xFE, inclusive, set the euc-jp jis0212 flag, set euc-jp lead\n // to byte, and return continue.\n if (eucjp_lead === 0x8f && inRange(bite, 0xa1, 0xfe)) {\n eucjp_jis0212_flag = true;\n eucjp_lead = bite;\n return null;\n }\n\n // 5. If euc-jp lead is not 0x00, let lead be euc-jp lead, set\n // euc-jp lead to 0x00, and run these substeps:\n if (eucjp_lead !== 0x00) {\n var lead = eucjp_lead;\n eucjp_lead = 0x00;\n\n // 1. Let code point be null.\n var code_point = null;\n\n // 2. If lead and byte are both in the range 0xA1 to 0xFE,\n // inclusive, set code point to the index code point for (lead\n // \u2212 0xA1) \u00D7 94 + byte \u2212 0xA1 in index jis0208 if the euc-jp\n // jis0212 flag is unset and in index jis0212 otherwise.\n if (inRange(lead, 0xa1, 0xfe) && inRange(bite, 0xa1, 0xfe)) {\n code_point = indexCodePointFor(\n (lead - 0xa1) * 94 + (bite - 0xa1),\n index(!eucjp_jis0212_flag ? 'jis0208' : 'jis0212')\n );\n }\n\n // 3. Unset the euc-jp jis0212 flag.\n eucjp_jis0212_flag = false;\n\n // 4. If byte is not in the range 0xA1 to 0xFE, inclusive,\n // prepend byte to stream.\n if (!inRange(bite, 0xa1, 0xfe)) stream.prepend(bite);\n\n // 5. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 6. Return a code point whose value is code point.\n return code_point;\n }\n\n // 6. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 7. If byte is 0x8E, 0x8F, or in the range 0xA1 to 0xFE,\n // inclusive, set euc-jp lead to byte and return continue.\n if (bite === 0x8e || bite === 0x8f || inRange(bite, 0xa1, 0xfe)) {\n eucjp_lead = bite;\n return null;\n }\n\n // 8. Return error.\n return decoderError(fatal);\n };\n}\n\n// 13.1.2 euc-jp encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCJPEncoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. If code point is U+00A5, return byte 0x5C.\n if (code_point === 0x00a5) return 0x5c;\n\n // 4. If code point is U+203E, return byte 0x7E.\n if (code_point === 0x203e) return 0x7e;\n\n // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,\n // return two bytes whose values are 0x8E and code point \u2212\n // 0xFF61 + 0xA1.\n if (inRange(code_point, 0xff61, 0xff9f)) return [0x8e, code_point - 0xff61 + 0xa1];\n\n // 6. If code point is U+2212, set it to U+FF0D.\n if (code_point === 0x2212) code_point = 0xff0d;\n\n // 7. Let pointer be the index pointer for code point in index\n // jis0208.\n var pointer = indexPointerFor(code_point, index('jis0208'));\n\n // 8. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 9. Let lead be floor(pointer / 94) + 0xA1.\n var lead = floor(pointer / 94) + 0xa1;\n\n // 10. Let trail be pointer % 94 + 0xA1.\n var trail = (pointer % 94) + 0xa1;\n\n // 11. Return two bytes whose values are lead and trail.\n return [lead, trail];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['EUC-JP'] = function (options) {\n return new EUCJPEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['EUC-JP'] = function (options) {\n return new EUCJPDecoder(options);\n};\n\n// 13.2 iso-2022-jp\n\n// 13.2.1 iso-2022-jp decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction ISO2022JPDecoder(options) {\n var fatal = options.fatal;\n /** @enum */\n var states = {\n ASCII: 0,\n Roman: 1,\n Katakana: 2,\n LeadByte: 3,\n TrailByte: 4,\n EscapeStart: 5,\n Escape: 6\n };\n // iso-2022-jp's decoder has an associated iso-2022-jp decoder\n // state (initially ASCII), iso-2022-jp decoder output state\n // (initially ASCII), iso-2022-jp lead (initially 0x00), and\n // iso-2022-jp output flag (initially unset).\n var /** @type {number} */ iso2022jp_decoder_state = states.ASCII,\n /** @type {number} */ iso2022jp_decoder_output_state = states.ASCII,\n /** @type {number} */ iso2022jp_lead = 0x00,\n /** @type {boolean} */ iso2022jp_output_flag = false;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // switching on iso-2022-jp decoder state:\n switch (iso2022jp_decoder_state) {\n default:\n case states.ASCII:\n // ASCII\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x00 to 0x7F, excluding 0x0E, 0x0F, and 0x1B\n if (inRange(bite, 0x00, 0x7f) && bite !== 0x0e && bite !== 0x0f && bite !== 0x1b) {\n // Unset the iso-2022-jp output flag and return a code point\n // whose value is byte.\n iso2022jp_output_flag = false;\n return bite;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.Roman:\n // Roman\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x5C\n if (bite === 0x5c) {\n // Unset the iso-2022-jp output flag and return code point\n // U+00A5.\n iso2022jp_output_flag = false;\n return 0x00a5;\n }\n\n // 0x7E\n if (bite === 0x7e) {\n // Unset the iso-2022-jp output flag and return code point\n // U+203E.\n iso2022jp_output_flag = false;\n return 0x203e;\n }\n\n // 0x00 to 0x7F, excluding 0x0E, 0x0F, 0x1B, 0x5C, and 0x7E\n if (\n inRange(bite, 0x00, 0x7f) &&\n bite !== 0x0e &&\n bite !== 0x0f &&\n bite !== 0x1b &&\n bite !== 0x5c &&\n bite !== 0x7e\n ) {\n // Unset the iso-2022-jp output flag and return a code point\n // whose value is byte.\n iso2022jp_output_flag = false;\n return bite;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.Katakana:\n // Katakana\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x21 to 0x5F\n if (inRange(bite, 0x21, 0x5f)) {\n // Unset the iso-2022-jp output flag and return a code point\n // whose value is 0xFF61 \u2212 0x21 + byte.\n iso2022jp_output_flag = false;\n return 0xff61 - 0x21 + bite;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.LeadByte:\n // Lead byte\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x21 to 0x7E\n if (inRange(bite, 0x21, 0x7e)) {\n // Unset the iso-2022-jp output flag, set iso-2022-jp lead\n // to byte, iso-2022-jp decoder state to trail byte, and\n // return continue.\n iso2022jp_output_flag = false;\n iso2022jp_lead = bite;\n iso2022jp_decoder_state = states.TrailByte;\n return null;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.TrailByte:\n // Trail byte\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return decoderError(fatal);\n }\n\n // 0x21 to 0x7E\n if (inRange(bite, 0x21, 0x7e)) {\n // 1. Set the iso-2022-jp decoder state to lead byte.\n iso2022jp_decoder_state = states.LeadByte;\n\n // 2. Let pointer be (iso-2022-jp lead \u2212 0x21) \u00D7 94 + byte \u2212 0x21.\n var pointer = (iso2022jp_lead - 0x21) * 94 + bite - 0x21;\n\n // 3. Let code point be the index code point for pointer in\n // index jis0208.\n var code_point = indexCodePointFor(pointer, index('jis0208'));\n\n // 4. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 5. Return a code point whose value is code point.\n return code_point;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Set the iso-2022-jp decoder state to lead byte, prepend\n // byte to stream, and return error.\n iso2022jp_decoder_state = states.LeadByte;\n stream.prepend(bite);\n return decoderError(fatal);\n }\n\n // Otherwise\n // Set iso-2022-jp decoder state to lead byte and return\n // error.\n iso2022jp_decoder_state = states.LeadByte;\n return decoderError(fatal);\n\n case states.EscapeStart:\n // Escape start\n\n // 1. If byte is either 0x24 or 0x28, set iso-2022-jp lead to\n // byte, iso-2022-jp decoder state to escape, and return\n // continue.\n if (bite === 0x24 || bite === 0x28) {\n iso2022jp_lead = bite;\n iso2022jp_decoder_state = states.Escape;\n return null;\n }\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Unset the iso-2022-jp output flag, set iso-2022-jp\n // decoder state to iso-2022-jp decoder output state, and\n // return error.\n iso2022jp_output_flag = false;\n iso2022jp_decoder_state = iso2022jp_decoder_output_state;\n return decoderError(fatal);\n\n case states.Escape:\n // Escape\n\n // 1. Let lead be iso-2022-jp lead and set iso-2022-jp lead to\n // 0x00.\n var lead = iso2022jp_lead;\n iso2022jp_lead = 0x00;\n\n // 2. Let state be null.\n var state = null;\n\n // 3. If lead is 0x28 and byte is 0x42, set state to ASCII.\n if (lead === 0x28 && bite === 0x42) state = states.ASCII;\n\n // 4. If lead is 0x28 and byte is 0x4A, set state to Roman.\n if (lead === 0x28 && bite === 0x4a) state = states.Roman;\n\n // 5. If lead is 0x28 and byte is 0x49, set state to Katakana.\n if (lead === 0x28 && bite === 0x49) state = states.Katakana;\n\n // 6. If lead is 0x24 and byte is either 0x40 or 0x42, set\n // state to lead byte.\n if (lead === 0x24 && (bite === 0x40 || bite === 0x42)) state = states.LeadByte;\n\n // 7. If state is non-null, run these substeps:\n if (state !== null) {\n // 1. Set iso-2022-jp decoder state and iso-2022-jp decoder\n // output state to states.\n iso2022jp_decoder_state = iso2022jp_decoder_state = state;\n\n // 2. Let output flag be the iso-2022-jp output flag.\n var output_flag = iso2022jp_output_flag;\n\n // 3. Set the iso-2022-jp output flag.\n iso2022jp_output_flag = true;\n\n // 4. Return continue, if output flag is unset, and error\n // otherwise.\n return !output_flag ? null : decoderError(fatal);\n }\n\n // 8. Prepend lead and byte to stream.\n stream.prepend([lead, bite]);\n\n // 9. Unset the iso-2022-jp output flag, set iso-2022-jp\n // decoder state to iso-2022-jp decoder output state and\n // return error.\n iso2022jp_output_flag = false;\n iso2022jp_decoder_state = iso2022jp_decoder_output_state;\n return decoderError(fatal);\n }\n };\n}\n\n// 13.2.2 iso-2022-jp encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction ISO2022JPEncoder(options) {\n var fatal = options.fatal;\n // iso-2022-jp's encoder has an associated iso-2022-jp encoder\n // state which is one of ASCII, Roman, and jis0208 (initially\n // ASCII).\n /** @enum */\n var states = {\n ASCII: 0,\n Roman: 1,\n jis0208: 2\n };\n var /** @type {number} */ iso2022jp_state = states.ASCII;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream and iso-2022-jp encoder\n // state is not ASCII, prepend code point to stream, set\n // iso-2022-jp encoder state to ASCII, and return three bytes\n // 0x1B 0x28 0x42.\n if (code_point === end_of_stream && iso2022jp_state !== states.ASCII) {\n stream.prepend(code_point);\n iso2022jp_state = states.ASCII;\n return [0x1b, 0x28, 0x42];\n }\n\n // 2. If code point is end-of-stream and iso-2022-jp encoder\n // state is ASCII, return finished.\n if (code_point === end_of_stream && iso2022jp_state === states.ASCII) return finished;\n\n // 3. If ISO-2022-JP encoder state is ASCII or Roman, and code\n // point is U+000E, U+000F, or U+001B, return error with U+FFFD.\n if (\n (iso2022jp_state === states.ASCII || iso2022jp_state === states.Roman) &&\n (code_point === 0x000e || code_point === 0x000f || code_point === 0x001b)\n ) {\n return encoderError(0xfffd);\n }\n\n // 4. If iso-2022-jp encoder state is ASCII and code point is an\n // ASCII code point, return a byte whose value is code point.\n if (iso2022jp_state === states.ASCII && isASCIICodePoint(code_point)) return code_point;\n\n // 5. If iso-2022-jp encoder state is Roman and code point is an\n // ASCII code point, excluding U+005C and U+007E, or is U+00A5\n // or U+203E, run these substeps:\n if (\n iso2022jp_state === states.Roman &&\n ((isASCIICodePoint(code_point) && code_point !== 0x005c && code_point !== 0x007e) ||\n code_point == 0x00a5 ||\n code_point == 0x203e)\n ) {\n // 1. If code point is an ASCII code point, return a byte\n // whose value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 2. If code point is U+00A5, return byte 0x5C.\n if (code_point === 0x00a5) return 0x5c;\n\n // 3. If code point is U+203E, return byte 0x7E.\n if (code_point === 0x203e) return 0x7e;\n }\n\n // 6. If code point is an ASCII code point, and iso-2022-jp\n // encoder state is not ASCII, prepend code point to stream, set\n // iso-2022-jp encoder state to ASCII, and return three bytes\n // 0x1B 0x28 0x42.\n if (isASCIICodePoint(code_point) && iso2022jp_state !== states.ASCII) {\n stream.prepend(code_point);\n iso2022jp_state = states.ASCII;\n return [0x1b, 0x28, 0x42];\n }\n\n // 7. If code point is either U+00A5 or U+203E, and iso-2022-jp\n // encoder state is not Roman, prepend code point to stream, set\n // iso-2022-jp encoder state to Roman, and return three bytes\n // 0x1B 0x28 0x4A.\n if ((code_point === 0x00a5 || code_point === 0x203e) && iso2022jp_state !== states.Roman) {\n stream.prepend(code_point);\n iso2022jp_state = states.Roman;\n return [0x1b, 0x28, 0x4a];\n }\n\n // 8. If code point is U+2212, set it to U+FF0D.\n if (code_point === 0x2212) code_point = 0xff0d;\n\n // 9. Let pointer be the index pointer for code point in index\n // jis0208.\n var pointer = indexPointerFor(code_point, index('jis0208'));\n\n // 10. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 11. If iso-2022-jp encoder state is not jis0208, prepend code\n // point to stream, set iso-2022-jp encoder state to jis0208,\n // and return three bytes 0x1B 0x24 0x42.\n if (iso2022jp_state !== states.jis0208) {\n stream.prepend(code_point);\n iso2022jp_state = states.jis0208;\n return [0x1b, 0x24, 0x42];\n }\n\n // 12. Let lead be floor(pointer / 94) + 0x21.\n var lead = floor(pointer / 94) + 0x21;\n\n // 13. Let trail be pointer % 94 + 0x21.\n var trail = (pointer % 94) + 0x21;\n\n // 14. Return two bytes whose values are lead and trail.\n return [lead, trail];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['ISO-2022-JP'] = function (options) {\n return new ISO2022JPEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['ISO-2022-JP'] = function (options) {\n return new ISO2022JPDecoder(options);\n};\n\n// 13.3 Shift_JIS\n\n// 13.3.1 Shift_JIS decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction ShiftJISDecoder(options) {\n var fatal = options.fatal;\n // Shift_JIS's decoder has an associated Shift_JIS lead (initially\n // 0x00).\n var /** @type {number} */ Shift_JIS_lead = 0x00;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and Shift_JIS lead is not 0x00,\n // set Shift_JIS lead to 0x00 and return error.\n if (bite === end_of_stream && Shift_JIS_lead !== 0x00) {\n Shift_JIS_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and Shift_JIS lead is 0x00,\n // return finished.\n if (bite === end_of_stream && Shift_JIS_lead === 0x00) return finished;\n\n // 3. If Shift_JIS lead is not 0x00, let lead be Shift_JIS lead,\n // let pointer be null, set Shift_JIS lead to 0x00, and then run\n // these substeps:\n if (Shift_JIS_lead !== 0x00) {\n var lead = Shift_JIS_lead;\n var pointer = null;\n Shift_JIS_lead = 0x00;\n\n // 1. Let offset be 0x40, if byte is less than 0x7F, and 0x41\n // otherwise.\n var offset = bite < 0x7f ? 0x40 : 0x41;\n\n // 2. Let lead offset be 0x81, if lead is less than 0xA0, and\n // 0xC1 otherwise.\n var lead_offset = lead < 0xa0 ? 0x81 : 0xc1;\n\n // 3. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80\n // to 0xFC, inclusive, set pointer to (lead \u2212 lead offset) \u00D7\n // 188 + byte \u2212 offset.\n if (inRange(bite, 0x40, 0x7e) || inRange(bite, 0x80, 0xfc))\n pointer = (lead - lead_offset) * 188 + bite - offset;\n\n // 4. If pointer is in the range 8836 to 10715, inclusive,\n // return a code point whose value is 0xE000 \u2212 8836 + pointer.\n if (inRange(pointer, 8836, 10715)) return 0xe000 - 8836 + pointer;\n\n // 5. Let code point be null, if pointer is null, and the\n // index code point for pointer in index jis0208 otherwise.\n var code_point = pointer === null ? null : indexCodePointFor(pointer, index('jis0208'));\n\n // 6. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (code_point === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 7. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 8. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If byte is an ASCII byte or 0x80, return a code point\n // whose value is byte.\n if (isASCIIByte(bite) || bite === 0x80) return bite;\n\n // 5. If byte is in the range 0xA1 to 0xDF, inclusive, return a\n // code point whose value is 0xFF61 \u2212 0xA1 + byte.\n if (inRange(bite, 0xa1, 0xdf)) return 0xff61 - 0xa1 + bite;\n\n // 6. If byte is in the range 0x81 to 0x9F, inclusive, or 0xE0\n // to 0xFC, inclusive, set Shift_JIS lead to byte and return\n // continue.\n if (inRange(bite, 0x81, 0x9f) || inRange(bite, 0xe0, 0xfc)) {\n Shift_JIS_lead = bite;\n return null;\n }\n\n // 7. Return error.\n return decoderError(fatal);\n };\n}\n\n// 13.3.2 Shift_JIS encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction ShiftJISEncoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point or U+0080, return a\n // byte whose value is code point.\n if (isASCIICodePoint(code_point) || code_point === 0x0080) return code_point;\n\n // 3. If code point is U+00A5, return byte 0x5C.\n if (code_point === 0x00a5) return 0x5c;\n\n // 4. If code point is U+203E, return byte 0x7E.\n if (code_point === 0x203e) return 0x7e;\n\n // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,\n // return a byte whose value is code point \u2212 0xFF61 + 0xA1.\n if (inRange(code_point, 0xff61, 0xff9f)) return code_point - 0xff61 + 0xa1;\n\n // 6. If code point is U+2212, set it to U+FF0D.\n if (code_point === 0x2212) code_point = 0xff0d;\n\n // 7. Let pointer be the index Shift_JIS pointer for code point.\n var pointer = indexShiftJISPointerFor(code_point);\n\n // 8. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 9. Let lead be floor(pointer / 188).\n var lead = floor(pointer / 188);\n\n // 10. Let lead offset be 0x81, if lead is less than 0x1F, and\n // 0xC1 otherwise.\n var lead_offset = lead < 0x1f ? 0x81 : 0xc1;\n\n // 11. Let trail be pointer % 188.\n var trail = pointer % 188;\n\n // 12. Let offset be 0x40, if trail is less than 0x3F, and 0x41\n // otherwise.\n var offset = trail < 0x3f ? 0x40 : 0x41;\n\n // 13. Return two bytes whose values are lead + lead offset and\n // trail + offset.\n return [lead + lead_offset, trail + offset];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['Shift_JIS'] = function (options) {\n return new ShiftJISEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['Shift_JIS'] = function (options) {\n return new ShiftJISDecoder(options);\n};\n\n//\n// 14. Legacy multi-byte Korean encodings\n//\n\n// 14.1 euc-kr\n\n// 14.1.1 euc-kr decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCKRDecoder(options) {\n var fatal = options.fatal;\n\n // euc-kr's decoder has an associated euc-kr lead (initially 0x00).\n var /** @type {number} */ euckr_lead = 0x00;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and euc-kr lead is not 0x00, set\n // euc-kr lead to 0x00 and return error.\n if (bite === end_of_stream && euckr_lead !== 0) {\n euckr_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and euc-kr lead is 0x00, return\n // finished.\n if (bite === end_of_stream && euckr_lead === 0) return finished;\n\n // 3. If euc-kr lead is not 0x00, let lead be euc-kr lead, let\n // pointer be null, set euc-kr lead to 0x00, and then run these\n // substeps:\n if (euckr_lead !== 0x00) {\n var lead = euckr_lead;\n var pointer = null;\n euckr_lead = 0x00;\n\n // 1. If byte is in the range 0x41 to 0xFE, inclusive, set\n // pointer to (lead \u2212 0x81) \u00D7 190 + (byte \u2212 0x41).\n if (inRange(bite, 0x41, 0xfe)) pointer = (lead - 0x81) * 190 + (bite - 0x41);\n\n // 2. Let code point be null, if pointer is null, and the\n // index code point for pointer in index euc-kr otherwise.\n var code_point = pointer === null ? null : indexCodePointFor(pointer, index('euc-kr'));\n\n // 3. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (pointer === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 4. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 5. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 5. If byte is in the range 0x81 to 0xFE, inclusive, set\n // euc-kr lead to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n euckr_lead = bite;\n return null;\n }\n\n // 6. Return error.\n return decoderError(fatal);\n };\n}\n\n// 14.1.2 euc-kr encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCKREncoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Let pointer be the index pointer for code point in index\n // euc-kr.\n var pointer = indexPointerFor(code_point, index('euc-kr'));\n\n // 4. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 5. Let lead be floor(pointer / 190) + 0x81.\n var lead = floor(pointer / 190) + 0x81;\n\n // 6. Let trail be pointer % 190 + 0x41.\n var trail = (pointer % 190) + 0x41;\n\n // 7. Return two bytes whose values are lead and trail.\n return [lead, trail];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['EUC-KR'] = function (options) {\n return new EUCKREncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['EUC-KR'] = function (options) {\n return new EUCKRDecoder(options);\n};\n\n//\n// 15. Legacy miscellaneous encodings\n//\n\n// 15.1 replacement\n\n// Not needed - API throws RangeError\n\n// 15.2 Common infrastructure for utf-16be and utf-16le\n\n/**\n * @param {number} code_unit\n * @param {boolean} utf16be\n * @return {!Array.} bytes\n */\nfunction convertCodeUnitToBytes(code_unit, utf16be) {\n // 1. Let byte1 be code unit >> 8.\n var byte1 = code_unit >> 8;\n\n // 2. Let byte2 be code unit & 0x00FF.\n var byte2 = code_unit & 0x00ff;\n\n // 3. Then return the bytes in order:\n // utf-16be flag is set: byte1, then byte2.\n if (utf16be) return [byte1, byte2];\n // utf-16be flag is unset: byte2, then byte1.\n return [byte2, byte1];\n}\n\n// 15.2.1 shared utf-16 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {boolean} utf16_be True if big-endian, false if little-endian.\n * @param {{fatal: boolean}} options\n */\nfunction UTF16Decoder(utf16_be, options) {\n var fatal = options.fatal;\n var /** @type {?number} */ utf16_lead_byte = null,\n /** @type {?number} */ utf16_lead_surrogate = null;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and either utf-16 lead byte or\n // utf-16 lead surrogate is not null, set utf-16 lead byte and\n // utf-16 lead surrogate to null, and return error.\n if (bite === end_of_stream && (utf16_lead_byte !== null || utf16_lead_surrogate !== null)) {\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and utf-16 lead byte and utf-16\n // lead surrogate are null, return finished.\n if (bite === end_of_stream && utf16_lead_byte === null && utf16_lead_surrogate === null) {\n return finished;\n }\n\n // 3. If utf-16 lead byte is null, set utf-16 lead byte to byte\n // and return continue.\n if (utf16_lead_byte === null) {\n utf16_lead_byte = bite;\n return null;\n }\n\n // 4. Let code unit be the result of:\n var code_unit;\n if (utf16_be) {\n // utf-16be decoder flag is set\n // (utf-16 lead byte << 8) + byte.\n code_unit = (utf16_lead_byte << 8) + bite;\n } else {\n // utf-16be decoder flag is unset\n // (byte << 8) + utf-16 lead byte.\n code_unit = (bite << 8) + utf16_lead_byte;\n }\n // Then set utf-16 lead byte to null.\n utf16_lead_byte = null;\n\n // 5. If utf-16 lead surrogate is not null, let lead surrogate\n // be utf-16 lead surrogate, set utf-16 lead surrogate to null,\n // and then run these substeps:\n if (utf16_lead_surrogate !== null) {\n var lead_surrogate = utf16_lead_surrogate;\n utf16_lead_surrogate = null;\n\n // 1. If code unit is in the range U+DC00 to U+DFFF,\n // inclusive, return a code point whose value is 0x10000 +\n // ((lead surrogate \u2212 0xD800) << 10) + (code unit \u2212 0xDC00).\n if (inRange(code_unit, 0xdc00, 0xdfff)) {\n return 0x10000 + (lead_surrogate - 0xd800) * 0x400 + (code_unit - 0xdc00);\n }\n\n // 2. Prepend the sequence resulting of converting code unit\n // to bytes using utf-16be decoder flag to stream and return\n // error.\n stream.prepend(convertCodeUnitToBytes(code_unit, utf16_be));\n return decoderError(fatal);\n }\n\n // 6. If code unit is in the range U+D800 to U+DBFF, inclusive,\n // set utf-16 lead surrogate to code unit and return continue.\n if (inRange(code_unit, 0xd800, 0xdbff)) {\n utf16_lead_surrogate = code_unit;\n return null;\n }\n\n // 7. If code unit is in the range U+DC00 to U+DFFF, inclusive,\n // return error.\n if (inRange(code_unit, 0xdc00, 0xdfff)) return decoderError(fatal);\n\n // 8. Return code point code unit.\n return code_unit;\n };\n}\n\n// 15.2.2 shared utf-16 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {boolean} utf16_be True if big-endian, false if little-endian.\n * @param {{fatal: boolean}} options\n */\nfunction UTF16Encoder(utf16_be, options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is in the range U+0000 to U+FFFF, inclusive,\n // return the sequence resulting of converting code point to\n // bytes using utf-16be encoder flag.\n if (inRange(code_point, 0x0000, 0xffff)) return convertCodeUnitToBytes(code_point, utf16_be);\n\n // 3. Let lead be ((code point \u2212 0x10000) >> 10) + 0xD800,\n // converted to bytes using utf-16be encoder flag.\n var lead = convertCodeUnitToBytes(((code_point - 0x10000) >> 10) + 0xd800, utf16_be);\n\n // 4. Let trail be ((code point \u2212 0x10000) & 0x3FF) + 0xDC00,\n // converted to bytes using utf-16be encoder flag.\n var trail = convertCodeUnitToBytes(((code_point - 0x10000) & 0x3ff) + 0xdc00, utf16_be);\n\n // 5. Return a byte sequence of lead followed by trail.\n return lead.concat(trail);\n };\n}\n\n// 15.3 utf-16be\n// 15.3.1 utf-16be decoder\n/** @param {{fatal: boolean}} options */\nencoders['UTF-16BE'] = function (options) {\n return new UTF16Encoder(true, options);\n};\n// 15.3.2 utf-16be encoder\n/** @param {{fatal: boolean}} options */\ndecoders['UTF-16BE'] = function (options) {\n return new UTF16Decoder(true, options);\n};\n\n// 15.4 utf-16le\n// 15.4.1 utf-16le decoder\n/** @param {{fatal: boolean}} options */\nencoders['UTF-16LE'] = function (options) {\n return new UTF16Encoder(false, options);\n};\n// 15.4.2 utf-16le encoder\n/** @param {{fatal: boolean}} options */\ndecoders['UTF-16LE'] = function (options) {\n return new UTF16Decoder(false, options);\n};\n\n// 15.5 x-user-defined\n\n// 15.5.1 x-user-defined decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction XUserDefinedDecoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream, return finished.\n if (bite === end_of_stream) return finished;\n\n // 2. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 3. Return a code point whose value is 0xF780 + byte \u2212 0x80.\n return 0xf780 + bite - 0x80;\n };\n}\n\n// 15.5.2 x-user-defined encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction XUserDefinedEncoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1.If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. If code point is in the range U+F780 to U+F7FF, inclusive,\n // return a byte whose value is code point \u2212 0xF780 + 0x80.\n if (inRange(code_point, 0xf780, 0xf7ff)) return code_point - 0xf780 + 0x80;\n\n // 4. Return error with code point.\n return encoderError(code_point);\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['x-user-defined'] = function (options) {\n return new XUserDefinedEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['x-user-defined'] = function (options) {\n return new XUserDefinedDecoder(options);\n};\n\n// FORK\n// if (!globalThis['TextEncoder']) globalThis['TextEncoder'] = TextEncoder;\n// if (!globalThis['TextDecoder']) globalThis['TextDecoder'] = TextDecoder;\n// babel.config.js skip transpiling files in `libs/`\n// module.exports = {TextEncoder, TextDecoder};\nexport {TextEncoder, TextDecoder};\n", "// btoa, atob polyfills for Node.js\n// Note: The atob and btoa functions (not just the polyfills!) are not unicode safe\n// But still useful for unit testing\n\nexport function atob(string) {\n return Buffer.from(string).toString('base64');\n}\n\nexport function btoa(base64) {\n return Buffer.from(base64, 'base64').toString('ascii');\n}\n", "// Use stackgl modules for DOM-less reading and writing of images\n\nimport savePixels from 'save-pixels';\nimport ndarray from 'ndarray';\nimport {bufferToArrayBuffer} from '../buffer/to-array-buffer.node';\n\n/**\n * Returns data bytes representing a compressed image in PNG or JPG format,\n * This data can be saved using file system (f) methods or\n * used in a request.\n * @param image to save\n * @param options\n * @param options.type='png' - png, jpg or image/png, image/jpg are valid\n * @param options.dataURI - Whether to include a data URI header\n * @return {*} bytes\n */\nexport function encodeImageToStreamNode(\n image: {data: any; width: number; height: number},\n options: {type?: string; dataURI?: string}\n) {\n // Support MIME type strings\n const type = options.type ? options.type.replace('image/', '') : 'jpeg';\n const pixels = ndarray(image.data, [image.width, image.height, 4], [4, image.width * 4, 1], 0);\n\n // Note: savePixels returns a stream\n return savePixels(pixels, type, options);\n}\n\nexport function encodeImageNode(image, options) {\n const imageStream = encodeImageToStreamNode(image, options);\n\n return new Promise((resolve) => {\n const buffers: any[] = [];\n imageStream.on('data', (buffer) => buffers.push(buffer));\n // TODO - convert to arraybuffer?\n imageStream.on('end', () => {\n const buffer = Buffer.concat(buffers);\n resolve(bufferToArrayBuffer(buffer));\n });\n });\n}\n", "export function bufferToArrayBuffer(buffer) {\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (Buffer.isBuffer(buffer)) {\n const typedArray = new Uint8Array(buffer);\n return typedArray.buffer;\n }\n return buffer;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport getPixels from 'get-pixels';\n\n/** Declares which image format mime types this loader polyfill supports */\nexport const NODE_FORMAT_SUPPORT = ['image/png', 'image/jpeg', 'image/gif'];\n\n// Note: These types are also defined in @loaders.gl/images and need to be kept in sync\ntype NDArray = {\n shape: number[];\n data: Uint8Array;\n width: number;\n height: number;\n components: number;\n layers: number[];\n};\n\nexport async function parseImageNode(arrayBuffer: ArrayBuffer, mimeType: string): Promise {\n if (!mimeType) {\n throw new Error('MIMEType is required to parse image under Node.js');\n }\n\n const buffer = arrayBuffer instanceof Buffer ? arrayBuffer : Buffer.from(arrayBuffer);\n const ndarray = await getPixelsAsync(buffer, mimeType);\n return ndarray;\n}\n\n// TODO - check if getPixels callback is asynchronous if provided with buffer input\n// if not, parseImage can be a sync function\nfunction getPixelsAsync(buffer: Buffer, mimeType: string): Promise {\n return new Promise((resolve) =>\n getPixels(buffer, mimeType, (err, ndarray) => {\n if (err) {\n throw err;\n }\n\n const shape = [...ndarray.shape];\n const layers = ndarray.shape.length === 4 ? ndarray.shape.shift() : 1;\n const data = ndarray.data instanceof Buffer ? new Uint8Array(ndarray.data) : ndarray.data;\n\n // extract width/height etc\n resolve({\n shape,\n data,\n width: ndarray.shape[0],\n height: ndarray.shape[1],\n components: ndarray.shape[2],\n // TODO - error\n layers: layers ? [layers] : []\n });\n })\n );\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n\n/**\n * TODO - unpkg.com doesn't seem to have a `latest` specifier for alpha releases...\n * 'beta' on beta branch, 'latest' on prod branch\n */\nexport const NPM_TAG = 'latest';\n\ndeclare let __VERSION__: string;\n\nfunction getVersion() {\n if (!globalThis._loadersgl_?.version) {\n globalThis._loadersgl_ = globalThis._loadersgl_ || {};\n // __VERSION__ is injected by babel-plugin-version-inline\n if (typeof __VERSION__ === 'undefined') {\n // eslint-disable-next-line\n console.warn(\n 'loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.'\n );\n globalThis._loadersgl_.version = NPM_TAG;\n } else {\n globalThis._loadersgl_.version = __VERSION__;\n }\n }\n\n return globalThis._loadersgl_.version;\n}\n\nexport const VERSION = getVersion();\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\n\n/** Throws an `Error` with the optional `message` if `condition` is falsy */\nexport function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(message || 'loaders.gl assertion failed.');\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\nconst self_: {[key: string]: any} = globals.self || globals.window || globals.global || {};\nconst window_: {[key: string]: any} = globals.window || globals.self || globals.global || {};\nconst global_: {[key: string]: any} = globals.global || globals.self || globals.window || {};\nconst document_: {[key: string]: any} = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\n/** true if running in the browser, false if running in Node.js */\nexport const isBrowser: boolean =\n // @ts-ignore process.browser\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n\n/** true if running on a worker thread */\nexport const isWorker: boolean = typeof importScripts === 'function';\n\n/** true if running on a mobile device */\nexport const isMobile: boolean =\n typeof window !== 'undefined' && typeof window.orientation !== 'undefined';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\n\n/** Version of Node.js if running under Node, otherwise 0 */\nexport const nodeVersion: number = (matches && parseFloat(matches[1])) || 0;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport * as WorkerThreads from 'worker_threads';\nexport * from 'worker_threads';\nexport const parentPort = WorkerThreads?.parentPort;\nexport const NodeWorker = WorkerThreads.Worker;\nexport type NodeWorkerType = WorkerThreads.Worker;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// NOTE - there is a copy of this function is both in core and loader-utils\n// core does not need all the utils in loader-utils, just this one.\n\n/**\n * Returns an array of Transferrable objects that can be used with postMessage\n * https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage\n * @param object data to be sent via postMessage\n * @param recursive - not for application use\n * @param transfers - not for application use\n * @returns a transfer list that can be passed to postMessage\n */\nexport function getTransferList(\n object: any,\n recursive: boolean = true,\n transfers?: Set\n): Transferable[] {\n // Make sure that items in the transfer list is unique\n const transfersSet = transfers || new Set();\n\n if (!object) {\n // ignore\n } else if (isTransferable(object)) {\n transfersSet.add(object);\n } else if (isTransferable(object.buffer)) {\n // Typed array\n transfersSet.add(object.buffer);\n } else if (ArrayBuffer.isView(object)) {\n // object is a TypeArray viewing into a SharedArrayBuffer (not transferable)\n // Do not iterate through the content in this case\n } else if (recursive && typeof object === 'object') {\n for (const key in object) {\n // Avoid perf hit - only go one level deep\n getTransferList(object[key], recursive, transfersSet);\n }\n }\n\n // If transfers is defined, is internal recursive call\n // Otherwise it's called by the user\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Transferable\nfunction isTransferable(object: unknown) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n return true;\n }\n // @ts-ignore\n if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\n\n/**\n * Recursively drop non serializable values like functions and regexps.\n * @param object\n */\nexport function getTransferListForWriter(object: object | null): object {\n if (object === null) {\n return {};\n }\n const clone = Object.assign({}, object);\n\n Object.keys(clone).forEach((key) => {\n // Typed Arrays and Arrays are passed with no change\n if (\n typeof object[key] === 'object' &&\n !ArrayBuffer.isView(object[key]) &&\n !(object[key] instanceof Array)\n ) {\n clone[key] = getTransferListForWriter(object[key]);\n } else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {\n clone[key] = {};\n } else {\n clone[key] = object[key];\n }\n });\n\n return clone;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {WorkerMessageData, WorkerMessageType, WorkerMessagePayload} from '../../types';\nimport {getTransferList} from '../worker-utils/get-transfer-list';\n// import type {TransferListItem} from '../node/worker_threads';\nimport {parentPort} from '../node/worker_threads';\n\ntype TransferListItem = any;\n\n/** Vile hack to defeat over-zealous bundlers from stripping out the require */\nasync function getParentPort() {\n // const isNode = globalThis.process;\n // let parentPort;\n // try {\n // // prettier-ignore\n // eval('globalThis.parentPort = require(\\'worker_threads\\').parentPort'); // eslint-disable-line no-eval\n // parentPort = globalThis.parentPort;\n // } catch {\n // try {\n // // prettier-ignore\n // eval('globalThis.workerThreadsPromise = import(\\'worker_threads\\')'); // eslint-disable-line no-eval\n // const workerThreads = await globalThis.workerThreadsPromise;\n // parentPort = workerThreads.parentPort;\n // } catch (error) {\n // console.error((error as Error).message); // eslint-disable-line no-console\n // }\n // }\n return parentPort;\n}\n\nconst onMessageWrapperMap = new Map();\n\n/**\n * Type safe wrapper for worker code\n */\nexport default class WorkerBody {\n /** Check that we are actually in a worker thread */\n static async inWorkerThread(): Promise {\n return typeof self !== 'undefined' || Boolean(await getParentPort());\n }\n\n /*\n * (type: WorkerMessageType, payload: WorkerMessagePayload) => any\n */\n static set onmessage(onMessage: (type: WorkerMessageType, payload: WorkerMessagePayload) => any) {\n async function handleMessage(message) {\n const parentPort = await getParentPort();\n // Confusingly the message itself also has a 'type' field which is always set to 'message'\n const {type, payload} = parentPort ? message : message.data;\n // if (!isKnownMessage(message)) {\n // return;\n // }\n onMessage(type, payload);\n }\n\n getParentPort().then((parentPort) => {\n if (parentPort) {\n parentPort.on('message', (message) => {\n handleMessage(message);\n });\n // if (message == 'exit') { parentPort.unref(); }\n // eslint-disable-next-line\n parentPort.on('exit', () => console.debug('Node worker closing'));\n } else {\n // eslint-disable-next-line no-restricted-globals\n globalThis.onmessage = handleMessage;\n }\n });\n }\n\n static async addEventListener(\n onMessage: (type: WorkerMessageType, payload: WorkerMessagePayload) => any\n ) {\n let onMessageWrapper = onMessageWrapperMap.get(onMessage);\n\n if (!onMessageWrapper) {\n onMessageWrapper = async (message: MessageEvent) => {\n if (!isKnownMessage(message)) {\n return;\n }\n\n const parentPort = await getParentPort();\n // Confusingly in the browser, the message itself also has a 'type' field which is always set to 'message'\n const {type, payload} = parentPort ? message : message.data;\n onMessage(type, payload);\n };\n }\n\n const parentPort = await getParentPort();\n if (parentPort) {\n console.error('not implemented'); // eslint-disable-line\n } else {\n globalThis.addEventListener('message', onMessageWrapper);\n }\n }\n\n static async removeEventListener(\n onMessage: (type: WorkerMessageType, payload: WorkerMessagePayload) => any\n ) {\n const onMessageWrapper = onMessageWrapperMap.get(onMessage);\n onMessageWrapperMap.delete(onMessage);\n const parentPort = await getParentPort();\n if (parentPort) {\n console.error('not implemented'); // eslint-disable-line\n } else {\n globalThis.removeEventListener('message', onMessageWrapper);\n }\n }\n\n /**\n * Send a message from a worker to creating thread (main thread)\n * @param type\n * @param payload\n */\n static async postMessage(type: WorkerMessageType, payload: WorkerMessagePayload): Promise {\n const data: WorkerMessageData = {source: 'loaders.gl', type, payload};\n // console.log('posting message', data);\n\n // Cast to Node compatible transfer list\n const transferList = getTransferList(payload) as TransferListItem[];\n\n const parentPort = await getParentPort();\n if (parentPort) {\n parentPort.postMessage(data, transferList);\n // console.log('posted message', data);\n } else {\n // @ts-expect-error Outside of worker scopes this call has a third parameter\n globalThis.postMessage(data, transferList);\n }\n }\n}\n\n// Filter out noise messages sent to workers\nfunction isKnownMessage(message: MessageEvent) {\n const {type, data} = message;\n return (\n type === 'message' &&\n data &&\n typeof data.source === 'string' &&\n data.source.startsWith('loaders.gl')\n );\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global importScripts */\nimport {isBrowser, isWorker} from '../env-utils/globals';\nimport {assert} from '../env-utils/assert';\nimport {VERSION} from '../env-utils/version';\n\nconst loadLibraryPromises: Record> = {}; // promises\n\n/**\n * Dynamically loads a library (\"module\")\n *\n * - wasm library: Array buffer is returned\n * - js library: Parse JS is returned\n *\n * Method depends on environment\n * - browser - script element is created and installed on document\n * - worker - eval is called on global context\n * - node - file is required\n *\n * @param libraryUrl\n * @param moduleName\n * @param options\n */\nexport async function loadLibrary(\n libraryUrl: string,\n moduleName: string | null = null,\n options: object = {},\n libraryName: string | null = null\n): Promise {\n if (moduleName) {\n libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);\n }\n // Ensure libraries are only loaded once\n\n loadLibraryPromises[libraryUrl] =\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);\n return await loadLibraryPromises[libraryUrl];\n}\n\n// TODO - sort out how to resolve paths for main/worker and dev/prod\nexport function getLibraryUrl(\n library: string,\n moduleName?: string,\n options: any = {},\n libraryName: string | null = null\n): string {\n // Check if already a URL\n if (!options.useLocalLibraries && library.startsWith('http')) {\n return library;\n }\n\n libraryName = libraryName || library;\n\n // Allow application to import and supply libraries through `options.modules`\n // TODO - See js-module-utils in loader-utils\n const modules = options.modules || {};\n if (modules[libraryName]) {\n return modules[libraryName];\n }\n\n // Load from local files, not from CDN scripts in Node.js\n // TODO - needs to locate the modules directory when installed!\n if (!isBrowser) {\n return `modules/${moduleName}/dist/libs/${libraryName}`;\n }\n\n // In browser, load from external scripts\n if (options.CDN) {\n assert(options.CDN.startsWith('http'));\n return `${options.CDN}/${moduleName}@${VERSION}/dist/libs/${libraryName}`;\n }\n\n // TODO - loading inside workers requires paths relative to worker script location...\n if (isWorker) {\n return `../src/libs/${libraryName}`;\n }\n\n return `modules/${moduleName}/src/libs/${libraryName}`;\n}\n\nasync function loadLibraryFromFile(libraryUrl: string): Promise {\n if (libraryUrl.endsWith('wasm')) {\n return await loadAsArrayBuffer(libraryUrl);\n }\n\n if (!isBrowser) {\n // TODO - Node doesn't yet support dynamic import from https URLs\n // try {\n // return await import(libraryUrl);\n // } catch (error) {\n // console.error(error);\n // }\n try {\n const {requireFromFile} = globalThis.loaders || {};\n return await requireFromFile?.(libraryUrl);\n } catch (error) {\n console.error(error); // eslint-disable-line no-console\n return null;\n }\n }\n if (isWorker) {\n return importScripts(libraryUrl);\n }\n // TODO - fix - should be more secure than string parsing since observes CORS\n // if (isBrowser) {\n // return await loadScriptFromFile(libraryUrl);\n // }\n\n const scriptSource = await loadAsText(libraryUrl);\n return loadLibraryFromString(scriptSource, libraryUrl);\n}\n\n/*\nasync function loadScriptFromFile(libraryUrl) {\n const script = document.createElement('script');\n script.src = libraryUrl;\n return await new Promise((resolve, reject) => {\n script.onload = data => {\n resolve(data);\n };\n script.onerror = reject;\n });\n}\n*/\n\n// TODO - Needs security audit...\n// - Raw eval call\n// - Potentially bypasses CORS\n// Upside is that this separates fetching and parsing\n// we could create a`LibraryLoader` or`ModuleLoader`\nfunction loadLibraryFromString(scriptSource: string, id: string): null | any {\n if (!isBrowser) {\n const {requireFromString} = globalThis.loaders || {};\n return requireFromString?.(scriptSource, id);\n }\n\n if (isWorker) {\n // Use lvalue trick to make eval run in global scope\n eval.call(globalThis, scriptSource); // eslint-disable-line no-eval\n // https://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript\n // http://perfectionkills.com/global-eval-what-are-the-options/\n return null;\n }\n\n const script = document.createElement('script');\n script.id = id;\n // most browsers like a separate text node but some throw an error. The second method covers those.\n try {\n script.appendChild(document.createTextNode(scriptSource));\n } catch (e) {\n script.text = scriptSource;\n }\n document.body.appendChild(script);\n return null;\n}\n\n// TODO - technique for module injection into worker, from THREE.DracoLoader...\n/*\nfunction combineWorkerWithLibrary(worker, jsContent) {\n var fn = wWorker.toString();\n var body = [\n '// injected',\n jsContent,\n '',\n '// worker',\n fn.substring(fn.indexOf('{') + 1, fn.lastIndexOf('}'))\n ].join('\\n');\n this.workerSourceURL = URL.createObjectURL(new Blob([body]));\n}\n*/\n\nasync function loadAsArrayBuffer(url: string): Promise {\n const {readFileAsArrayBuffer} = globalThis.loaders || {};\n if (isBrowser || !readFileAsArrayBuffer || url.startsWith('http')) {\n const response = await fetch(url);\n return await response.arrayBuffer();\n }\n return await readFileAsArrayBuffer(url);\n}\n\n/**\n * Load a file from local file system\n * @param filename\n * @returns\n */\nasync function loadAsText(url: string): Promise {\n const {readFileAsText} = globalThis.loaders || {};\n if (isBrowser || !readFileAsText || url.startsWith('http')) {\n const response = await fetch(url);\n return await response.text();\n }\n return await readFileAsText(url);\n}\n", "/* eslint-disable no-restricted-globals */\nimport type {LoaderWithParser, LoaderOptions, LoaderContext} from '../../loader-types';\nimport {WorkerBody} from '@loaders.gl/worker-utils';\n// import {validateLoaderVersion} from './validate-loader-version';\n\nlet requestId = 0;\n\n/**\n * Set up a WebWorkerGlobalScope to talk with the main thread\n * @param loader\n */\nexport async function createLoaderWorker(loader: LoaderWithParser) {\n // Check that we are actually in a worker thread\n if (!(await WorkerBody.inWorkerThread())) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload) => {\n switch (type) {\n case 'process':\n try {\n // validateLoaderVersion(loader, data.source.split('@')[1]);\n\n const {input, options = {}, context = {}} = payload;\n\n const result = await parseData({\n loader,\n arrayBuffer: input,\n options,\n // @ts-expect-error fetch missing\n context: {\n ...context,\n _parse: parseOnMainThread\n }\n });\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n}\n\nfunction parseOnMainThread(\n arrayBuffer: ArrayBuffer,\n loader: any,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise {\n return new Promise((resolve, reject) => {\n const id = requestId++;\n\n /**\n */\n const onMessage = (type, payload) => {\n if (payload.id !== id) {\n // not ours\n return;\n }\n\n switch (type) {\n case 'done':\n WorkerBody.removeEventListener(onMessage);\n resolve(payload.result);\n break;\n\n case 'error':\n WorkerBody.removeEventListener(onMessage);\n reject(payload.error);\n break;\n\n default:\n // ignore\n }\n };\n\n WorkerBody.addEventListener(onMessage);\n\n // Ask the main thread to decode data\n const payload = {id, input: arrayBuffer, options};\n WorkerBody.postMessage('process', payload);\n });\n}\n\n// TODO - Support byteOffset and byteLength (enabling parsing of embedded binaries without copies)\n// TODO - Why not support async loader.parse* funcs here?\n// TODO - Why not reuse a common function instead of reimplementing loader.parse* selection logic? Keeping loader small?\n// TODO - Lack of appropriate parser functions can be detected when we create worker, no need to wait until parse\nasync function parseData({\n loader,\n arrayBuffer,\n options,\n context\n}: {\n loader: LoaderWithParser;\n arrayBuffer: ArrayBuffer;\n options: LoaderOptions;\n context: LoaderContext;\n}) {\n let data;\n let parser;\n if (loader.parseSync || loader.parse) {\n data = arrayBuffer;\n parser = loader.parseSync || loader.parse;\n } else if (loader.parseTextSync) {\n const textDecoder = new TextDecoder();\n data = textDecoder.decode(arrayBuffer);\n parser = loader.parseTextSync;\n } else {\n throw new Error(`Could not load data with ${loader.name} loader`);\n }\n\n // TODO - proper merge in of loader options...\n options = {\n ...options,\n modules: (loader && loader.options && loader.options.modules) || {},\n worker: false\n };\n\n return await parser(data, {...options}, context, loader);\n}\n", "import {TypedArray} from '../../types';\n\n/**\n * compare two binary arrays for equality\n * @param a\n * @param b\n * @param byteLength\n */\nexport function compareArrayBuffers(\n arrayBuffer1: ArrayBuffer,\n arrayBuffer2: ArrayBuffer,\n byteLength?: number\n): boolean {\n byteLength = byteLength || arrayBuffer1.byteLength;\n if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {\n return false;\n }\n const array1 = new Uint8Array(arrayBuffer1);\n const array2 = new Uint8Array(arrayBuffer2);\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers from arguments\n * @return A concatenated ArrayBuffer\n */\nexport function concatenateArrayBuffers(...sources: (ArrayBuffer | Uint8Array)[]): ArrayBuffer {\n return concatenateArrayBuffersFromArray(sources);\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers from array\n * @return A concatenated ArrayBuffer\n */\nexport function concatenateArrayBuffersFromArray(\n sources: (ArrayBuffer | Uint8Array)[]\n): ArrayBuffer {\n // Make sure all inputs are wrapped in typed arrays\n const sourceArrays = sources.map((source2) =>\n source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2\n );\n\n // Get length of all inputs\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n\n // Allocate array with space for all inputs\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n // We work with ArrayBuffers, discard the typed array wrapper\n return result.buffer;\n}\n\n/**\n * Concatenate arbitrary count of typed arrays\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays\n * @param - list of arrays. All arrays should be the same type\n * @return A concatenated TypedArray\n */\nexport function concatenateTypedArrays(...typedArrays: T[]): T {\n // @ts-ignore\n const arrays = typedArrays as TypedArray[];\n // @ts-ignore\n const TypedArrayConstructor = (arrays && arrays.length > 1 && arrays[0].constructor) || null;\n if (!TypedArrayConstructor) {\n throw new Error(\n '\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types'\n );\n }\n\n const sumLength = arrays.reduce((acc, value) => acc + value.length, 0);\n // @ts-ignore typescript does not like dynamic constructors\n const result = new TypedArrayConstructor(sumLength);\n let offset = 0;\n for (const array of arrays) {\n result.set(array, offset);\n offset += array.length;\n }\n return result;\n}\n\n/**\n * Copy a view of an ArrayBuffer into new ArrayBuffer with byteOffset = 0\n * @param arrayBuffer\n * @param byteOffset\n * @param byteLength\n */\nexport function sliceArrayBuffer(\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n byteLength?: number\n): ArrayBuffer {\n const subArray =\n byteLength !== undefined\n ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength)\n : new Uint8Array(arrayBuffer).subarray(byteOffset);\n const arrayCopy = new Uint8Array(subArray);\n return arrayCopy.buffer;\n}\n", "import {concatenateArrayBuffers} from '../binary-utils/array-buffer-utils';\n\n// GENERAL UTILITIES\n\n/**\n * Iterate over async iterator, without resetting iterator if end is not reached\n * - forEach intentionally does not reset iterator if exiting loop prematurely\n * so that iteration can continue in a second loop\n * - It is recommended to use a standard for-await as last loop to ensure\n * iterator gets properly reset\n *\n * TODO - optimize using sync iteration if argument is an Iterable?\n *\n * @param iterator\n * @param visitor\n */\nexport async function forEach(iterator, visitor) {\n // eslint-disable-next-line\n while (true) {\n const {done, value} = await iterator.next();\n if (done) {\n iterator.return();\n return;\n }\n const cancel = visitor(value);\n if (cancel) {\n return;\n }\n }\n}\n\n// Breaking big data into iterable chunks, concatenating iterable chunks into big data objects\n\n/**\n * Concatenates all data chunks yielded by an (async) iterator\n * This function can e.g. be used to enable atomic parsers to work on (async) iterator inputs\n */\n\nexport async function concatenateArrayBuffersAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const arrayBuffers: ArrayBuffer[] = [];\n for await (const chunk of asyncIterator) {\n arrayBuffers.push(chunk);\n }\n return concatenateArrayBuffers(...arrayBuffers);\n}\n\nexport async function concatenateStringsAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const strings: string[] = [];\n for await (const chunk of asyncIterator) {\n strings.push(chunk);\n }\n return strings.join('');\n}\n", "// Simple file alias mechanisms for tests.\n\nlet pathPrefix = '';\nconst fileAliases: {[aliasPath: string]: string} = {};\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix: string): void {\n pathPrefix = prefix;\n}\n\n/*\n * Get the relative path prefix\n */\nexport function getPathPrefix(): string {\n return pathPrefix;\n}\n\n/**\n *\n * @param aliases\n *\n * Note: addAliases are an experimental export, they are only for testing of loaders.gl loaders\n * not intended as a generic aliasing mechanism\n */\nexport function addAliases(aliases: {[aliasPath: string]: string}): void {\n Object.assign(fileAliases, aliases);\n}\n\n/**\n * Resolves aliases and adds path-prefix to paths\n */\nexport function resolvePath(filename: string): string {\n for (const alias in fileAliases) {\n if (filename.startsWith(alias)) {\n const replacement = fileAliases[alias];\n filename = filename.replace(alias, replacement);\n }\n }\n if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n filename = `${pathPrefix}${filename}`;\n }\n return filename;\n}\n", "import type {ReadableFile, WritableFile, Stat} from '@loaders.gl/loader-utils';\nimport {resolvePath} from '@loaders.gl/loader-utils';\nimport fs from 'fs';\n\nexport class NodeFile implements ReadableFile, WritableFile {\n handle: number;\n size: number;\n bigsize: bigint;\n url: string;\n\n constructor(path: string, flags: 'r' | 'w' | 'wx' | 'a+', mode?: number) {\n path = resolvePath(path);\n this.handle = fs.openSync(path, flags, mode);\n // @ts-expect-error Nodew 20?\n const stats = fs.fstatSync(this.handle, {bigint: true});\n this.size = Number(stats.size);\n // @ts-expect-error\n this.bigsize = stats.size;\n this.url = path;\n }\n\n async close(): Promise {\n return new Promise((resolve, reject) => {\n fs.close(this.handle, (err) => (err ? reject(err) : resolve()));\n });\n }\n\n async truncate(length: number): Promise {\n return new Promise((resolve, reject) => {\n fs.ftruncate(this.handle, length, (err) => {\n if (err) {\n reject(err);\n } else {\n this.bigsize = BigInt(length);\n this.size = Number(this.bigsize);\n resolve();\n }\n });\n });\n }\n\n async append(data: Uint8Array): Promise {\n return new Promise((resolve, reject) => {\n fs.appendFile(this.handle, data, (err) => {\n if (err) {\n reject(err);\n } else {\n this.bigsize = this.bigsize + BigInt(data.length);\n this.size = Number(this.bigsize);\n resolve();\n }\n });\n });\n }\n\n async stat(): Promise {\n return await new Promise((resolve, reject) =>\n // @ts-expect-error bigint typings\n fs.fstat(this.handle, {bigint: true}, (err, info) => {\n const stats: Stat = {\n size: Number(info.size),\n bigsize: info.size,\n isDirectory: info.isDirectory()\n };\n if (err) {\n reject(err);\n } else {\n resolve(stats);\n }\n })\n );\n }\n\n async read(offset: number | bigint, length: number): Promise {\n const arrayBuffer = new ArrayBuffer(length);\n let bigOffset = BigInt(offset);\n\n let totalBytesRead = 0;\n const uint8Array = new Uint8Array(arrayBuffer);\n\n let position;\n // Read in loop until we get required number of bytes\n while (length > 0) {\n const bytesRead = await readBytes(this.handle, uint8Array, 0, length, bigOffset);\n\n // Check if end of file reached\n if (bytesRead === 0) {\n break;\n }\n\n totalBytesRead += bytesRead;\n bigOffset += BigInt(bytesRead);\n length -= bytesRead;\n\n // Advance position unless we are using built-in position advancement\n if (position !== undefined) {\n position += bytesRead;\n }\n }\n return totalBytesRead < length ? arrayBuffer.slice(0, totalBytesRead) : arrayBuffer;\n }\n\n async write(\n arrayBuffer: ArrayBuffer,\n offset: number | bigint = 0,\n length: number = arrayBuffer.byteLength\n ): Promise {\n return new Promise((resolve, reject) => {\n // TODO - Node.js doesn't offer write with bigint offsets???\n const nOffset = Number(offset);\n const uint8Array = new Uint8Array(arrayBuffer, Number(offset), length);\n fs.write(this.handle, uint8Array, 0, length, nOffset, (err, bytesWritten) =>\n err ? reject(err) : resolve(bytesWritten)\n );\n });\n }\n}\n\nasync function readBytes(\n fd: number,\n uint8Array: Uint8Array,\n offset: number,\n length: number,\n position: number | bigint | null\n): Promise {\n return await new Promise((resolve, reject) =>\n // @ts-expect-error bigint?\n fs.read(fd, uint8Array, offset, length, position, (err, bytesRead) =>\n err ? reject(err) : resolve(bytesRead)\n )\n );\n}\n\n// TODO - implement streaming write\n/*\nexport interface WriteStreamOptions {\n flags?: string;\n encoding?: 'utf8';\n fd?: number;\n mode?: number;\n autoClose?: boolean;\n start?: number;\n}\n\nexport class NodeStreamWritableFile implements WritableFile {\n outputStream: fs.WriteStream | Writable;\n\n constructor(pathOrStream: string | Writable, options?: WriteStreamOptions) {\n this.outputStream =\n typeof pathOrStream === 'string' ? fs.createWriteStream(pathOrStream, options) : pathOrStream;\n }\n\n async write(buffer: ArrayBuffer): Promise {\n return new Promise((resolve, reject) => {\n const uint8Array = new Uint8Array(buffer);\n this.outputStream.write(uint8Array, (err) => (err ? reject(err) : resolve()));\n });\n }\n\n async close(): Promise {\n if (this.outputStream instanceof fs.WriteStream) {\n return new Promise((resolve, reject) => {\n const stream = this.outputStream as fs.WriteStream;\n stream.close((err) => (err ? reject(err) : resolve()));\n });\n }\n }\n}\n*/\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Stat, RandomAccessFileSystem} from '@loaders.gl/loader-utils';\n// @ts-expect-error\nimport fsPromise from 'fs/promises';\nimport {NodeFile} from './node-file';\nimport {fetchNode} from './fetch-node';\n\n// import {fetchFile} from \"../fetch/fetch-file\"\n// import {selectLoader} from \"../api/select-loader\";\n\n/**\n * FileSystem pass-through for Node.js\n * Compatible with BrowserFileSystem.\n * @param options\n */\nexport class NodeFileSystem implements RandomAccessFileSystem {\n readable: boolean = true;\n writable: boolean = true;\n\n // implements FileSystem\n constructor() {}\n\n async readdir(dirname = '.', options?: {}): Promise {\n return await fsPromise.readdir(dirname, options);\n }\n\n async stat(path: string): Promise {\n const info = await fsPromise.stat(path, {bigint: true});\n return {\n size: Number(info.size),\n bigsize: info.size,\n isDirectory: info.isDirectory()\n };\n }\n\n async unlink(path: string): Promise {\n return await fsPromise.unlink(path);\n }\n\n async fetch(path: string, options: RequestInit): Promise {\n return await fetchNode(path, options);\n }\n\n // implements IRandomAccessFileSystem\n async openReadableFile(path: string, flags: 'r' = 'r'): Promise {\n return new NodeFile(path, flags);\n }\n\n async openWritableFile(path: string, flags: 'w' | 'wx' = 'w', mode?: any): Promise {\n return new NodeFile(path, flags, mode);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport fs from 'fs';\nimport {Readable} from 'stream';\nimport {resolvePath} from '@loaders.gl/loader-utils';\nimport {decompressReadStream} from './stream-utils.node';\n\nconst isBoolean = (x) => typeof x === 'boolean';\nconst isFunction = (x) => typeof x === 'function';\nconst isObject = (x) => x !== null && typeof x === 'object';\nconst isReadableNodeStream = (x) =>\n isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\n\n/**\n * Enables\n * @param url\n * @param options\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport async function fetchNode(url: string, options?: RequestInit): Promise {\n // Support `file://` protocol\n const FILE_PROTOCOL_REGEX = /^file:\\/\\//;\n url.replace(FILE_PROTOCOL_REGEX, '/');\n\n // Remove any query parameters, as they have no meaning\n let noqueryUrl = url.split('?')[0];\n noqueryUrl = resolvePath(noqueryUrl);\n\n const responseHeaders = new Headers();\n // Automatically decompress gzipped files with .gz extension\n if (url.endsWith('.gz')) {\n // url = url.slice(0, -3);\n responseHeaders['content-encoding'] = 'gzip';\n }\n if (url.endsWith('.br')) {\n // url = url.slice(0, -3);\n responseHeaders['content-encoding'] = 'br';\n }\n\n try {\n // Now open the stream\n const body = await new Promise((resolve, reject) => {\n // @ts-ignore\n const stream = fs.createReadStream(noqueryUrl, {encoding: null});\n stream.once('readable', () => resolve(stream));\n stream.on('error', (error) => reject(error));\n });\n\n let bodyStream: Readable = body;\n\n // Check for content-encoding and create a decompression stream\n if (isReadableNodeStream(body)) {\n bodyStream = decompressReadStream(body, responseHeaders);\n } else if (typeof body === 'string') {\n // @ts-expect-error\n bodyStream = Readable.from([new TextEncoder().encode(body)]);\n } else {\n // @ts-expect-error\n bodyStream = Readable.from([body || new ArrayBuffer(0)]);\n }\n\n const status = 200;\n const statusText = 'OK';\n const headers = getHeadersForFile(noqueryUrl);\n // @ts-expect-error\n const response = new Response(bodyStream, {headers, status, statusText});\n Object.defineProperty(response, 'url', {value: url});\n return response;\n } catch (error) {\n // console.error(error);\n const errorMessage = (error as Error).message;\n const status = 400;\n const statusText = errorMessage;\n const headers = {};\n const response = new Response(errorMessage, {headers, status, statusText});\n Object.defineProperty(response, 'url', {value: url});\n return response;\n }\n}\n\nfunction getHeadersForFile(noqueryUrl: string): Headers {\n const headers = {};\n\n // Fix up content length if we can for best progress experience\n if (!headers['content-length']) {\n const stats = fs.statSync(noqueryUrl);\n headers['content-length'] = stats.size;\n }\n\n // Automatically decompress gzipped files with .gz extension\n if (noqueryUrl.endsWith('.gz')) {\n noqueryUrl = noqueryUrl.slice(0, -3);\n headers['content-encoding'] = 'gzip';\n }\n\n return new Headers(headers);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport zlib from 'zlib';\nimport {Readable} from 'stream';\n\nconst isArrayBuffer = (x) => x && x instanceof ArrayBuffer;\nconst isBuffer = (x) => x && x instanceof Buffer;\n\n/**\n *\n */\nexport function decompressReadStream(readStream: Readable, headers?: Headers) {\n switch (headers?.get('content-encoding')) {\n case 'br':\n return readStream.pipe(zlib.createBrotliDecompress());\n case 'gzip':\n return readStream.pipe(zlib.createGunzip());\n case 'deflate':\n return readStream.pipe(zlib.createDeflate());\n default:\n // No compression or an unknown one, just return it as is\n return readStream;\n }\n}\n\n/**\n *\n * @param readStream\n * @returns\n */\nexport async function concatenateReadStream(readStream): Promise {\n const arrayBufferChunks: ArrayBuffer[] = [];\n\n return await new Promise((resolve, reject) => {\n readStream.on('error', (error) => reject(error));\n\n // Once the readable callback has been added, stream switches to \"flowing mode\"\n // In Node 10 (but not 12 and 14) this causes `data` and `end` to never be called unless we read data here\n readStream.on('readable', () => readStream.read());\n\n readStream.on('data', (chunk) => {\n if (typeof chunk === 'string') {\n reject(new Error('Read stream not binary'));\n }\n arrayBufferChunks.push(toArrayBuffer(chunk));\n });\n\n readStream.on('end', () => {\n const arrayBuffer = concatenateArrayBuffers(arrayBufferChunks);\n resolve(arrayBuffer);\n });\n });\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers\n * @return A concatenated ArrayBuffer\n * @note duplicates loader-utils since polyfills should be independent\n */\nexport function concatenateArrayBuffers(sources: (ArrayBuffer | Uint8Array)[]): ArrayBuffer {\n // Make sure all inputs are wrapped in typed arrays\n const sourceArrays = sources.map((source2) =>\n source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2\n );\n\n // Get length of all inputs\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n\n // Allocate array with space for all inputs\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n // We work with ArrayBuffers, discard the typed array wrapper\n return result.buffer;\n}\n\n/**\n * @param data\n * @todo Duplicate of core\n */\nexport function toArrayBuffer(data: unknown): ArrayBuffer {\n if (isArrayBuffer(data)) {\n return data as ArrayBuffer;\n }\n\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (isBuffer(data)) {\n // @ts-expect-error\n const typedArray = new Uint8Array(data);\n return typedArray.buffer;\n }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n return data.buffer;\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n // @ts-expect-error\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n // @ts-expect-error\n return data._toArrayBuffer();\n }\n\n throw new Error(`toArrayBuffer(${JSON.stringify(data, null, 2).slice(10)})`);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\n\ntype HashOptions = {\n modules?: {[moduleName: string]: any};\n crypto?: {\n onEnd?: (result: {hash: string}) => any;\n };\n};\n\n/** Abstract hash base class */\nexport abstract class Hash {\n abstract readonly name: string;\n abstract readonly options: HashOptions;\n\n constructor(options: HashOptions = {}) {\n this.hashBatches = this.hashBatches.bind(this);\n }\n\n async preload(): Promise {\n return;\n }\n\n abstract hash(arrayBuffer: ArrayBuffer, encoding: 'hex' | 'base64'): Promise;\n\n async *hashBatches(\n asyncIterator: AsyncIterable | Iterable,\n encoding: 'hex' | 'base64' = 'base64'\n ): AsyncIterable {\n const arrayBuffers: ArrayBuffer[] = [];\n for await (const arrayBuffer of asyncIterator) {\n arrayBuffers.push(arrayBuffer);\n yield arrayBuffer;\n }\n const output = await this.concatenate(arrayBuffers);\n const hash = await this.hash(output, encoding);\n this.options.crypto?.onEnd?.({hash});\n }\n\n // HELPERS\n\n protected async concatenate(asyncIterator): Promise {\n return await concatenateArrayBuffersAsync(asyncIterator);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// This dependency is too big, application must provide it\nimport {Hash} from '@loaders.gl/crypto';\nimport * as crypto from 'crypto'; // Node.js builtin\n\ntype CryptoHashOptions = {\n crypto: {\n algorithm: string;\n onEnd?: (result: {hash: string}) => any;\n };\n};\n\n/**\n * Calculates Cryptographic Hash using Node.js crypto library\n * @deprecated Warning, experimental class\n */\nexport class NodeHash extends Hash {\n readonly name = 'crypto-node';\n\n options: CryptoHashOptions;\n // @ts-ignore\n private _algorithm;\n // @ts-ignore\n private _hash;\n\n constructor(options: CryptoHashOptions) {\n super();\n this.options = options;\n if (!this.options?.crypto?.algorithm) {\n throw new Error(this.name);\n }\n }\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n async hash(input: ArrayBuffer, encoding: 'hex' | 'base64'): Promise {\n // await this.preload();\n const algorithm = this.options?.crypto?.algorithm?.toLowerCase();\n try {\n if (!crypto.createHash) {\n throw new Error('crypto.createHash not available');\n }\n const hash = crypto.createHash?.(algorithm);\n const inputArray = new Uint8Array(input);\n return hash.update(inputArray).digest('base64');\n } catch (error) {\n throw Error(`${algorithm} hash not available. ${error}`);\n }\n }\n\n async *hashBatches(\n asyncIterator: AsyncIterable | Iterable,\n encoding: 'hex' | 'base64' = 'base64'\n ): AsyncIterable {\n // await this.preload();\n if (!crypto.createHash) {\n throw new Error('crypto.createHash not available');\n }\n const hash = crypto.createHash?.(this.options?.crypto?.algorithm?.toLowerCase());\n for await (const chunk of asyncIterator) {\n // https://stackoverflow.com/questions/25567468/how-to-decrypt-an-arraybuffer\n const inputArray = new Uint8Array(chunk);\n hash.update(inputArray);\n yield chunk;\n }\n // We can pass our encoding constant directly to Node.js digest as it already supports `hex` and `base64`\n const digest = hash.digest(encoding);\n this.options?.crypto?.onEnd?.({hash: digest});\n }\n}\n", "/* eslint-disable dot-notation */\nimport {isBrowser} from './utils/is-browser';\n\nimport {TextDecoder, TextEncoder} from './text-encoder/text-encoder';\n\n// Node specific\nimport {atob, btoa} from './buffer/btoa.node';\n\nimport {encodeImageNode} from './images/encode-image-node';\nimport {parseImageNode, NODE_FORMAT_SUPPORT} from './images/parse-image-node';\n\n// FILESYSTEM POLYFILLS\nimport {NodeFile} from './filesystems/node-file';\nimport {NodeFileSystem} from './filesystems/node-filesystem';\nimport {fetchNode} from './filesystems/fetch-node';\n\nimport {NodeHash} from './crypto/node-hash';\n\n// NODE VERSION\n// @ts-expect-error\nimport {versions} from 'node:process';\nexport const nodeVersion = parseInt(versions.node.split('.')[0]);\n\n// STREAM POLYFILLS\nimport {makeNodeStream} from './streams/make-node-stream';\n\n// BLOB AND FILE POLYFILLS\nexport {Blob_ as Blob} from './file/install-blob-polyfills';\nexport {File_ as File} from './file/install-file-polyfills';\n\nif (isBrowser) {\n // eslint-disable-next-line no-console\n console.error(\n 'loaders.gl: The @loaders.gl/polyfills should only be used in Node.js environments'\n );\n}\n\nglobalThis.loaders = globalThis.loaders || {};\n\n// STREAM POLYFILLS\nexport {makeNodeStream} from './streams/make-node-stream';\nglobalThis.loaders.makeNodeStream = makeNodeStream;\n\n// FILESYSTEM POLYFILLS\nglobalThis.loaders.NodeFile = NodeFile;\nglobalThis.loaders.NodeFileSystem = NodeFileSystem;\nglobalThis.loaders.fetchNode = fetchNode;\n\n// CRYPTO POLYFILLS\nglobalThis.loaders.NodeHash = NodeHash;\n\n// POLYFILLS: TextEncoder, TextDecoder\n// - Recent Node versions have these classes but virtually no encodings unless special build.\n// - Browser: Edge, IE11 do not have these\n\nif (!globalThis.TextEncoder) {\n // @ts-expect-error\n globalThis.TextEncoder = TextEncoder;\n}\n\nif (!globalThis.TextDecoder) {\n // @ts-expect-error\n globalThis.TextDecoder = TextDecoder;\n}\n\nif (!globalThis.ReadableStream) {\n globalThis.ReadableStream = ReadableStream;\n}\n\n// POLYFILLS: btoa, atob\n// - Node: Yes\n// - Browser: No\n\nif (!('atob' in globalThis) && atob) {\n globalThis['atob'] = atob;\n}\nif (!('btoa' in globalThis) && btoa) {\n globalThis['btoa'] = btoa;\n}\n\n// NODE IMAGE FUNCTIONS:\n// These are not official polyfills but used by the @loaders.gl/images module if installed\n// TODO - is there an appropriate Image API we could polyfill using an adapter?\n\nglobalThis.loaders.encodeImageNode = encodeImageNode;\nglobalThis.loaders.parseImageNode = parseImageNode;\nglobalThis.loaders.imageFormatsNode = NODE_FORMAT_SUPPORT;\n\n// Deprecated, remove after republish\nglobalThis._parseImageNode = parseImageNode;\nglobalThis._imageFormatsNode = NODE_FORMAT_SUPPORT;\n\n// LOAD LIBRARY\n\nimport {\n readFileAsArrayBuffer,\n readFileAsText,\n requireFromFile,\n requireFromString\n} from './load-library/require-utils.node';\n\nglobalThis.loaders.readFileAsArrayBuffer = readFileAsArrayBuffer;\nglobalThis.loaders.readFileAsText = readFileAsText;\nglobalThis.loaders.requireFromFile = requireFromFile;\nglobalThis.loaders.requireFromString = requireFromString;\n\nexport {installFilePolyfills} from './file/install-file-polyfills';\n\n// DEPRECATED POLYFILL:\n// - Node v18+: No, not needed\n// - Node v16 and lower: Yes\n// - Browsers (evergreen): Not needed.\n// - IE11: No. This polyfill is node only, install external polyfill\nimport {Headers as HeadersNode} from './fetch/headers-polyfill';\nimport {Response as ResponseNode} from './fetch/response-polyfill';\nimport {fetchNode as fetchNodePolyfill} from './fetch/fetch-polyfill';\n\nif (nodeVersion < 18) {\n if (!('Headers' in globalThis) && HeadersNode) {\n // @ts-ignore\n globalThis.Headers = HeadersNode;\n }\n\n if (!('Response' in globalThis) && ResponseNode) {\n // @ts-ignore\n globalThis.Response = ResponseNode;\n }\n\n if (!('fetch' in globalThis) && fetchNodePolyfill) {\n // @ts-ignore\n globalThis.fetch = fetchNodePolyfill;\n }\n}\n", "import type {ReadableOptions} from 'stream';\nimport * as Stream from 'stream';\n\nclass _Readable {}\n\ntype ReadableType = Stream.Readable | _Readable;\nconst Readable = Stream.Readable || _Readable;\n\nexport type MakeStreamOptions = ReadableOptions;\n\n/** Builds a node stream from an iterator */\nexport function makeNodeStream(\n source: Iterable | AsyncIterable,\n options?: ReadableOptions\n): ReadableType {\n // @ts-ignore AsyncGenerator\n // prettier-ignore\n const iterator = source[Symbol.asyncIterator]\n ? // @ts-ignore AsyncGenerator\n source[Symbol.asyncIterator]()\n : // @ts-ignore AsyncGenerator\n source[Symbol.iterator]();\n return new AsyncIterableReadable(iterator, options);\n}\n\nclass AsyncIterableReadable extends Readable {\n private _pulling: boolean;\n private _bytesMode: boolean;\n private _iterator: AsyncIterator;\n\n constructor(it: AsyncIterator, options?: ReadableOptions) {\n super(options);\n this._iterator = it;\n this._pulling = false;\n this._bytesMode = !options || !options.objectMode;\n }\n\n async _read(size: number): Promise {\n if (!this._pulling) {\n this._pulling = true;\n this._pulling = await this._pull(size, this._iterator);\n }\n }\n\n async _destroy(error: Error | null, cb: (e: Error | null) => void): Promise {\n if (!this._iterator) {\n return;\n }\n if (error) {\n await this._iterator?.throw?.(error);\n } else {\n await this._iterator?.return?.(error);\n }\n cb?.(null);\n }\n\n // eslint-disable-next-line complexity\n private async _pull(size: number, it: AsyncIterator): Promise {\n const bm = this._bytesMode;\n let r: IteratorResult | null = null;\n // while (this.readable && !(r = await it.next(bm ? size : null)).done) {\n while (this.readable && !(r = await it.next()).done) {\n if (size !== null) {\n size -= bm && ArrayBuffer.isView(r.value) ? r.value.byteLength : 1;\n }\n if (!this.push(new Uint8Array(r.value)) || size <= 0) {\n break;\n }\n }\n if ((r?.done || !this.readable) && (this.push(null) || true)) {\n it?.return?.();\n }\n return !this.readable;\n }\n}\n", "/**\n * @license\n * web-streams-polyfill v4.0.0\n * Copyright 2024 Mattias Buelens, Diwank Singh Tomer and other contributors.\n * This code is released under the MIT license.\n * SPDX-License-Identifier: MIT\n */\nfunction e(){}function t(e){return\"object\"==typeof e&&null!==e||\"function\"==typeof e}const r=e;function o(e,t){try{Object.defineProperty(e,\"name\",{value:t,configurable:!0})}catch(e){}}const n=Promise,a=Promise.resolve.bind(n),i=Promise.prototype.then,l=Promise.reject.bind(n),s=a;function u(e){return new n(e)}function c(e){return u((t=>t(e)))}function d(e){return l(e)}function f(e,t,r){return i.call(e,t,r)}function b(e,t,o){f(f(e,t,o),void 0,r)}function h(e,t){b(e,t)}function m(e,t){b(e,void 0,t)}function _(e,t,r){return f(e,t,r)}function p(e){f(e,void 0,r)}let y=e=>{if(\"function\"==typeof queueMicrotask)y=queueMicrotask;else{const e=c(void 0);y=t=>f(e,t)}return y(e)};function S(e,t,r){if(\"function\"!=typeof e)throw new TypeError(\"Argument is not a function\");return Function.prototype.apply.call(e,t,r)}function g(e,t,r){try{return c(S(e,t,r))}catch(e){return d(e)}}class v{constructor(){this._cursor=0,this._size=0,this._front={_elements:[],_next:void 0},this._back=this._front,this._cursor=0,this._size=0}get length(){return this._size}push(e){const t=this._back;let r=t;16383===t._elements.length&&(r={_elements:[],_next:void 0}),t._elements.push(e),r!==t&&(this._back=r,t._next=r),++this._size}shift(){const e=this._front;let t=e;const r=this._cursor;let o=r+1;const n=e._elements,a=n[r];return 16384===o&&(t=e._next,o=0),--this._size,this._cursor=o,e!==t&&(this._front=t),n[r]=void 0,a}forEach(e){let t=this._cursor,r=this._front,o=r._elements;for(;!(t===o.length&&void 0===r._next||t===o.length&&(r=r._next,o=r._elements,t=0,0===o.length));)e(o[t]),++t}peek(){const e=this._front,t=this._cursor;return e._elements[t]}}const w=Symbol(\"[[AbortSteps]]\"),R=Symbol(\"[[ErrorSteps]]\"),T=Symbol(\"[[CancelSteps]]\"),C=Symbol(\"[[PullSteps]]\"),P=Symbol(\"[[ReleaseSteps]]\");function q(e,t){e._ownerReadableStream=t,t._reader=e,\"readable\"===t._state?B(e):\"closed\"===t._state?function(e){B(e),A(e)}(e):k(e,t._storedError)}function E(e,t){return Or(e._ownerReadableStream,t)}function W(e){const t=e._ownerReadableStream;\"readable\"===t._state?j(e,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\")):function(e,t){k(e,t)}(e,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\")),t._readableStreamController[P](),t._reader=void 0,e._ownerReadableStream=void 0}function O(e){return new TypeError(\"Cannot \"+e+\" a stream using a released reader\")}function B(e){e._closedPromise=u(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r}))}function k(e,t){B(e),j(e,t)}function j(e,t){void 0!==e._closedPromise_reject&&(p(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}function A(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}const z=Number.isFinite||function(e){return\"number\"==typeof e&&isFinite(e)},D=Math.trunc||function(e){return e<0?Math.ceil(e):Math.floor(e)};function L(e,t){if(void 0!==e&&(\"object\"!=typeof(r=e)&&\"function\"!=typeof r))throw new TypeError(`${t} is not an object.`);var r}function F(e,t){if(\"function\"!=typeof e)throw new TypeError(`${t} is not a function.`)}function I(e,t){if(!function(e){return\"object\"==typeof e&&null!==e||\"function\"==typeof e}(e))throw new TypeError(`${t} is not an object.`)}function $(e,t,r){if(void 0===e)throw new TypeError(`Parameter ${t} is required in '${r}'.`)}function M(e,t,r){if(void 0===e)throw new TypeError(`${t} is required in '${r}'.`)}function Y(e){return Number(e)}function x(e){return 0===e?0:e}function Q(e,t){const r=Number.MAX_SAFE_INTEGER;let o=Number(e);if(o=x(o),!z(o))throw new TypeError(`${t} is not a finite number`);if(o=function(e){return x(D(e))}(o),o<0||o>r)throw new TypeError(`${t} is outside the accepted range of 0 to ${r}, inclusive`);return z(o)&&0!==o?o:0}function N(e,t){if(!Er(e))throw new TypeError(`${t} is not a ReadableStream.`)}function H(e){return new ReadableStreamDefaultReader(e)}function V(e,t){e._reader._readRequests.push(t)}function U(e,t,r){const o=e._reader._readRequests.shift();r?o._closeSteps():o._chunkSteps(t)}function G(e){return e._reader._readRequests.length}function X(e){const t=e._reader;return void 0!==t&&!!J(t)}class ReadableStreamDefaultReader{constructor(e){if($(e,1,\"ReadableStreamDefaultReader\"),N(e,\"First parameter\"),Wr(e))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");q(this,e),this._readRequests=new v}get closed(){return J(this)?this._closedPromise:d(ee(\"closed\"))}cancel(e=void 0){return J(this)?void 0===this._ownerReadableStream?d(O(\"cancel\")):E(this,e):d(ee(\"cancel\"))}read(){if(!J(this))return d(ee(\"read\"));if(void 0===this._ownerReadableStream)return d(O(\"read from\"));let e,t;const r=u(((r,o)=>{e=r,t=o}));return K(this,{_chunkSteps:t=>e({value:t,done:!1}),_closeSteps:()=>e({value:void 0,done:!0}),_errorSteps:e=>t(e)}),r}releaseLock(){if(!J(this))throw ee(\"releaseLock\");void 0!==this._ownerReadableStream&&function(e){W(e);const t=new TypeError(\"Reader was released\");Z(e,t)}(this)}}function J(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readRequests\")&&e instanceof ReadableStreamDefaultReader)}function K(e,t){const r=e._ownerReadableStream;r._disturbed=!0,\"closed\"===r._state?t._closeSteps():\"errored\"===r._state?t._errorSteps(r._storedError):r._readableStreamController[C](t)}function Z(e,t){const r=e._readRequests;e._readRequests=new v,r.forEach((e=>{e._errorSteps(t)}))}function ee(e){return new TypeError(`ReadableStreamDefaultReader.prototype.${e} can only be used on a ReadableStreamDefaultReader`)}var te,re,oe;function ne(e){return e.slice()}function ae(e,t,r,o,n){new Uint8Array(e).set(new Uint8Array(r,o,n),t)}Object.defineProperties(ReadableStreamDefaultReader.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),o(ReadableStreamDefaultReader.prototype.cancel,\"cancel\"),o(ReadableStreamDefaultReader.prototype.read,\"read\"),o(ReadableStreamDefaultReader.prototype.releaseLock,\"releaseLock\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableStreamDefaultReader.prototype,Symbol.toStringTag,{value:\"ReadableStreamDefaultReader\",configurable:!0});let ie=e=>(ie=\"function\"==typeof e.transfer?e=>e.transfer():\"function\"==typeof structuredClone?e=>structuredClone(e,{transfer:[e]}):e=>e,ie(e)),le=e=>(le=\"boolean\"==typeof e.detached?e=>e.detached:e=>0===e.byteLength,le(e));function se(e,t,r){if(e.slice)return e.slice(t,r);const o=r-t,n=new ArrayBuffer(o);return ae(n,0,e,t,o),n}function ue(e,t){const r=e[t];if(null!=r){if(\"function\"!=typeof r)throw new TypeError(`${String(t)} is not a function`);return r}}function ce(e){try{const t=e.done,r=e.value;return f(s(r),(e=>({done:t,value:e})))}catch(e){return d(e)}}const de=null!==(oe=null!==(te=Symbol.asyncIterator)&&void 0!==te?te:null===(re=Symbol.for)||void 0===re?void 0:re.call(Symbol,\"Symbol.asyncIterator\"))&&void 0!==oe?oe:\"@@asyncIterator\";function fe(e,r=\"sync\",o){if(void 0===o)if(\"async\"===r){if(void 0===(o=ue(e,de))){return function(e){const r={next(){let t;try{t=be(e)}catch(e){return d(e)}return ce(t)},return(r){let o;try{const t=ue(e.iterator,\"return\");if(void 0===t)return c({done:!0,value:r});o=S(t,e.iterator,[r])}catch(e){return d(e)}return t(o)?ce(o):d(new TypeError(\"The iterator.return() method must return an object\"))}};return{iterator:r,nextMethod:r.next,done:!1}}(fe(e,\"sync\",ue(e,Symbol.iterator)))}}else o=ue(e,Symbol.iterator);if(void 0===o)throw new TypeError(\"The object is not iterable\");const n=S(o,e,[]);if(!t(n))throw new TypeError(\"The iterator method must return an object\");return{iterator:n,nextMethod:n.next,done:!1}}function be(e){const r=S(e.nextMethod,e.iterator,[]);if(!t(r))throw new TypeError(\"The iterator.next() method must return an object\");return r}class he{constructor(e,t){this._ongoingPromise=void 0,this._isFinished=!1,this._reader=e,this._preventCancel=t}next(){const e=()=>this._nextSteps();return this._ongoingPromise=this._ongoingPromise?_(this._ongoingPromise,e,e):e(),this._ongoingPromise}return(e){const t=()=>this._returnSteps(e);return this._ongoingPromise?_(this._ongoingPromise,t,t):t()}_nextSteps(){if(this._isFinished)return Promise.resolve({value:void 0,done:!0});const e=this._reader;let t,r;const o=u(((e,o)=>{t=e,r=o}));return K(e,{_chunkSteps:e=>{this._ongoingPromise=void 0,y((()=>t({value:e,done:!1})))},_closeSteps:()=>{this._ongoingPromise=void 0,this._isFinished=!0,W(e),t({value:void 0,done:!0})},_errorSteps:t=>{this._ongoingPromise=void 0,this._isFinished=!0,W(e),r(t)}}),o}_returnSteps(e){if(this._isFinished)return Promise.resolve({value:e,done:!0});this._isFinished=!0;const t=this._reader;if(!this._preventCancel){const r=E(t,e);return W(t),_(r,(()=>({value:e,done:!0})))}return W(t),c({value:e,done:!0})}}const me={next(){return _e(this)?this._asyncIteratorImpl.next():d(pe(\"next\"))},return(e){return _e(this)?this._asyncIteratorImpl.return(e):d(pe(\"return\"))},[de](){return this}};function _e(e){if(!t(e))return!1;if(!Object.prototype.hasOwnProperty.call(e,\"_asyncIteratorImpl\"))return!1;try{return e._asyncIteratorImpl instanceof he}catch(e){return!1}}function pe(e){return new TypeError(`ReadableStreamAsyncIterator.${e} can only be used on a ReadableSteamAsyncIterator`)}Object.defineProperty(me,de,{enumerable:!1});const ye=Number.isNaN||function(e){return e!=e};function Se(e){const t=se(e.buffer,e.byteOffset,e.byteOffset+e.byteLength);return new Uint8Array(t)}function ge(e){const t=e._queue.shift();return e._queueTotalSize-=t.size,e._queueTotalSize<0&&(e._queueTotalSize=0),t.value}function ve(e,t,r){if(\"number\"!=typeof(o=r)||ye(o)||o<0||r===1/0)throw new RangeError(\"Size must be a finite, non-NaN, non-negative number.\");var o;e._queue.push({value:t,size:r}),e._queueTotalSize+=r}function we(e){e._queue=new v,e._queueTotalSize=0}function Re(e){return e===DataView}class ReadableStreamBYOBRequest{constructor(){throw new TypeError(\"Illegal constructor\")}get view(){if(!Ce(this))throw Je(\"view\");return this._view}respond(e){if(!Ce(this))throw Je(\"respond\");if($(e,1,\"respond\"),e=Q(e,\"First parameter\"),void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");if(le(this._view.buffer))throw new TypeError(\"The BYOB request's buffer has been detached and so cannot be used as a response\");Ue(this._associatedReadableByteStreamController,e)}respondWithNewView(e){if(!Ce(this))throw Je(\"respondWithNewView\");if($(e,1,\"respondWithNewView\"),!ArrayBuffer.isView(e))throw new TypeError(\"You can only respond with array buffer views\");if(void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");if(le(e.buffer))throw new TypeError(\"The given view's buffer has been detached and so cannot be used as a response\");Ge(this._associatedReadableByteStreamController,e)}}Object.defineProperties(ReadableStreamBYOBRequest.prototype,{respond:{enumerable:!0},respondWithNewView:{enumerable:!0},view:{enumerable:!0}}),o(ReadableStreamBYOBRequest.prototype.respond,\"respond\"),o(ReadableStreamBYOBRequest.prototype.respondWithNewView,\"respondWithNewView\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableStreamBYOBRequest.prototype,Symbol.toStringTag,{value:\"ReadableStreamBYOBRequest\",configurable:!0});class ReadableByteStreamController{constructor(){throw new TypeError(\"Illegal constructor\")}get byobRequest(){if(!Te(this))throw Ke(\"byobRequest\");return He(this)}get desiredSize(){if(!Te(this))throw Ke(\"desiredSize\");return Ve(this)}close(){if(!Te(this))throw Ke(\"close\");if(this._closeRequested)throw new TypeError(\"The stream has already been closed; do not close it again!\");const e=this._controlledReadableByteStream._state;if(\"readable\"!==e)throw new TypeError(`The stream (in ${e} state) is not in the readable state and cannot be closed`);Ye(this)}enqueue(e){if(!Te(this))throw Ke(\"enqueue\");if($(e,1,\"enqueue\"),!ArrayBuffer.isView(e))throw new TypeError(\"chunk must be an array buffer view\");if(0===e.byteLength)throw new TypeError(\"chunk must have non-zero byteLength\");if(0===e.buffer.byteLength)throw new TypeError(\"chunk's buffer must have non-zero byteLength\");if(this._closeRequested)throw new TypeError(\"stream is closed or draining\");const t=this._controlledReadableByteStream._state;if(\"readable\"!==t)throw new TypeError(`The stream (in ${t} state) is not in the readable state and cannot be enqueued to`);xe(this,e)}error(e=void 0){if(!Te(this))throw Ke(\"error\");Qe(this,e)}[T](e){qe(this),we(this);const t=this._cancelAlgorithm(e);return Me(this),t}[C](e){const t=this._controlledReadableByteStream;if(this._queueTotalSize>0)return void Ne(this,e);const r=this._autoAllocateChunkSize;if(void 0!==r){let t;try{t=new ArrayBuffer(r)}catch(t){return void e._errorSteps(t)}const o={buffer:t,bufferByteLength:r,byteOffset:0,byteLength:r,bytesFilled:0,minimumFill:1,elementSize:1,viewConstructor:Uint8Array,readerType:\"default\"};this._pendingPullIntos.push(o)}V(t,e),Pe(this)}[P](){if(this._pendingPullIntos.length>0){const e=this._pendingPullIntos.peek();e.readerType=\"none\",this._pendingPullIntos=new v,this._pendingPullIntos.push(e)}}}function Te(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledReadableByteStream\")&&e instanceof ReadableByteStreamController)}function Ce(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_associatedReadableByteStreamController\")&&e instanceof ReadableStreamBYOBRequest)}function Pe(e){const t=function(e){const t=e._controlledReadableByteStream;if(\"readable\"!==t._state)return!1;if(e._closeRequested)return!1;if(!e._started)return!1;if(X(t)&&G(t)>0)return!0;if(ot(t)&&rt(t)>0)return!0;const r=Ve(e);if(r>0)return!0;return!1}(e);if(!t)return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;b(e._pullAlgorithm(),(()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,Pe(e)),null)),(t=>(Qe(e,t),null)))}function qe(e){De(e),e._pendingPullIntos=new v}function Ee(e,t){let r=!1;\"closed\"===e._state&&(r=!0);const o=We(t);\"default\"===t.readerType?U(e,o,r):function(e,t,r){const o=e._reader,n=o._readIntoRequests.shift();r?n._closeSteps(t):n._chunkSteps(t)}(e,o,r)}function We(e){const t=e.bytesFilled,r=e.elementSize;return new e.viewConstructor(e.buffer,e.byteOffset,t/r)}function Oe(e,t,r,o){e._queue.push({buffer:t,byteOffset:r,byteLength:o}),e._queueTotalSize+=o}function Be(e,t,r,o){let n;try{n=se(t,r,r+o)}catch(t){throw Qe(e,t),t}Oe(e,n,0,o)}function ke(e,t){t.bytesFilled>0&&Be(e,t.buffer,t.byteOffset,t.bytesFilled),$e(e)}function je(e,t){const r=Math.min(e._queueTotalSize,t.byteLength-t.bytesFilled),o=t.bytesFilled+r;let n=r,a=!1;const i=o-o%t.elementSize;i>=t.minimumFill&&(n=i-t.bytesFilled,a=!0);const l=e._queue;for(;n>0;){const r=l.peek(),o=Math.min(n,r.byteLength),a=t.byteOffset+t.bytesFilled;ae(t.buffer,a,r.buffer,r.byteOffset,o),r.byteLength===o?l.shift():(r.byteOffset+=o,r.byteLength-=o),e._queueTotalSize-=o,Ae(e,o,t),n-=o}return a}function Ae(e,t,r){r.bytesFilled+=t}function ze(e){0===e._queueTotalSize&&e._closeRequested?(Me(e),Br(e._controlledReadableByteStream)):Pe(e)}function De(e){null!==e._byobRequest&&(e._byobRequest._associatedReadableByteStreamController=void 0,e._byobRequest._view=null,e._byobRequest=null)}function Le(e){for(;e._pendingPullIntos.length>0;){if(0===e._queueTotalSize)return;const t=e._pendingPullIntos.peek();je(e,t)&&($e(e),Ee(e._controlledReadableByteStream,t))}}function Fe(e,t,r,o){const n=e._controlledReadableByteStream,a=t.constructor,i=function(e){return Re(e)?1:e.BYTES_PER_ELEMENT}(a),{byteOffset:l,byteLength:s}=t,u=r*i;let c;try{c=ie(t.buffer)}catch(e){return void o._errorSteps(e)}const d={buffer:c,bufferByteLength:c.byteLength,byteOffset:l,byteLength:s,bytesFilled:0,minimumFill:u,elementSize:i,viewConstructor:a,readerType:\"byob\"};if(e._pendingPullIntos.length>0)return e._pendingPullIntos.push(d),void tt(n,o);if(\"closed\"!==n._state){if(e._queueTotalSize>0){if(je(e,d)){const t=We(d);return ze(e),void o._chunkSteps(t)}if(e._closeRequested){const t=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");return Qe(e,t),void o._errorSteps(t)}}e._pendingPullIntos.push(d),tt(n,o),Pe(e)}else{const e=new a(d.buffer,d.byteOffset,0);o._closeSteps(e)}}function Ie(e,t){const r=e._pendingPullIntos.peek();De(e);\"closed\"===e._controlledReadableByteStream._state?function(e,t){\"none\"===t.readerType&&$e(e);const r=e._controlledReadableByteStream;if(ot(r))for(;rt(r)>0;)Ee(r,$e(e))}(e,r):function(e,t,r){if(Ae(0,t,r),\"none\"===r.readerType)return ke(e,r),void Le(e);if(r.bytesFilled0){const t=r.byteOffset+r.bytesFilled;Be(e,r.buffer,t-o,o)}r.bytesFilled-=o,Ee(e._controlledReadableByteStream,r),Le(e)}(e,t,r),Pe(e)}function $e(e){return e._pendingPullIntos.shift()}function Me(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0}function Ye(e){const t=e._controlledReadableByteStream;if(!e._closeRequested&&\"readable\"===t._state)if(e._queueTotalSize>0)e._closeRequested=!0;else{if(e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek();if(t.bytesFilled%t.elementSize!=0){const t=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");throw Qe(e,t),t}}Me(e),Br(t)}}function xe(e,t){const r=e._controlledReadableByteStream;if(e._closeRequested||\"readable\"!==r._state)return;const{buffer:o,byteOffset:n,byteLength:a}=t;if(le(o))throw new TypeError(\"chunk's buffer is detached and so cannot be enqueued\");const i=ie(o);if(e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek();if(le(t.buffer))throw new TypeError(\"The BYOB request's buffer has been detached and so cannot be filled with an enqueued chunk\");De(e),t.buffer=ie(t.buffer),\"none\"===t.readerType&&ke(e,t)}if(X(r))if(function(e){const t=e._controlledReadableByteStream._reader;for(;t._readRequests.length>0;){if(0===e._queueTotalSize)return;Ne(e,t._readRequests.shift())}}(e),0===G(r))Oe(e,i,n,a);else{e._pendingPullIntos.length>0&&$e(e);U(r,new Uint8Array(i,n,a),!1)}else ot(r)?(Oe(e,i,n,a),Le(e)):Oe(e,i,n,a);Pe(e)}function Qe(e,t){const r=e._controlledReadableByteStream;\"readable\"===r._state&&(qe(e),we(e),Me(e),kr(r,t))}function Ne(e,t){const r=e._queue.shift();e._queueTotalSize-=r.byteLength,ze(e);const o=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);t._chunkSteps(o)}function He(e){if(null===e._byobRequest&&e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek(),r=new Uint8Array(t.buffer,t.byteOffset+t.bytesFilled,t.byteLength-t.bytesFilled),o=Object.create(ReadableStreamBYOBRequest.prototype);!function(e,t,r){e._associatedReadableByteStreamController=t,e._view=r}(o,e,r),e._byobRequest=o}return e._byobRequest}function Ve(e){const t=e._controlledReadableByteStream._state;return\"errored\"===t?null:\"closed\"===t?0:e._strategyHWM-e._queueTotalSize}function Ue(e,t){const r=e._pendingPullIntos.peek();if(\"closed\"===e._controlledReadableByteStream._state){if(0!==t)throw new TypeError(\"bytesWritten must be 0 when calling respond() on a closed stream\")}else{if(0===t)throw new TypeError(\"bytesWritten must be greater than 0 when calling respond() on a readable stream\");if(r.bytesFilled+t>r.byteLength)throw new RangeError(\"bytesWritten out of range\")}r.buffer=ie(r.buffer),Ie(e,t)}function Ge(e,t){const r=e._pendingPullIntos.peek();if(\"closed\"===e._controlledReadableByteStream._state){if(0!==t.byteLength)throw new TypeError(\"The view's length must be 0 when calling respondWithNewView() on a closed stream\")}else if(0===t.byteLength)throw new TypeError(\"The view's length must be greater than 0 when calling respondWithNewView() on a readable stream\");if(r.byteOffset+r.bytesFilled!==t.byteOffset)throw new RangeError(\"The region specified by view does not match byobRequest\");if(r.bufferByteLength!==t.buffer.byteLength)throw new RangeError(\"The buffer of view has different capacity than byobRequest\");if(r.bytesFilled+t.byteLength>r.byteLength)throw new RangeError(\"The region specified by view is larger than byobRequest\");const o=t.byteLength;r.buffer=ie(t.buffer),Ie(e,o)}function Xe(e,t,r,o,n,a,i){t._controlledReadableByteStream=e,t._pullAgain=!1,t._pulling=!1,t._byobRequest=null,t._queue=t._queueTotalSize=void 0,we(t),t._closeRequested=!1,t._started=!1,t._strategyHWM=a,t._pullAlgorithm=o,t._cancelAlgorithm=n,t._autoAllocateChunkSize=i,t._pendingPullIntos=new v,e._readableStreamController=t;b(c(r()),(()=>(t._started=!0,Pe(t),null)),(e=>(Qe(t,e),null)))}function Je(e){return new TypeError(`ReadableStreamBYOBRequest.prototype.${e} can only be used on a ReadableStreamBYOBRequest`)}function Ke(e){return new TypeError(`ReadableByteStreamController.prototype.${e} can only be used on a ReadableByteStreamController`)}function Ze(e,t){if(\"byob\"!==(e=`${e}`))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamReaderMode`);return e}function et(e){return new ReadableStreamBYOBReader(e)}function tt(e,t){e._reader._readIntoRequests.push(t)}function rt(e){return e._reader._readIntoRequests.length}function ot(e){const t=e._reader;return void 0!==t&&!!nt(t)}Object.defineProperties(ReadableByteStreamController.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},byobRequest:{enumerable:!0},desiredSize:{enumerable:!0}}),o(ReadableByteStreamController.prototype.close,\"close\"),o(ReadableByteStreamController.prototype.enqueue,\"enqueue\"),o(ReadableByteStreamController.prototype.error,\"error\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableByteStreamController.prototype,Symbol.toStringTag,{value:\"ReadableByteStreamController\",configurable:!0});class ReadableStreamBYOBReader{constructor(e){if($(e,1,\"ReadableStreamBYOBReader\"),N(e,\"First parameter\"),Wr(e))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");if(!Te(e._readableStreamController))throw new TypeError(\"Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source\");q(this,e),this._readIntoRequests=new v}get closed(){return nt(this)?this._closedPromise:d(lt(\"closed\"))}cancel(e=void 0){return nt(this)?void 0===this._ownerReadableStream?d(O(\"cancel\")):E(this,e):d(lt(\"cancel\"))}read(e,t={}){if(!nt(this))return d(lt(\"read\"));if(!ArrayBuffer.isView(e))return d(new TypeError(\"view must be an array buffer view\"));if(0===e.byteLength)return d(new TypeError(\"view must have non-zero byteLength\"));if(0===e.buffer.byteLength)return d(new TypeError(\"view's buffer must have non-zero byteLength\"));if(le(e.buffer))return d(new TypeError(\"view's buffer has been detached\"));let r;try{r=function(e,t){var r;return L(e,t),{min:Q(null!==(r=null==e?void 0:e.min)&&void 0!==r?r:1,`${t} has member 'min' that`)}}(t,\"options\")}catch(e){return d(e)}const o=r.min;if(0===o)return d(new TypeError(\"options.min must be greater than 0\"));if(function(e){return Re(e.constructor)}(e)){if(o>e.byteLength)return d(new RangeError(\"options.min must be less than or equal to view's byteLength\"))}else if(o>e.length)return d(new RangeError(\"options.min must be less than or equal to view's length\"));if(void 0===this._ownerReadableStream)return d(O(\"read from\"));let n,a;const i=u(((e,t)=>{n=e,a=t}));return at(this,e,o,{_chunkSteps:e=>n({value:e,done:!1}),_closeSteps:e=>n({value:e,done:!0}),_errorSteps:e=>a(e)}),i}releaseLock(){if(!nt(this))throw lt(\"releaseLock\");void 0!==this._ownerReadableStream&&function(e){W(e);const t=new TypeError(\"Reader was released\");it(e,t)}(this)}}function nt(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readIntoRequests\")&&e instanceof ReadableStreamBYOBReader)}function at(e,t,r,o){const n=e._ownerReadableStream;n._disturbed=!0,\"errored\"===n._state?o._errorSteps(n._storedError):Fe(n._readableStreamController,t,r,o)}function it(e,t){const r=e._readIntoRequests;e._readIntoRequests=new v,r.forEach((e=>{e._errorSteps(t)}))}function lt(e){return new TypeError(`ReadableStreamBYOBReader.prototype.${e} can only be used on a ReadableStreamBYOBReader`)}function st(e,t){const{highWaterMark:r}=e;if(void 0===r)return t;if(ye(r)||r<0)throw new RangeError(\"Invalid highWaterMark\");return r}function ut(e){const{size:t}=e;return t||(()=>1)}function ct(e,t){L(e,t);const r=null==e?void 0:e.highWaterMark,o=null==e?void 0:e.size;return{highWaterMark:void 0===r?void 0:Y(r),size:void 0===o?void 0:dt(o,`${t} has member 'size' that`)}}function dt(e,t){return F(e,t),t=>Y(e(t))}function ft(e,t,r){return F(e,r),r=>g(e,t,[r])}function bt(e,t,r){return F(e,r),()=>g(e,t,[])}function ht(e,t,r){return F(e,r),r=>S(e,t,[r])}function mt(e,t,r){return F(e,r),(r,o)=>g(e,t,[r,o])}function _t(e,t){if(!gt(e))throw new TypeError(`${t} is not a WritableStream.`)}Object.defineProperties(ReadableStreamBYOBReader.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),o(ReadableStreamBYOBReader.prototype.cancel,\"cancel\"),o(ReadableStreamBYOBReader.prototype.read,\"read\"),o(ReadableStreamBYOBReader.prototype.releaseLock,\"releaseLock\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableStreamBYOBReader.prototype,Symbol.toStringTag,{value:\"ReadableStreamBYOBReader\",configurable:!0});const pt=\"function\"==typeof AbortController;class WritableStream{constructor(e={},t={}){void 0===e?e=null:I(e,\"First parameter\");const r=ct(t,\"Second parameter\"),o=function(e,t){L(e,t);const r=null==e?void 0:e.abort,o=null==e?void 0:e.close,n=null==e?void 0:e.start,a=null==e?void 0:e.type,i=null==e?void 0:e.write;return{abort:void 0===r?void 0:ft(r,e,`${t} has member 'abort' that`),close:void 0===o?void 0:bt(o,e,`${t} has member 'close' that`),start:void 0===n?void 0:ht(n,e,`${t} has member 'start' that`),write:void 0===i?void 0:mt(i,e,`${t} has member 'write' that`),type:a}}(e,\"First parameter\");St(this);if(void 0!==o.type)throw new RangeError(\"Invalid type is specified\");const n=ut(r);!function(e,t,r,o){const n=Object.create(WritableStreamDefaultController.prototype);let a,i,l,s;a=void 0!==t.start?()=>t.start(n):()=>{};i=void 0!==t.write?e=>t.write(e,n):()=>c(void 0);l=void 0!==t.close?()=>t.close():()=>c(void 0);s=void 0!==t.abort?e=>t.abort(e):()=>c(void 0);Ft(e,n,a,i,l,s,r,o)}(this,o,st(r,1),n)}get locked(){if(!gt(this))throw Nt(\"locked\");return vt(this)}abort(e=void 0){return gt(this)?vt(this)?d(new TypeError(\"Cannot abort a stream that already has a writer\")):wt(this,e):d(Nt(\"abort\"))}close(){return gt(this)?vt(this)?d(new TypeError(\"Cannot close a stream that already has a writer\")):qt(this)?d(new TypeError(\"Cannot close an already-closing stream\")):Rt(this):d(Nt(\"close\"))}getWriter(){if(!gt(this))throw Nt(\"getWriter\");return yt(this)}}function yt(e){return new WritableStreamDefaultWriter(e)}function St(e){e._state=\"writable\",e._storedError=void 0,e._writer=void 0,e._writableStreamController=void 0,e._writeRequests=new v,e._inFlightWriteRequest=void 0,e._closeRequest=void 0,e._inFlightCloseRequest=void 0,e._pendingAbortRequest=void 0,e._backpressure=!1}function gt(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_writableStreamController\")&&e instanceof WritableStream)}function vt(e){return void 0!==e._writer}function wt(e,t){var r;if(\"closed\"===e._state||\"errored\"===e._state)return c(void 0);e._writableStreamController._abortReason=t,null===(r=e._writableStreamController._abortController)||void 0===r||r.abort(t);const o=e._state;if(\"closed\"===o||\"errored\"===o)return c(void 0);if(void 0!==e._pendingAbortRequest)return e._pendingAbortRequest._promise;let n=!1;\"erroring\"===o&&(n=!0,t=void 0);const a=u(((r,o)=>{e._pendingAbortRequest={_promise:void 0,_resolve:r,_reject:o,_reason:t,_wasAlreadyErroring:n}}));return e._pendingAbortRequest._promise=a,n||Ct(e,t),a}function Rt(e){const t=e._state;if(\"closed\"===t||\"errored\"===t)return d(new TypeError(`The stream (in ${t} state) is not in the writable state and cannot be closed`));const r=u(((t,r)=>{const o={_resolve:t,_reject:r};e._closeRequest=o})),o=e._writer;var n;return void 0!==o&&e._backpressure&&\"writable\"===t&&or(o),ve(n=e._writableStreamController,Dt,0),Mt(n),r}function Tt(e,t){\"writable\"!==e._state?Pt(e):Ct(e,t)}function Ct(e,t){const r=e._writableStreamController;e._state=\"erroring\",e._storedError=t;const o=e._writer;void 0!==o&&jt(o,t),!function(e){if(void 0===e._inFlightWriteRequest&&void 0===e._inFlightCloseRequest)return!1;return!0}(e)&&r._started&&Pt(e)}function Pt(e){e._state=\"errored\",e._writableStreamController[R]();const t=e._storedError;if(e._writeRequests.forEach((e=>{e._reject(t)})),e._writeRequests=new v,void 0===e._pendingAbortRequest)return void Et(e);const r=e._pendingAbortRequest;if(e._pendingAbortRequest=void 0,r._wasAlreadyErroring)return r._reject(t),void Et(e);b(e._writableStreamController[w](r._reason),(()=>(r._resolve(),Et(e),null)),(t=>(r._reject(t),Et(e),null)))}function qt(e){return void 0!==e._closeRequest||void 0!==e._inFlightCloseRequest}function Et(e){void 0!==e._closeRequest&&(e._closeRequest._reject(e._storedError),e._closeRequest=void 0);const t=e._writer;void 0!==t&&Jt(t,e._storedError)}function Wt(e,t){const r=e._writer;void 0!==r&&t!==e._backpressure&&(t?function(e){Zt(e)}(r):or(r)),e._backpressure=t}Object.defineProperties(WritableStream.prototype,{abort:{enumerable:!0},close:{enumerable:!0},getWriter:{enumerable:!0},locked:{enumerable:!0}}),o(WritableStream.prototype.abort,\"abort\"),o(WritableStream.prototype.close,\"close\"),o(WritableStream.prototype.getWriter,\"getWriter\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(WritableStream.prototype,Symbol.toStringTag,{value:\"WritableStream\",configurable:!0});class WritableStreamDefaultWriter{constructor(e){if($(e,1,\"WritableStreamDefaultWriter\"),_t(e,\"First parameter\"),vt(e))throw new TypeError(\"This stream has already been locked for exclusive writing by another writer\");this._ownerWritableStream=e,e._writer=this;const t=e._state;if(\"writable\"===t)!qt(e)&&e._backpressure?Zt(this):tr(this),Gt(this);else if(\"erroring\"===t)er(this,e._storedError),Gt(this);else if(\"closed\"===t)tr(this),Gt(r=this),Kt(r);else{const t=e._storedError;er(this,t),Xt(this,t)}var r}get closed(){return Ot(this)?this._closedPromise:d(Vt(\"closed\"))}get desiredSize(){if(!Ot(this))throw Vt(\"desiredSize\");if(void 0===this._ownerWritableStream)throw Ut(\"desiredSize\");return function(e){const t=e._ownerWritableStream,r=t._state;if(\"errored\"===r||\"erroring\"===r)return null;if(\"closed\"===r)return 0;return $t(t._writableStreamController)}(this)}get ready(){return Ot(this)?this._readyPromise:d(Vt(\"ready\"))}abort(e=void 0){return Ot(this)?void 0===this._ownerWritableStream?d(Ut(\"abort\")):function(e,t){return wt(e._ownerWritableStream,t)}(this,e):d(Vt(\"abort\"))}close(){if(!Ot(this))return d(Vt(\"close\"));const e=this._ownerWritableStream;return void 0===e?d(Ut(\"close\")):qt(e)?d(new TypeError(\"Cannot close an already-closing stream\")):Bt(this)}releaseLock(){if(!Ot(this))throw Vt(\"releaseLock\");void 0!==this._ownerWritableStream&&At(this)}write(e=void 0){return Ot(this)?void 0===this._ownerWritableStream?d(Ut(\"write to\")):zt(this,e):d(Vt(\"write\"))}}function Ot(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_ownerWritableStream\")&&e instanceof WritableStreamDefaultWriter)}function Bt(e){return Rt(e._ownerWritableStream)}function kt(e,t){\"pending\"===e._closedPromiseState?Jt(e,t):function(e,t){Xt(e,t)}(e,t)}function jt(e,t){\"pending\"===e._readyPromiseState?rr(e,t):function(e,t){er(e,t)}(e,t)}function At(e){const t=e._ownerWritableStream,r=new TypeError(\"Writer was released and can no longer be used to monitor the stream's closedness\");jt(e,r),kt(e,r),t._writer=void 0,e._ownerWritableStream=void 0}function zt(e,t){const r=e._ownerWritableStream,o=r._writableStreamController,n=function(e,t){try{return e._strategySizeAlgorithm(t)}catch(t){return Yt(e,t),1}}(o,t);if(r!==e._ownerWritableStream)return d(Ut(\"write to\"));const a=r._state;if(\"errored\"===a)return d(r._storedError);if(qt(r)||\"closed\"===a)return d(new TypeError(\"The stream is closing or closed and cannot be written to\"));if(\"erroring\"===a)return d(r._storedError);const i=function(e){return u(((t,r)=>{const o={_resolve:t,_reject:r};e._writeRequests.push(o)}))}(r);return function(e,t,r){try{ve(e,t,r)}catch(t){return void Yt(e,t)}const o=e._controlledWritableStream;if(!qt(o)&&\"writable\"===o._state){Wt(o,xt(e))}Mt(e)}(o,t,n),i}Object.defineProperties(WritableStreamDefaultWriter.prototype,{abort:{enumerable:!0},close:{enumerable:!0},releaseLock:{enumerable:!0},write:{enumerable:!0},closed:{enumerable:!0},desiredSize:{enumerable:!0},ready:{enumerable:!0}}),o(WritableStreamDefaultWriter.prototype.abort,\"abort\"),o(WritableStreamDefaultWriter.prototype.close,\"close\"),o(WritableStreamDefaultWriter.prototype.releaseLock,\"releaseLock\"),o(WritableStreamDefaultWriter.prototype.write,\"write\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(WritableStreamDefaultWriter.prototype,Symbol.toStringTag,{value:\"WritableStreamDefaultWriter\",configurable:!0});const Dt={};class WritableStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get abortReason(){if(!Lt(this))throw Ht(\"abortReason\");return this._abortReason}get signal(){if(!Lt(this))throw Ht(\"signal\");if(void 0===this._abortController)throw new TypeError(\"WritableStreamDefaultController.prototype.signal is not supported\");return this._abortController.signal}error(e=void 0){if(!Lt(this))throw Ht(\"error\");\"writable\"===this._controlledWritableStream._state&&Qt(this,e)}[w](e){const t=this._abortAlgorithm(e);return It(this),t}[R](){we(this)}}function Lt(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledWritableStream\")&&e instanceof WritableStreamDefaultController)}function Ft(e,t,r,o,n,a,i,l){t._controlledWritableStream=e,e._writableStreamController=t,t._queue=void 0,t._queueTotalSize=void 0,we(t),t._abortReason=void 0,t._abortController=function(){if(pt)return new AbortController}(),t._started=!1,t._strategySizeAlgorithm=l,t._strategyHWM=i,t._writeAlgorithm=o,t._closeAlgorithm=n,t._abortAlgorithm=a;const s=xt(t);Wt(e,s);b(c(r()),(()=>(t._started=!0,Mt(t),null)),(r=>(t._started=!0,Tt(e,r),null)))}function It(e){e._writeAlgorithm=void 0,e._closeAlgorithm=void 0,e._abortAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function $t(e){return e._strategyHWM-e._queueTotalSize}function Mt(e){const t=e._controlledWritableStream;if(!e._started)return;if(void 0!==t._inFlightWriteRequest)return;if(\"erroring\"===t._state)return void Pt(t);if(0===e._queue.length)return;const r=e._queue.peek().value;r===Dt?function(e){const t=e._controlledWritableStream;(function(e){e._inFlightCloseRequest=e._closeRequest,e._closeRequest=void 0})(t),ge(e);const r=e._closeAlgorithm();It(e),b(r,(()=>(function(e){e._inFlightCloseRequest._resolve(void 0),e._inFlightCloseRequest=void 0,\"erroring\"===e._state&&(e._storedError=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._resolve(),e._pendingAbortRequest=void 0)),e._state=\"closed\";const t=e._writer;void 0!==t&&Kt(t)}(t),null)),(e=>(function(e,t){e._inFlightCloseRequest._reject(t),e._inFlightCloseRequest=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._reject(t),e._pendingAbortRequest=void 0),Tt(e,t)}(t,e),null)))}(e):function(e,t){const r=e._controlledWritableStream;!function(e){e._inFlightWriteRequest=e._writeRequests.shift()}(r);const o=e._writeAlgorithm(t);b(o,(()=>{!function(e){e._inFlightWriteRequest._resolve(void 0),e._inFlightWriteRequest=void 0}(r);const t=r._state;if(ge(e),!qt(r)&&\"writable\"===t){const t=xt(e);Wt(r,t)}return Mt(e),null}),(t=>(\"writable\"===r._state&&It(e),function(e,t){e._inFlightWriteRequest._reject(t),e._inFlightWriteRequest=void 0,Tt(e,t)}(r,t),null)))}(e,r)}function Yt(e,t){\"writable\"===e._controlledWritableStream._state&&Qt(e,t)}function xt(e){return $t(e)<=0}function Qt(e,t){const r=e._controlledWritableStream;It(e),Ct(r,t)}function Nt(e){return new TypeError(`WritableStream.prototype.${e} can only be used on a WritableStream`)}function Ht(e){return new TypeError(`WritableStreamDefaultController.prototype.${e} can only be used on a WritableStreamDefaultController`)}function Vt(e){return new TypeError(`WritableStreamDefaultWriter.prototype.${e} can only be used on a WritableStreamDefaultWriter`)}function Ut(e){return new TypeError(\"Cannot \"+e+\" a stream using a released writer\")}function Gt(e){e._closedPromise=u(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r,e._closedPromiseState=\"pending\"}))}function Xt(e,t){Gt(e),Jt(e,t)}function Jt(e,t){void 0!==e._closedPromise_reject&&(p(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"rejected\")}function Kt(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"resolved\")}function Zt(e){e._readyPromise=u(((t,r)=>{e._readyPromise_resolve=t,e._readyPromise_reject=r})),e._readyPromiseState=\"pending\"}function er(e,t){Zt(e),rr(e,t)}function tr(e){Zt(e),or(e)}function rr(e,t){void 0!==e._readyPromise_reject&&(p(e._readyPromise),e._readyPromise_reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"rejected\")}function or(e){void 0!==e._readyPromise_resolve&&(e._readyPromise_resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"fulfilled\")}Object.defineProperties(WritableStreamDefaultController.prototype,{abortReason:{enumerable:!0},signal:{enumerable:!0},error:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(WritableStreamDefaultController.prototype,Symbol.toStringTag,{value:\"WritableStreamDefaultController\",configurable:!0});const nr=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:\"undefined\"!=typeof global?global:void 0;const ar=function(){const e=null==nr?void 0:nr.DOMException;return function(e){if(\"function\"!=typeof e&&\"object\"!=typeof e)return!1;if(\"DOMException\"!==e.name)return!1;try{return new e,!0}catch(e){return!1}}(e)?e:void 0}()||function(){const e=function(e,t){this.message=e||\"\",this.name=t||\"Error\",Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)};return o(e,\"DOMException\"),e.prototype=Object.create(Error.prototype),Object.defineProperty(e.prototype,\"constructor\",{value:e,writable:!0,configurable:!0}),e}();function ir(t,r,o,n,a,i){const l=H(t),s=yt(r);t._disturbed=!0;let _=!1,y=c(void 0);return u(((S,g)=>{let v;if(void 0!==i){if(v=()=>{const e=void 0!==i.reason?i.reason:new ar(\"Aborted\",\"AbortError\"),o=[];n||o.push((()=>\"writable\"===r._state?wt(r,e):c(void 0))),a||o.push((()=>\"readable\"===t._state?Or(t,e):c(void 0))),q((()=>Promise.all(o.map((e=>e())))),!0,e)},i.aborted)return void v();i.addEventListener(\"abort\",v)}var w,R,T;if(P(t,l._closedPromise,(e=>(n?E(!0,e):q((()=>wt(r,e)),!0,e),null))),P(r,s._closedPromise,(e=>(a?E(!0,e):q((()=>Or(t,e)),!0,e),null))),w=t,R=l._closedPromise,T=()=>(o?E():q((()=>function(e){const t=e._ownerWritableStream,r=t._state;return qt(t)||\"closed\"===r?c(void 0):\"errored\"===r?d(t._storedError):Bt(e)}(s))),null),\"closed\"===w._state?T():h(R,T),qt(r)||\"closed\"===r._state){const e=new TypeError(\"the destination writable stream closed before all data could be piped to it\");a?E(!0,e):q((()=>Or(t,e)),!0,e)}function C(){const e=y;return f(y,(()=>e!==y?C():void 0))}function P(e,t,r){\"errored\"===e._state?r(e._storedError):m(t,r)}function q(e,t,o){function n(){return b(e(),(()=>O(t,o)),(e=>O(!0,e))),null}_||(_=!0,\"writable\"!==r._state||qt(r)?n():h(C(),n))}function E(e,t){_||(_=!0,\"writable\"!==r._state||qt(r)?O(e,t):h(C(),(()=>O(e,t))))}function O(e,t){return At(s),W(l),void 0!==i&&i.removeEventListener(\"abort\",v),e?g(t):S(void 0),null}p(u(((t,r)=>{!function o(n){n?t():f(_?c(!0):f(s._readyPromise,(()=>u(((t,r)=>{K(l,{_chunkSteps:r=>{y=f(zt(s,r),void 0,e),t(!1)},_closeSteps:()=>t(!0),_errorSteps:r})})))),o,r)}(!1)})))}))}class ReadableStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get desiredSize(){if(!lr(this))throw pr(\"desiredSize\");return hr(this)}close(){if(!lr(this))throw pr(\"close\");if(!mr(this))throw new TypeError(\"The stream is not in a state that permits close\");dr(this)}enqueue(e=void 0){if(!lr(this))throw pr(\"enqueue\");if(!mr(this))throw new TypeError(\"The stream is not in a state that permits enqueue\");return fr(this,e)}error(e=void 0){if(!lr(this))throw pr(\"error\");br(this,e)}[T](e){we(this);const t=this._cancelAlgorithm(e);return cr(this),t}[C](e){const t=this._controlledReadableStream;if(this._queue.length>0){const r=ge(this);this._closeRequested&&0===this._queue.length?(cr(this),Br(t)):sr(this),e._chunkSteps(r)}else V(t,e),sr(this)}[P](){}}function lr(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledReadableStream\")&&e instanceof ReadableStreamDefaultController)}function sr(e){if(!ur(e))return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;b(e._pullAlgorithm(),(()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,sr(e)),null)),(t=>(br(e,t),null)))}function ur(e){const t=e._controlledReadableStream;if(!mr(e))return!1;if(!e._started)return!1;if(Wr(t)&&G(t)>0)return!0;return hr(e)>0}function cr(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function dr(e){if(!mr(e))return;const t=e._controlledReadableStream;e._closeRequested=!0,0===e._queue.length&&(cr(e),Br(t))}function fr(e,t){if(!mr(e))return;const r=e._controlledReadableStream;if(Wr(r)&&G(r)>0)U(r,t,!1);else{let r;try{r=e._strategySizeAlgorithm(t)}catch(t){throw br(e,t),t}try{ve(e,t,r)}catch(t){throw br(e,t),t}}sr(e)}function br(e,t){const r=e._controlledReadableStream;\"readable\"===r._state&&(we(e),cr(e),kr(r,t))}function hr(e){const t=e._controlledReadableStream._state;return\"errored\"===t?null:\"closed\"===t?0:e._strategyHWM-e._queueTotalSize}function mr(e){const t=e._controlledReadableStream._state;return!e._closeRequested&&\"readable\"===t}function _r(e,t,r,o,n,a,i){t._controlledReadableStream=e,t._queue=void 0,t._queueTotalSize=void 0,we(t),t._started=!1,t._closeRequested=!1,t._pullAgain=!1,t._pulling=!1,t._strategySizeAlgorithm=i,t._strategyHWM=a,t._pullAlgorithm=o,t._cancelAlgorithm=n,e._readableStreamController=t;b(c(r()),(()=>(t._started=!0,sr(t),null)),(e=>(br(t,e),null)))}function pr(e){return new TypeError(`ReadableStreamDefaultController.prototype.${e} can only be used on a ReadableStreamDefaultController`)}function yr(e,t){return Te(e._readableStreamController)?function(e){let t,r,o,n,a,i=H(e),l=!1,s=!1,d=!1,f=!1,b=!1;const h=u((e=>{a=e}));function _(e){m(e._closedPromise,(t=>(e!==i||(Qe(o._readableStreamController,t),Qe(n._readableStreamController,t),f&&b||a(void 0)),null)))}function p(){nt(i)&&(W(i),i=H(e),_(i));K(i,{_chunkSteps:t=>{y((()=>{s=!1,d=!1;const r=t;let i=t;if(!f&&!b)try{i=Se(t)}catch(t){return Qe(o._readableStreamController,t),Qe(n._readableStreamController,t),void a(Or(e,t))}f||xe(o._readableStreamController,r),b||xe(n._readableStreamController,i),l=!1,s?g():d&&v()}))},_closeSteps:()=>{l=!1,f||Ye(o._readableStreamController),b||Ye(n._readableStreamController),o._readableStreamController._pendingPullIntos.length>0&&Ue(o._readableStreamController,0),n._readableStreamController._pendingPullIntos.length>0&&Ue(n._readableStreamController,0),f&&b||a(void 0)},_errorSteps:()=>{l=!1}})}function S(t,r){J(i)&&(W(i),i=et(e),_(i));const u=r?n:o,c=r?o:n;at(i,t,1,{_chunkSteps:t=>{y((()=>{s=!1,d=!1;const o=r?b:f;if(r?f:b)o||Ge(u._readableStreamController,t);else{let r;try{r=Se(t)}catch(t){return Qe(u._readableStreamController,t),Qe(c._readableStreamController,t),void a(Or(e,t))}o||Ge(u._readableStreamController,t),xe(c._readableStreamController,r)}l=!1,s?g():d&&v()}))},_closeSteps:e=>{l=!1;const t=r?b:f,o=r?f:b;t||Ye(u._readableStreamController),o||Ye(c._readableStreamController),void 0!==e&&(t||Ge(u._readableStreamController,e),!o&&c._readableStreamController._pendingPullIntos.length>0&&Ue(c._readableStreamController,0)),t&&o||a(void 0)},_errorSteps:()=>{l=!1}})}function g(){if(l)return s=!0,c(void 0);l=!0;const e=He(o._readableStreamController);return null===e?p():S(e._view,!1),c(void 0)}function v(){if(l)return d=!0,c(void 0);l=!0;const e=He(n._readableStreamController);return null===e?p():S(e._view,!0),c(void 0)}function w(o){if(f=!0,t=o,b){const o=ne([t,r]),n=Or(e,o);a(n)}return h}function R(o){if(b=!0,r=o,f){const o=ne([t,r]),n=Or(e,o);a(n)}return h}function T(){}return o=Pr(T,g,w),n=Pr(T,v,R),_(i),[o,n]}(e):function(e,t){const r=H(e);let o,n,a,i,l,s=!1,d=!1,f=!1,b=!1;const h=u((e=>{l=e}));function _(){if(s)return d=!0,c(void 0);s=!0;return K(r,{_chunkSteps:e=>{y((()=>{d=!1;const t=e,r=e;f||fr(a._readableStreamController,t),b||fr(i._readableStreamController,r),s=!1,d&&_()}))},_closeSteps:()=>{s=!1,f||dr(a._readableStreamController),b||dr(i._readableStreamController),f&&b||l(void 0)},_errorSteps:()=>{s=!1}}),c(void 0)}function p(t){if(f=!0,o=t,b){const t=ne([o,n]),r=Or(e,t);l(r)}return h}function S(t){if(b=!0,n=t,f){const t=ne([o,n]),r=Or(e,t);l(r)}return h}function g(){}return a=Cr(g,_,p),i=Cr(g,_,S),m(r._closedPromise,(e=>(br(a._readableStreamController,e),br(i._readableStreamController,e),f&&b||l(void 0),null))),[a,i]}(e)}function Sr(r){return t(o=r)&&void 0!==o.getReader?function(r){let o;function n(){let e;try{e=r.read()}catch(e){return d(e)}return _(e,(e=>{if(!t(e))throw new TypeError(\"The promise returned by the reader.read() method must fulfill with an object\");if(e.done)dr(o._readableStreamController);else{const t=e.value;fr(o._readableStreamController,t)}}))}function a(e){try{return c(r.cancel(e))}catch(e){return d(e)}}return o=Cr(e,n,a,0),o}(r.getReader()):function(r){let o;const n=fe(r,\"async\");function a(){let e;try{e=be(n)}catch(e){return d(e)}return _(c(e),(e=>{if(!t(e))throw new TypeError(\"The promise returned by the iterator.next() method must fulfill with an object\");if(e.done)dr(o._readableStreamController);else{const t=e.value;fr(o._readableStreamController,t)}}))}function i(e){const r=n.iterator;let o;try{o=ue(r,\"return\")}catch(e){return d(e)}if(void 0===o)return c(void 0);return _(g(o,r,[e]),(e=>{if(!t(e))throw new TypeError(\"The promise returned by the iterator.return() method must fulfill with an object\")}))}return o=Cr(e,a,i,0),o}(r);var o}function gr(e,t,r){return F(e,r),r=>g(e,t,[r])}function vr(e,t,r){return F(e,r),r=>g(e,t,[r])}function wr(e,t,r){return F(e,r),r=>S(e,t,[r])}function Rr(e,t){if(\"bytes\"!==(e=`${e}`))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamType`);return e}function Tr(e,t){L(e,t);const r=null==e?void 0:e.preventAbort,o=null==e?void 0:e.preventCancel,n=null==e?void 0:e.preventClose,a=null==e?void 0:e.signal;return void 0!==a&&function(e,t){if(!function(e){if(\"object\"!=typeof e||null===e)return!1;try{return\"boolean\"==typeof e.aborted}catch(e){return!1}}(e))throw new TypeError(`${t} is not an AbortSignal.`)}(a,`${t} has member 'signal' that`),{preventAbort:Boolean(r),preventCancel:Boolean(o),preventClose:Boolean(n),signal:a}}Object.defineProperties(ReadableStreamDefaultController.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},desiredSize:{enumerable:!0}}),o(ReadableStreamDefaultController.prototype.close,\"close\"),o(ReadableStreamDefaultController.prototype.enqueue,\"enqueue\"),o(ReadableStreamDefaultController.prototype.error,\"error\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableStreamDefaultController.prototype,Symbol.toStringTag,{value:\"ReadableStreamDefaultController\",configurable:!0});class ReadableStream{constructor(e={},t={}){void 0===e?e=null:I(e,\"First parameter\");const r=ct(t,\"Second parameter\"),o=function(e,t){L(e,t);const r=e,o=null==r?void 0:r.autoAllocateChunkSize,n=null==r?void 0:r.cancel,a=null==r?void 0:r.pull,i=null==r?void 0:r.start,l=null==r?void 0:r.type;return{autoAllocateChunkSize:void 0===o?void 0:Q(o,`${t} has member 'autoAllocateChunkSize' that`),cancel:void 0===n?void 0:gr(n,r,`${t} has member 'cancel' that`),pull:void 0===a?void 0:vr(a,r,`${t} has member 'pull' that`),start:void 0===i?void 0:wr(i,r,`${t} has member 'start' that`),type:void 0===l?void 0:Rr(l,`${t} has member 'type' that`)}}(e,\"First parameter\");if(qr(this),\"bytes\"===o.type){if(void 0!==r.size)throw new RangeError(\"The strategy for a byte stream cannot have a size function\");!function(e,t,r){const o=Object.create(ReadableByteStreamController.prototype);let n,a,i;n=void 0!==t.start?()=>t.start(o):()=>{},a=void 0!==t.pull?()=>t.pull(o):()=>c(void 0),i=void 0!==t.cancel?e=>t.cancel(e):()=>c(void 0);const l=t.autoAllocateChunkSize;if(0===l)throw new TypeError(\"autoAllocateChunkSize must be greater than 0\");Xe(e,o,n,a,i,r,l)}(this,o,st(r,0))}else{const e=ut(r);!function(e,t,r,o){const n=Object.create(ReadableStreamDefaultController.prototype);let a,i,l;a=void 0!==t.start?()=>t.start(n):()=>{},i=void 0!==t.pull?()=>t.pull(n):()=>c(void 0),l=void 0!==t.cancel?e=>t.cancel(e):()=>c(void 0),_r(e,n,a,i,l,r,o)}(this,o,st(r,1),e)}}get locked(){if(!Er(this))throw jr(\"locked\");return Wr(this)}cancel(e=void 0){return Er(this)?Wr(this)?d(new TypeError(\"Cannot cancel a stream that already has a reader\")):Or(this,e):d(jr(\"cancel\"))}getReader(e=void 0){if(!Er(this))throw jr(\"getReader\");return void 0===function(e,t){L(e,t);const r=null==e?void 0:e.mode;return{mode:void 0===r?void 0:Ze(r,`${t} has member 'mode' that`)}}(e,\"First parameter\").mode?H(this):et(this)}pipeThrough(e,t={}){if(!Er(this))throw jr(\"pipeThrough\");$(e,1,\"pipeThrough\");const r=function(e,t){L(e,t);const r=null==e?void 0:e.readable;M(r,\"readable\",\"ReadableWritablePair\"),N(r,`${t} has member 'readable' that`);const o=null==e?void 0:e.writable;return M(o,\"writable\",\"ReadableWritablePair\"),_t(o,`${t} has member 'writable' that`),{readable:r,writable:o}}(e,\"First parameter\"),o=Tr(t,\"Second parameter\");if(Wr(this))throw new TypeError(\"ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream\");if(vt(r.writable))throw new TypeError(\"ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream\");return p(ir(this,r.writable,o.preventClose,o.preventAbort,o.preventCancel,o.signal)),r.readable}pipeTo(e,t={}){if(!Er(this))return d(jr(\"pipeTo\"));if(void 0===e)return d(\"Parameter 1 is required in 'pipeTo'.\");if(!gt(e))return d(new TypeError(\"ReadableStream.prototype.pipeTo's first argument must be a WritableStream\"));let r;try{r=Tr(t,\"Second parameter\")}catch(e){return d(e)}return Wr(this)?d(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream\")):vt(e)?d(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream\")):ir(this,e,r.preventClose,r.preventAbort,r.preventCancel,r.signal)}tee(){if(!Er(this))throw jr(\"tee\");return ne(yr(this))}values(e=void 0){if(!Er(this))throw jr(\"values\");return function(e,t){const r=H(e),o=new he(r,t),n=Object.create(me);return n._asyncIteratorImpl=o,n}(this,function(e,t){L(e,t);const r=null==e?void 0:e.preventCancel;return{preventCancel:Boolean(r)}}(e,\"First parameter\").preventCancel)}[de](e){return this.values(e)}static from(e){return Sr(e)}}function Cr(e,t,r,o=1,n=(()=>1)){const a=Object.create(ReadableStream.prototype);qr(a);return _r(a,Object.create(ReadableStreamDefaultController.prototype),e,t,r,o,n),a}function Pr(e,t,r){const o=Object.create(ReadableStream.prototype);qr(o);return Xe(o,Object.create(ReadableByteStreamController.prototype),e,t,r,0,void 0),o}function qr(e){e._state=\"readable\",e._reader=void 0,e._storedError=void 0,e._disturbed=!1}function Er(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readableStreamController\")&&e instanceof ReadableStream)}function Wr(e){return void 0!==e._reader}function Or(t,r){if(t._disturbed=!0,\"closed\"===t._state)return c(void 0);if(\"errored\"===t._state)return d(t._storedError);Br(t);const o=t._reader;if(void 0!==o&&nt(o)){const e=o._readIntoRequests;o._readIntoRequests=new v,e.forEach((e=>{e._closeSteps(void 0)}))}return _(t._readableStreamController[T](r),e)}function Br(e){e._state=\"closed\";const t=e._reader;if(void 0!==t&&(A(t),J(t))){const e=t._readRequests;t._readRequests=new v,e.forEach((e=>{e._closeSteps()}))}}function kr(e,t){e._state=\"errored\",e._storedError=t;const r=e._reader;void 0!==r&&(j(r,t),J(r)?Z(r,t):it(r,t))}function jr(e){return new TypeError(`ReadableStream.prototype.${e} can only be used on a ReadableStream`)}function Ar(e,t){L(e,t);const r=null==e?void 0:e.highWaterMark;return M(r,\"highWaterMark\",\"QueuingStrategyInit\"),{highWaterMark:Y(r)}}Object.defineProperties(ReadableStream,{from:{enumerable:!0}}),Object.defineProperties(ReadableStream.prototype,{cancel:{enumerable:!0},getReader:{enumerable:!0},pipeThrough:{enumerable:!0},pipeTo:{enumerable:!0},tee:{enumerable:!0},values:{enumerable:!0},locked:{enumerable:!0}}),o(ReadableStream.from,\"from\"),o(ReadableStream.prototype.cancel,\"cancel\"),o(ReadableStream.prototype.getReader,\"getReader\"),o(ReadableStream.prototype.pipeThrough,\"pipeThrough\"),o(ReadableStream.prototype.pipeTo,\"pipeTo\"),o(ReadableStream.prototype.tee,\"tee\"),o(ReadableStream.prototype.values,\"values\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableStream.prototype,Symbol.toStringTag,{value:\"ReadableStream\",configurable:!0}),Object.defineProperty(ReadableStream.prototype,de,{value:ReadableStream.prototype.values,writable:!0,configurable:!0});const zr=e=>e.byteLength;o(zr,\"size\");class ByteLengthQueuingStrategy{constructor(e){$(e,1,\"ByteLengthQueuingStrategy\"),e=Ar(e,\"First parameter\"),this._byteLengthQueuingStrategyHighWaterMark=e.highWaterMark}get highWaterMark(){if(!Lr(this))throw Dr(\"highWaterMark\");return this._byteLengthQueuingStrategyHighWaterMark}get size(){if(!Lr(this))throw Dr(\"size\");return zr}}function Dr(e){return new TypeError(`ByteLengthQueuingStrategy.prototype.${e} can only be used on a ByteLengthQueuingStrategy`)}function Lr(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_byteLengthQueuingStrategyHighWaterMark\")&&e instanceof ByteLengthQueuingStrategy)}Object.defineProperties(ByteLengthQueuingStrategy.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ByteLengthQueuingStrategy.prototype,Symbol.toStringTag,{value:\"ByteLengthQueuingStrategy\",configurable:!0});const Fr=()=>1;o(Fr,\"size\");class CountQueuingStrategy{constructor(e){$(e,1,\"CountQueuingStrategy\"),e=Ar(e,\"First parameter\"),this._countQueuingStrategyHighWaterMark=e.highWaterMark}get highWaterMark(){if(!$r(this))throw Ir(\"highWaterMark\");return this._countQueuingStrategyHighWaterMark}get size(){if(!$r(this))throw Ir(\"size\");return Fr}}function Ir(e){return new TypeError(`CountQueuingStrategy.prototype.${e} can only be used on a CountQueuingStrategy`)}function $r(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_countQueuingStrategyHighWaterMark\")&&e instanceof CountQueuingStrategy)}function Mr(e,t,r){return F(e,r),r=>g(e,t,[r])}function Yr(e,t,r){return F(e,r),r=>S(e,t,[r])}function xr(e,t,r){return F(e,r),(r,o)=>g(e,t,[r,o])}function Qr(e,t,r){return F(e,r),r=>g(e,t,[r])}Object.defineProperties(CountQueuingStrategy.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(CountQueuingStrategy.prototype,Symbol.toStringTag,{value:\"CountQueuingStrategy\",configurable:!0});class TransformStream{constructor(e={},t={},r={}){void 0===e&&(e=null);const o=ct(t,\"Second parameter\"),n=ct(r,\"Third parameter\"),a=function(e,t){L(e,t);const r=null==e?void 0:e.cancel,o=null==e?void 0:e.flush,n=null==e?void 0:e.readableType,a=null==e?void 0:e.start,i=null==e?void 0:e.transform,l=null==e?void 0:e.writableType;return{cancel:void 0===r?void 0:Qr(r,e,`${t} has member 'cancel' that`),flush:void 0===o?void 0:Mr(o,e,`${t} has member 'flush' that`),readableType:n,start:void 0===a?void 0:Yr(a,e,`${t} has member 'start' that`),transform:void 0===i?void 0:xr(i,e,`${t} has member 'transform' that`),writableType:l}}(e,\"First parameter\");if(void 0!==a.readableType)throw new RangeError(\"Invalid readableType specified\");if(void 0!==a.writableType)throw new RangeError(\"Invalid writableType specified\");const i=st(n,0),l=ut(n),s=st(o,1),f=ut(o);let h;!function(e,t,r,o,n,a){function i(){return t}function l(t){return function(e,t){const r=e._transformStreamController;if(e._backpressure){return _(e._backpressureChangePromise,(()=>{const o=e._writable;if(\"erroring\"===o._state)throw o._storedError;return Zr(r,t)}))}return Zr(r,t)}(e,t)}function s(t){return function(e,t){const r=e._transformStreamController;if(void 0!==r._finishPromise)return r._finishPromise;const o=e._readable;r._finishPromise=u(((e,t)=>{r._finishPromise_resolve=e,r._finishPromise_reject=t}));const n=r._cancelAlgorithm(t);return Jr(r),b(n,(()=>(\"errored\"===o._state?ro(r,o._storedError):(br(o._readableStreamController,t),to(r)),null)),(e=>(br(o._readableStreamController,e),ro(r,e),null))),r._finishPromise}(e,t)}function c(){return function(e){const t=e._transformStreamController;if(void 0!==t._finishPromise)return t._finishPromise;const r=e._readable;t._finishPromise=u(((e,r)=>{t._finishPromise_resolve=e,t._finishPromise_reject=r}));const o=t._flushAlgorithm();return Jr(t),b(o,(()=>(\"errored\"===r._state?ro(t,r._storedError):(dr(r._readableStreamController),to(t)),null)),(e=>(br(r._readableStreamController,e),ro(t,e),null))),t._finishPromise}(e)}function d(){return function(e){return Gr(e,!1),e._backpressureChangePromise}(e)}function f(t){return function(e,t){const r=e._transformStreamController;if(void 0!==r._finishPromise)return r._finishPromise;const o=e._writable;r._finishPromise=u(((e,t)=>{r._finishPromise_resolve=e,r._finishPromise_reject=t}));const n=r._cancelAlgorithm(t);return Jr(r),b(n,(()=>(\"errored\"===o._state?ro(r,o._storedError):(Yt(o._writableStreamController,t),Ur(e),to(r)),null)),(t=>(Yt(o._writableStreamController,t),Ur(e),ro(r,t),null))),r._finishPromise}(e,t)}e._writable=function(e,t,r,o,n=1,a=(()=>1)){const i=Object.create(WritableStream.prototype);return St(i),Ft(i,Object.create(WritableStreamDefaultController.prototype),e,t,r,o,n,a),i}(i,l,c,s,r,o),e._readable=Cr(i,d,f,n,a),e._backpressure=void 0,e._backpressureChangePromise=void 0,e._backpressureChangePromise_resolve=void 0,Gr(e,!0),e._transformStreamController=void 0}(this,u((e=>{h=e})),s,f,i,l),function(e,t){const r=Object.create(TransformStreamDefaultController.prototype);let o,n,a;o=void 0!==t.transform?e=>t.transform(e,r):e=>{try{return Kr(r,e),c(void 0)}catch(e){return d(e)}};n=void 0!==t.flush?()=>t.flush(r):()=>c(void 0);a=void 0!==t.cancel?e=>t.cancel(e):()=>c(void 0);!function(e,t,r,o,n){t._controlledTransformStream=e,e._transformStreamController=t,t._transformAlgorithm=r,t._flushAlgorithm=o,t._cancelAlgorithm=n,t._finishPromise=void 0,t._finishPromise_resolve=void 0,t._finishPromise_reject=void 0}(e,r,o,n,a)}(this,a),void 0!==a.start?h(a.start(this._transformStreamController)):h(void 0)}get readable(){if(!Nr(this))throw oo(\"readable\");return this._readable}get writable(){if(!Nr(this))throw oo(\"writable\");return this._writable}}function Nr(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_transformStreamController\")&&e instanceof TransformStream)}function Hr(e,t){br(e._readable._readableStreamController,t),Vr(e,t)}function Vr(e,t){Jr(e._transformStreamController),Yt(e._writable._writableStreamController,t),Ur(e)}function Ur(e){e._backpressure&&Gr(e,!1)}function Gr(e,t){void 0!==e._backpressureChangePromise&&e._backpressureChangePromise_resolve(),e._backpressureChangePromise=u((t=>{e._backpressureChangePromise_resolve=t})),e._backpressure=t}Object.defineProperties(TransformStream.prototype,{readable:{enumerable:!0},writable:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(TransformStream.prototype,Symbol.toStringTag,{value:\"TransformStream\",configurable:!0});class TransformStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get desiredSize(){if(!Xr(this))throw eo(\"desiredSize\");return hr(this._controlledTransformStream._readable._readableStreamController)}enqueue(e=void 0){if(!Xr(this))throw eo(\"enqueue\");Kr(this,e)}error(e=void 0){if(!Xr(this))throw eo(\"error\");var t;t=e,Hr(this._controlledTransformStream,t)}terminate(){if(!Xr(this))throw eo(\"terminate\");!function(e){const t=e._controlledTransformStream;dr(t._readable._readableStreamController);const r=new TypeError(\"TransformStream terminated\");Vr(t,r)}(this)}}function Xr(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledTransformStream\")&&e instanceof TransformStreamDefaultController)}function Jr(e){e._transformAlgorithm=void 0,e._flushAlgorithm=void 0,e._cancelAlgorithm=void 0}function Kr(e,t){const r=e._controlledTransformStream,o=r._readable._readableStreamController;if(!mr(o))throw new TypeError(\"Readable side is not in a state that permits enqueue\");try{fr(o,t)}catch(e){throw Vr(r,e),r._readable._storedError}const n=function(e){return!ur(e)}(o);n!==r._backpressure&&Gr(r,!0)}function Zr(e,t){return _(e._transformAlgorithm(t),void 0,(t=>{throw Hr(e._controlledTransformStream,t),t}))}function eo(e){return new TypeError(`TransformStreamDefaultController.prototype.${e} can only be used on a TransformStreamDefaultController`)}function to(e){void 0!==e._finishPromise_resolve&&(e._finishPromise_resolve(),e._finishPromise_resolve=void 0,e._finishPromise_reject=void 0)}function ro(e,t){void 0!==e._finishPromise_reject&&(p(e._finishPromise),e._finishPromise_reject(t),e._finishPromise_resolve=void 0,e._finishPromise_reject=void 0)}function oo(e){return new TypeError(`TransformStream.prototype.${e} can only be used on a TransformStream`)}Object.defineProperties(TransformStreamDefaultController.prototype,{enqueue:{enumerable:!0},error:{enumerable:!0},terminate:{enumerable:!0},desiredSize:{enumerable:!0}}),o(TransformStreamDefaultController.prototype.enqueue,\"enqueue\"),o(TransformStreamDefaultController.prototype.error,\"error\"),o(TransformStreamDefaultController.prototype.terminate,\"terminate\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(TransformStreamDefaultController.prototype,Symbol.toStringTag,{value:\"TransformStreamDefaultController\",configurable:!0});export{ByteLengthQueuingStrategy,CountQueuingStrategy,ReadableByteStreamController,ReadableStream,ReadableStreamBYOBReader,ReadableStreamBYOBRequest,ReadableStreamDefaultController,ReadableStreamDefaultReader,TransformStream,TransformStreamDefaultController,WritableStream,WritableStreamDefaultController,WritableStreamDefaultWriter};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\nimport {ReadableStream as WSPReadableStream} from 'web-streams-polyfill';\n\n// @ts-ignore\nexport class ReadableStreamPolyfill extends WSPReadableStream implements ReadableStream {}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nexport class BlobStreamController {\n private chunks: Iterator;\n private isWorking: boolean = false;\n private isCancelled: boolean = false;\n\n /**\n * @param chunks\n */\n constructor(chunks: Iterator) {\n this.chunks = chunks;\n }\n\n /**\n * @param controller\n */\n start(controller: ReadableStreamDefaultController) {\n this.work(controller); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n\n /**\n *\n * @param controller\n */\n async work(controller: ReadableStreamDefaultController) {\n const {chunks} = this;\n\n this.isWorking = true;\n while (!this.isCancelled && (controller.desiredSize || 0) > 0) {\n let next: {done?: boolean; value?: Uint8Array} | undefined;\n try {\n next = chunks.next();\n } catch (error) {\n controller.error(error);\n break;\n }\n\n if (next) {\n if (!next.done && !this.isCancelled) {\n controller.enqueue(next.value);\n } else {\n controller.close();\n }\n }\n }\n\n this.isWorking = false;\n }\n\n /**\n *\n * @param {ReadableStreamDefaultController} controller\n */\n pull(controller) {\n if (!this.isWorking) {\n this.work(controller); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n cancel() {\n this.isCancelled = true;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nimport {ReadableStreamPolyfill} from './readable-stream';\nimport {BlobStreamController} from './blob-stream-controller';\n\n/**\n * Blob stream is a `ReadableStream` extension optimized to have minimal\n * overhead when consumed as `AsyncIterable`.\n * extends {ReadableStream}\n * implements {AsyncIterable}\n */\n// @ts-ignore\nexport class BlobStream extends ReadableStreamPolyfill {\n private readonly _chunks: Uint8Array[];\n /**\n * @param chunks\n */\n constructor(chunks) {\n // @ts-ignore\n super(new BlobStreamController(chunks.values()), {type: 'bytes'});\n /** @private */\n this._chunks = chunks;\n }\n\n /**\n * @property [_options.preventCancel]\n */\n // @ts-ignore\n async *[Symbol.asyncIterator](_options?: {preventCancel?: boolean}): AsyncIterable {\n const reader = this.getReader();\n yield* this._chunks;\n reader.releaseLock();\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// Forked from @gozala's web-blob under MIT license https://github.com/Gozala/web-blob\nimport {BlobStream} from './blob-stream';\n\n/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nexport class BlobPolyfill {\n // implements Blob {\n /** The MIME type of the data contained in the Blob. If type is unknown, string is empty. */\n readonly type: string;\n /** The size, in bytes, of the data contained in the Blob object. */\n size: number;\n private parts: Uint8Array[];\n /**\n * @param [init]\n * @param [options]\n */\n constructor(init: BlobPart[] = [], options: BlobPropertyBag = {}) {\n this.parts = [];\n\n this.size = 0;\n for (const part of init) {\n if (typeof part === 'string') {\n const bytes = new TextEncoder().encode(part);\n this.parts.push(bytes);\n this.size += bytes.byteLength;\n } else if (part instanceof BlobPolyfill) {\n this.size += part.size;\n // @ts-ignore - `parts` is marked private so TS will complain about\n // accessing it.\n this.parts.push(...part.parts);\n } else if (part instanceof ArrayBuffer) {\n this.parts.push(new Uint8Array(part));\n this.size += part.byteLength;\n } else if (part instanceof Uint8Array) {\n this.parts.push(part);\n this.size += part.byteLength;\n } else if (ArrayBuffer.isView(part)) {\n const {buffer, byteOffset, byteLength} = part;\n this.parts.push(new Uint8Array(buffer, byteOffset, byteLength));\n this.size += byteLength;\n } else {\n const bytes = new TextEncoder().encode(String(part));\n this.parts.push(bytes);\n this.size += bytes.byteLength;\n }\n }\n\n /** @private */\n this.type = readType(options.type);\n }\n\n /**\n * Returns a new Blob object containing the data in the specified range of\n * bytes of the blob on which it's called.\n * @param start=0 - An index into the Blob indicating the first\n * byte to include in the new Blob. If you specify a negative value, it's\n * treated as an offset from the end of the Blob toward the beginning. For\n * example, `-10` would be the 10th from last byte in the Blob. The default\n * value is `0`. If you specify a value for start that is larger than the\n * size of the source Blob, the returned Blob has size 0 and contains no\n * data.\n * @param end - An index into the `Blob` indicating the first byte\n * that will *not* be included in the new `Blob` (i.e. the byte exactly at\n * this index is not included). If you specify a negative value, it's treated\n * as an offset from the end of the Blob toward the beginning. For example,\n * `-10` would be the 10th from last byte in the `Blob`. The default value is\n * size.\n * @param type - The content type to assign to the new Blob;\n * this will be the value of its type property. The default value is an empty\n * string.\n */\n slice(start: number = 0, end: number = this.size, type: string = ''): Blob {\n const {size, parts: parts} = this;\n let offset = start < 0 ? Math.max(size + start, 0) : Math.min(start, size);\n\n let limit = end < 0 ? Math.max(size + end, 0) : Math.min(end, size);\n const span = Math.max(limit - offset, 0);\n const blob = new BlobPolyfill([], {type});\n\n if (span === 0) {\n // @ts-ignore\n return blob;\n }\n\n let blobSize = 0;\n const blobParts: Uint8Array[] = [];\n for (const part of parts) {\n const {byteLength} = part;\n if (offset > 0 && byteLength <= offset) {\n offset -= byteLength;\n limit -= byteLength;\n } else {\n const chunk = part.subarray(offset, Math.min(byteLength, limit));\n blobParts.push(chunk);\n blobSize += chunk.byteLength;\n // no longer need to take that into account\n offset = 0;\n\n // don't add the overflow to new blobParts\n if (blobSize >= span) {\n break;\n }\n }\n }\n\n blob.parts = blobParts;\n blob.size = blobSize;\n\n // @ts-ignore\n return blob;\n }\n\n /**\n * Returns a promise that resolves with an ArrayBuffer containing the entire\n * contents of the Blob as binary data.\n */\n // eslint-disable-next-line require-await\n async arrayBuffer(): Promise {\n return this._toArrayBuffer();\n }\n\n /**\n * Returns a promise that resolves with a USVString containing the entire\n * contents of the Blob interpreted as UTF-8 text.\n */\n // eslint-disable-next-line require-await\n async text(): Promise {\n const decoder = new TextDecoder();\n let text = '';\n for (const part of this.parts) {\n text += decoder.decode(part);\n }\n return text;\n }\n\n /**\n */\n // @ts-ignore\n stream(): BlobStream {\n return new BlobStream(this.parts);\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return '[object Blob]';\n }\n\n get [Symbol.toStringTag]() {\n return 'Blob';\n }\n\n _toArrayBuffer(): ArrayBuffer {\n const buffer = new ArrayBuffer(this.size);\n const bytes = new Uint8Array(buffer);\n let offset = 0;\n for (const part of this.parts) {\n bytes.set(part, offset);\n offset += part.byteLength;\n }\n return buffer;\n }\n}\n\n/**\n */\nfunction readType(input: string = ''): string {\n const type = String(input).toLowerCase();\n return /[^\\u0020-\\u007E]/.test(type) ? '' : type;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// import {ReadableStreamPolyfill} from './readable-stream';\nimport {BlobPolyfill} from './blob';\n\nexport function instalBlobPolyfills() {\n if (typeof Blob === 'undefined' && !globalThis.Blob) {\n // @ts-ignore;\n globalThis.Blob = BlobPolyfill;\n }\n\n return globalThis.Blob;\n}\n\nexport const Blob_ = instalBlobPolyfills();\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\nimport {atob} from '../buffer/btoa.node';\n\nexport class FileReaderPolyfill implements FileReader {\n // onload: ({result: any}) => void;\n onload;\n onabort;\n onerror;\n error;\n onloadstart;\n onloadend;\n onprogress;\n\n readyState;\n result;\n DONE;\n EMPTY;\n LOADING;\n addEventListener;\n removeEventListener;\n dispatchEvent;\n\n constructor() {\n this.onload = null;\n }\n\n abort(): void {\n return;\n }\n\n async readAsArrayBuffer(blob: Blob): Promise {\n const arrayBuffer = await blob.arrayBuffer();\n if (this.onload) {\n this.onload({target: {result: arrayBuffer}});\n }\n }\n\n async readAsBinaryString(blob) {\n throw Error('Not implemented');\n }\n\n async readAsDataURL(blob) {\n const text = await blob.text();\n const dataUrl = `data://;base64,${atob(text)}`;\n if (this.onload) {\n this.onload({target: {result: dataUrl}});\n }\n }\n\n async readAsText(blob) {\n const text = await blob.text();\n if (this.onload) {\n this.onload({target: {result: text}});\n }\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// Forked from @gozala's web-file under MIT license https://github.com/Gozala/web-file\n\n/**\n * Forked from @gozala's web-file under MIT license\n * @see https://github.com/Gozala/web-file\n */\n// @ts-ignore\nexport class FilePolyfill extends globalThis.Blob {\n // implements File {\n // public API\n /** The name of the file referenced by the File object. */\n name: string = '';\n /** The path the URL of the File is relative to. */\n webkitRelativePath: string = '';\n\n /**\n * Returns the last modified time of the file, in millisecond since the UNIX\n * epoch (January 1st, 1970 at Midnight).\n */\n lastModified: number;\n\n /**\n * @param init\n * @param name - A USVString representing the file name or the path\n * to the file.\n * @param [options]\n */\n constructor(init: BlobPart[], name: string, options: FilePropertyBag = {}) {\n super(init, options);\n // Per File API spec https://w3c.github.io/FileAPI/#file-constructor\n // Every \"/\" character of file name must be replaced with a \":\".\n /** @private */\n this.name = String(name).replace(/\\//g, ':');\n /** @private */\n this.lastModified = options?.lastModified || Date.now();\n }\n\n get [Symbol.toStringTag]() {\n return 'File';\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// import {ReadableStreamPolyfill} from './readable-stream';\nimport {FileReaderPolyfill} from './file-reader';\nimport {FilePolyfill} from './file';\n\nexport function installFilePolyfills() {\n if (typeof FileReader === 'undefined' && !globalThis.FileReader) {\n // @ts-ignore;\n globalThis.FileReader = FileReaderPolyfill;\n }\n\n // Install minimal Node.js File polyfill\n if (typeof File === 'undefined' && !globalThis.File) {\n // @ts-ignore;\n globalThis.File = FilePolyfill;\n }\n\n return global;\n}\n\nexport const File_ = installFilePolyfills();\n", "// Fork of https://github.com/floatdrop/require-from-string/blob/master/index.js\n// Copyright (c) Vsevolod Strukchinsky (github.com/floatdrop)\n// MIT license\n\n// this file is not visible to webpack (it is excluded in the package.json \"browser\" field).\n\nimport Module from 'module';\nimport path from 'path';\nimport fs from 'fs';\n\n/**\n * Load a file from local file system\n * @param filename\n * @returns\n */\nexport async function readFileAsArrayBuffer(filename: string): Promise {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n return await response.arrayBuffer();\n }\n const buffer = fs.readFileSync(filename);\n return buffer.buffer;\n}\n\n/**\n * Load a file from local file system\n * @param filename\n * @returns\n */\nexport async function readFileAsText(filename: string): Promise {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n return await response.text();\n }\n const text = fs.readFileSync(filename, 'utf8');\n return text;\n}\n\n// Node.js Dynamically require from file\n// Relative names are resolved relative to cwd\n// This indirect function is provided because webpack will try to bundle `module.require`.\n// this file is not visible to webpack (it is excluded in the package.json \"browser\" field).\nexport async function requireFromFile(filename: string): Promise {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n const code = await response.text();\n return requireFromString(code);\n }\n\n if (!filename.startsWith('/')) {\n filename = `${process.cwd()}/${filename}`;\n }\n const code = fs.readFileSync(filename, 'utf8');\n return requireFromString(code);\n}\n\n// Dynamically require from string\n// - `code` - Required - Type: string - Module code.\n// - `filename` - Type: string - Default: '' - Optional filename.\n// - `options.appendPaths` Type: Array List of paths, that will be appended to module paths.\n// Useful, when you want to be able require modules from these paths.\n// - `options.prependPaths` Type: Array Same as appendPaths, but paths will be prepended.\nexport function requireFromString(\n code: string,\n filename = '',\n options?: {\n prependPaths?: string[];\n appendPaths?: string[];\n }\n): any {\n if (typeof filename === 'object') {\n options = filename;\n filename = '';\n }\n filename = filename.replace('file://', '');\n\n if (typeof code !== 'string') {\n throw new Error(`code must be a string, not ${typeof code}`);\n }\n\n // @ts-ignore\n const paths = Module._nodeModulePaths(path.dirname(filename));\n\n const parent = typeof module !== 'undefined' && module?.parent;\n\n // @ts-ignore\n const newModule = new Module(filename, parent);\n newModule.filename = filename;\n newModule.paths = ([] as string[])\n .concat(options?.prependPaths || [])\n .concat(paths)\n .concat(options?.appendPaths || []);\n // @ts-ignore\n newModule._compile(code, filename);\n\n if (parent && parent.children) {\n parent.children.splice(parent.children.indexOf(newModule), 1);\n }\n\n return newModule.exports;\n}\n", "/**\n * Polyfill for Browser Headers\n * Based on https://github.com/github/fetch under MIT license\n */\nexport class Headers {\n map: {};\n\n constructor(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach((value, name) => this.append(name, value));\n } else if (Array.isArray(headers)) {\n headers.forEach((header) => this.append(header[0], header[1]));\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach((name) => this.append(name, headers[name]));\n }\n }\n\n append(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n const oldValue = this.map[name];\n this.map[name] = oldValue ? `${oldValue}, ${value}` : value;\n }\n\n delete(name) {\n delete this.map[normalizeName(name)];\n }\n\n get(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n }\n\n has(name) {\n return this.map.hasOwnProperty(normalizeName(name));\n }\n\n set(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n }\n\n forEach(visitor, thisArg = null) {\n for (const name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n if (thisArg) {\n visitor.call(thisArg, this.map[name], name, this);\n } else {\n visitor(this.map[name], name, this);\n }\n }\n }\n }\n\n keys() {\n const items: any[] = [];\n this.forEach(function (value, name) {\n items.push(name);\n });\n return iteratorFor(items);\n }\n\n values() {\n const items: any[] = [];\n this.forEach(function (value) {\n items.push(value);\n });\n return iteratorFor(items);\n }\n\n entries() {\n const items: any[] = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n }\n\n *[Symbol.iterator]() {\n // @ts-ignore must have a '[Symbol.iterator]()' method that returns an iterator.\n yield* this.entries();\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name');\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n const iterator = {\n next() {\n const value = items.shift();\n return {done: value === undefined, value};\n }\n };\n\n iterator[Symbol.iterator] = function () {\n return iterator;\n };\n\n return iterator;\n}\n", "export function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(`@loaders.gl/polyfills assertion ${message}`);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {assert} from '../utils/assert';\nimport {decompressReadStream, concatenateReadStream} from '../filesystems/stream-utils.node';\nimport {Headers} from './headers-polyfill';\n\nconst isBoolean = (x) => typeof x === 'boolean';\nconst isFunction = (x) => typeof x === 'function';\nconst isObject = (x) => x !== null && typeof x === 'object';\nconst isReadableNodeStream = (x) =>\n isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\n\n/**\n * Polyfill for Browser Response\n *\n * Under Node.js we return a mock \"fetch response object\"\n * so that apps can use the same API as in the browser.\n *\n * Note: This is intended to be a \"lightweight\" implementation and will have limitations.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Response\n */\nimport * as stream from 'stream';\n\nexport class Response {\n readonly ok: boolean;\n readonly status: number;\n readonly statusText: string;\n readonly headers: Headers;\n readonly url: string;\n bodyUsed: boolean = false;\n private readonly _body;\n\n // TODO - handle ArrayBuffer, ArrayBufferView, Buffer\n constructor(\n body,\n options: {\n headers?;\n status?: number;\n statusText?: string;\n url: string;\n }\n ) {\n const {headers, status = 200, statusText = 'OK', url} = options || {};\n\n this.url = url;\n this.ok = status === 200;\n this.status = status; // TODO - handle errors and set status\n this.statusText = statusText;\n this.headers = new Headers(options?.headers || {});\n\n // Check for content-encoding and create a decompression stream\n if (isReadableNodeStream(body)) {\n this._body = decompressReadStream(body, headers);\n } else if (typeof body === 'string') {\n // @ts-expect-error\n this._body = stream.Readable.from([new TextEncoder().encode(body)]);\n } else {\n // @ts-expect-error\n this._body = stream.Readable.from([body || new ArrayBuffer(0)]);\n }\n }\n\n // Subset of Properties\n\n // Returns a readable stream to the \"body\" of the response (or file)\n get body() {\n assert(!this.bodyUsed);\n assert(isReadableNodeStream(this._body)); // Not implemented: conversion of ArrayBuffer etc to stream\n this.bodyUsed = true;\n return this._body;\n }\n\n // Subset of Methods\n\n async arrayBuffer() {\n if (!isReadableNodeStream(this._body)) {\n return this._body || new ArrayBuffer(0);\n }\n const data = await concatenateReadStream(this._body);\n return data;\n }\n\n async text() {\n const arrayBuffer = await this.arrayBuffer();\n const textDecoder = new TextDecoder();\n return textDecoder.decode(arrayBuffer);\n }\n\n async json() {\n const text = await this.text();\n return JSON.parse(text);\n }\n\n async blob() {\n if (typeof Blob === 'undefined') {\n throw new Error('Blob polyfill not installed');\n }\n return new Blob([await this.arrayBuffer()]);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport http from 'http';\nimport https from 'https';\nimport {Response} from './response-polyfill';\nimport {Headers} from './headers-polyfill';\nimport {decodeDataUri} from './decode-data-uri';\n\nconst isDataURL = (url: string): boolean => url.startsWith('data:');\nconst isRequestURL = (url: string): boolean => url.startsWith('http:') || url.startsWith('https:');\n\n/**\n * Emulation of Browser fetch for Node.js\n * @param url\n * @param options\n */\n// eslint-disable-next-line complexity\nexport async function fetchNode(url: string, options: RequestInit): Promise {\n try {\n // Handle file streams in node\n // @ts-expect-error\n if (globalThis.fetch !== fetchNode && (isRequestURL(url) || isDataURL(url))) {\n // @ts-expect-error\n return await fetch(url, options);\n }\n\n // Handle data urls in node, to match `fetch``\n // Note - this loses the MIME type, data URIs are handled directly in fetch\n if (isDataURL(url)) {\n const {arrayBuffer, mimeType} = decodeDataUri(url);\n const response = new Response(arrayBuffer, {\n headers: {'content-type': mimeType},\n url\n });\n return response;\n }\n\n // Automatically decompress gzipped files with .gz extension\n const syntheticResponseHeaders = {};\n const originalUrl = url;\n if (url.endsWith('.gz')) {\n url = url.slice(0, -3);\n syntheticResponseHeaders['content-encoding'] = 'gzip';\n }\n\n // Need to create the stream in advance since Response constructor needs to be sync\n const body = await createHTTPRequestReadStream(originalUrl, options);\n const headers = getHeaders(url, body, syntheticResponseHeaders);\n const {status, statusText} = getStatus(body);\n\n const followRedirect =\n // @ts-expect-error\n !options || options.followRedirect || options.followRedirect === undefined;\n\n if (status >= 300 && status < 400 && headers.has('location') && followRedirect) {\n const redirectUrl = generateRedirectUrl(url, headers.get('location'));\n\n // Redirect\n return await fetchNode(redirectUrl, options);\n }\n return new Response(body, {headers, status, statusText, url});\n } catch (error) {\n // TODO - what error code to use here?\n return new Response(null, {status: 400, statusText: String(error), url});\n }\n}\n\n/** Returns a promise that resolves to a readable stream */\nexport async function createHTTPRequestReadStream(\n url: string,\n options\n): Promise {\n // HANDLE HTTP/HTTPS REQUESTS IN NODE\n // TODO: THIS IS BAD SINCE WE RETURN A PROMISE INSTEAD OF A STREAM\n return await new Promise((resolve, reject) => {\n const requestOptions = getRequestOptions(url, options);\n const req = url.startsWith('https:')\n ? https.request(requestOptions, (res) => resolve(res))\n : http.request(requestOptions, (res) => resolve(res));\n req.on('error', (error) => reject(error));\n req.end();\n });\n}\n\n/**\n * Generate redirect url from location without origin and protocol.\n * @param originalUrl\n * @param redirectUrl\n */\nfunction generateRedirectUrl(originalUrl: string, location: string): string {\n if (location.startsWith('http')) {\n return location;\n }\n // If url doesn't have origin and protocol just extend current url origin with location.\n const url = new URL(originalUrl);\n url.pathname = location;\n\n return url.href;\n}\n\n// HELPER FUNCTIONS\n\nfunction getRequestOptions(url: string, options?: {fetch?: typeof fetch; headers?}) {\n // Ensure header keys are lower case so that we can merge without duplicates\n const originalHeaders = options?.headers || {};\n const headers = {};\n for (const key of Object.keys(originalHeaders)) {\n headers[key.toLowerCase()] = originalHeaders[key];\n }\n\n // Add default accept-encoding to headers\n headers['accept-encoding'] = headers['accept-encoding'] || 'gzip,br,deflate';\n\n const urlObject = new URL(url);\n return {\n hostname: urlObject.hostname,\n path: urlObject.pathname,\n method: 'GET',\n // Add options and user provided 'options.fetch' overrides if available\n ...options,\n ...options?.fetch,\n // Override with updated headers with accepted encodings:\n headers,\n port: urlObject.port\n };\n}\n\nfunction getStatus(httpResponse: http.IncomingMessage): {status: number; statusText: string} {\n if (httpResponse.statusCode) {\n return {status: httpResponse.statusCode, statusText: httpResponse.statusMessage || 'NA'};\n }\n return {status: 200, statusText: 'OK'};\n}\n\nfunction getHeaders(url, httpResponse, additionalHeaders = {}) {\n const headers = {};\n\n if (httpResponse && httpResponse.headers) {\n const httpHeaders = httpResponse.headers;\n for (const key in httpHeaders) {\n const header = httpHeaders[key];\n headers[key.toLowerCase()] = String(header);\n }\n }\n\n // Fix up content length if we can for best progress experience\n if (!headers['content-length']) {\n const contentLength = getContentLength(url);\n if (Number.isFinite(contentLength)) {\n headers['content-length'] = contentLength;\n }\n }\n\n Object.assign(headers, additionalHeaders);\n\n return new Headers(headers);\n}\n\n/** Needs to be read from actual headers */\nfunction getContentLength(url: string): number | null {\n // TODO - remove media type etc\n return isDataURL(url) ? url.length - 'data:'.length : null;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// Based on binary-gltf-utils under MIT license: Copyright (c) 2016-17 Karl Cheng\n\nconst isArrayBuffer = (x) => x && x instanceof ArrayBuffer;\nconst isBuffer = (x) => x && x instanceof Buffer;\n\n/**\n * Parses a data URI into a buffer, as well as retrieving its declared MIME type.\n *\n * @param {string} uri - a data URI (assumed to be valid)\n * @returns {Object} { buffer, mimeType }\n */\nexport function decodeDataUri(uri: string): {arrayBuffer: ArrayBuffer; mimeType: string} {\n const dataIndex = uri.indexOf(',');\n\n let buffer;\n let mimeType;\n if (uri.slice(dataIndex - 7, dataIndex) === ';base64') {\n buffer = Buffer.from(uri.slice(dataIndex + 1), 'base64');\n mimeType = uri.slice(5, dataIndex - 7).trim();\n } else {\n buffer = Buffer.from(decodeURIComponent(uri.slice(dataIndex + 1)));\n mimeType = uri.slice(5, dataIndex).trim();\n }\n\n if (!mimeType) {\n mimeType = 'text/plain;charset=US-ASCII';\n } else if (mimeType.startsWith(';')) {\n mimeType = `text/plain${mimeType}`;\n }\n\n return {arrayBuffer: toArrayBuffer(buffer), mimeType};\n}\n\n/**\n * @param data\n * @todo Duplicate of core\n */\nexport function toArrayBuffer(data: unknown): ArrayBuffer {\n if (isArrayBuffer(data)) {\n return data as ArrayBuffer;\n }\n\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (isBuffer(data)) {\n // @ts-expect-error\n const typedArray = new Uint8Array(data);\n return typedArray.buffer;\n }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n return data.buffer;\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n // @ts-expect-error\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n // @ts-expect-error\n return data._toArrayBuffer();\n }\n\n throw new Error(`toArrayBuffer(${JSON.stringify(data, null, 2).slice(10)})`);\n}\n", "// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {DracoMesh} from './lib/draco-types';\nimport type {DracoParseOptions} from './lib/draco-parser';\nimport {VERSION} from './lib/utils/version';\n\nexport type DracoLoaderOptions = LoaderOptions & {\n draco?: DracoParseOptions & {\n /** @deprecated WASM decoding is faster but JS is more backwards compatible */\n decoderType?: 'wasm' | 'js';\n /** @deprecated Specify where to load the Draco decoder library */\n libraryPath?: string;\n /** Override the URL to the worker bundle (by default loads from unpkg.com) */\n workerUrl?: string;\n };\n};\n\n/**\n * Worker loader for Draco3D compressed geometries\n */\nexport const DracoLoader = {\n dataType: null as unknown as DracoMesh,\n batchType: null as never,\n name: 'Draco',\n id: 'draco',\n module: 'draco',\n // shapes: ['mesh'],\n version: VERSION,\n worker: true,\n extensions: ['drc'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['DRACO'],\n options: {\n draco: {\n decoderType: typeof WebAssembly === 'object' ? 'wasm' : 'js', // 'js' for IE11\n libraryPath: 'libs/',\n extraAttributes: {},\n attributeNameEntry: undefined\n }\n }\n} as const satisfies Loader;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DataType} from '../../../types/schema';\nimport {TypedArray, TypedArrayConstructor, ArrayType} from '../../../types/types';\n\n/** Deduce column types from values */\nexport function getDataTypeFromValue(\n value: unknown,\n defaultNumberType: 'float32' = 'float32'\n): DataType {\n if (value instanceof Date) {\n return 'date-millisecond';\n }\n if (value instanceof Number) {\n return defaultNumberType;\n }\n if (typeof value === 'string') {\n return 'utf8';\n }\n if (value === null || value === 'undefined') {\n return 'null';\n }\n return 'null';\n}\n\n/**\n * Deduces a simple data type \"descriptor from a typed array instance\n */\nexport function getDataTypeFromArray(array: ArrayType): {type: DataType; nullable: boolean} {\n let type = getDataTypeFromTypedArray(array as TypedArray);\n if (type !== 'null') {\n return {type, nullable: false};\n }\n if (array.length > 0) {\n type = getDataTypeFromValue(array[0]);\n return {type, nullable: true};\n }\n\n return {type: 'null', nullable: true};\n}\n\n/**\n * Deduces a simple data type \"descriptor from a typed array instance\n */\nexport function getDataTypeFromTypedArray(array: TypedArray): DataType {\n switch (array.constructor) {\n case Int8Array:\n return 'int8';\n case Uint8Array:\n case Uint8ClampedArray:\n return 'uint8';\n case Int16Array:\n return 'int16';\n case Uint16Array:\n return 'uint16';\n case Int32Array:\n return 'int32';\n case Uint32Array:\n return 'uint32';\n case Float32Array:\n return 'float32';\n case Float64Array:\n return 'float64';\n default:\n return 'null';\n }\n}\n\nexport function getArrayTypeFromDataType(\n type: DataType,\n nullable: boolean | undefined\n): TypedArrayConstructor | ArrayConstructor {\n if (!nullable) {\n switch (type) {\n case 'int8':\n return Int8Array;\n case 'uint8':\n return Uint8Array;\n case 'int16':\n return Int16Array;\n case 'uint16':\n return Uint16Array;\n case 'int32':\n return Int32Array;\n case 'uint32':\n return Uint32Array;\n case 'float32':\n return Float32Array;\n case 'float64':\n return Float64Array;\n default:\n break;\n }\n }\n\n // if (typeof BigInt64Array !== 'undefined') {\n // TYPED_ARRAY_TO_TYPE.BigInt64Array = new Int64();\n // TYPED_ARRAY_TO_TYPE.BigUint64Array = new Uint64();\n // }\n\n return Array;\n}\n", "// Mesh category utilities\n// TODO - move to mesh category module, or to math.gl/geometry module\nimport {TypedArray} from '../../types/types';\nimport {MeshAttributes} from '../../types/category-mesh';\n\ntype TypedArrays = {[key: string]: TypedArray};\n\n/**\n * Holds an axis aligned bounding box\n * TODO - make sure AxisAlignedBoundingBox in math.gl/culling understands this format (or change this format)\n */\ntype BoundingBox = [[number, number, number], [number, number, number]];\n\n/**\n * Get number of vertices in mesh\n * @param attributes\n */\nexport function getMeshSize(attributes: TypedArrays): number {\n let size = 0;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n if (ArrayBuffer.isView(attribute)) {\n // @ts-ignore DataView doesn't have BYTES_PER_ELEMENT\n size += attribute.byteLength * attribute.BYTES_PER_ELEMENT;\n }\n }\n return size;\n}\n\n/**\n * Get the (axis aligned) bounding box of a mesh\n * @param attributes\n * @returns array of two vectors representing the axis aligned bounding box\n */\n// eslint-disable-next-line complexity\nexport function getMeshBoundingBox(attributes: MeshAttributes): BoundingBox {\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n\n const positions = attributes.POSITION ? attributes.POSITION.value : [];\n const len = positions && positions.length;\n\n for (let i = 0; i < len; i += 3) {\n const x = positions[i];\n const y = positions[i + 1];\n const z = positions[i + 2];\n\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n minZ = z < minZ ? z : minZ;\n\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n maxZ = z > maxZ ? z : maxZ;\n }\n return [\n [minX, minY, minZ],\n [maxX, maxY, maxZ]\n ];\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {MeshAttribute, MeshAttributes} from '../../types/category-mesh';\nimport {Schema, Field} from '../../types/schema';\nimport {getDataTypeFromTypedArray} from '../table/simple-table/data-type';\n\n/**\n * Create a schema for mesh attributes data\n * @param attributes\n * @param metadata\n * @returns\n */\nexport function deduceMeshSchema(\n attributes: MeshAttributes,\n metadata: Record = {}\n): Schema {\n const fields = deduceMeshFields(attributes);\n return {fields, metadata};\n}\n\n/**\n * Create arrow-like schema field for mesh attribute\n * @param attributeName\n * @param attribute\n * @param optionalMetadata\n * @returns\n */\nexport function deduceMeshField(\n name: string,\n attribute: MeshAttribute,\n optionalMetadata?: Record\n): Field {\n const type = getDataTypeFromTypedArray(attribute.value);\n const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);\n return {\n name,\n type: {type: 'fixed-size-list', listSize: attribute.size, children: [{name: 'value', type}]},\n nullable: false,\n metadata\n };\n}\n\n/**\n * Create fields array for mesh attributes\n * @param attributes\n * @returns\n */\nfunction deduceMeshFields(attributes: MeshAttributes): Field[] {\n const fields: Field[] = [];\n for (const attributeName in attributes) {\n const attribute: MeshAttribute = attributes[attributeName];\n fields.push(deduceMeshField(attributeName, attribute));\n }\n return fields;\n}\n\n/**\n * Make metadata by mesh attribute properties\n * @param attribute\n * @returns\n */\nexport function makeMeshAttributeMetadata(attribute: MeshAttribute): Record {\n const result: Record = {};\n if ('byteOffset' in attribute) {\n result.byteOffset = attribute.byteOffset!.toString(10);\n }\n if ('byteStride' in attribute) {\n result.byteStride = attribute.byteStride!.toString(10);\n }\n if ('normalized' in attribute) {\n result.normalized = attribute.normalized!.toString();\n }\n return result;\n}\n", "import {deduceMeshField, MeshAttribute, Schema, Field} from '@loaders.gl/schema';\nimport type {DracoAttribute, DracoLoaderData, DracoMetadataEntry} from '../draco-types';\n\n/** Extract an arrow-like schema from a Draco mesh */\nexport function getDracoSchema(\n attributes: {[attributeName: string]: MeshAttribute},\n loaderData: DracoLoaderData,\n indices?: MeshAttribute\n): Schema {\n const metadata = makeMetadata(loaderData.metadata);\n const fields: Field[] = [];\n const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const field = getArrowFieldFromAttribute(\n attributeName,\n attribute,\n namedLoaderDataAttributes[attributeName]\n );\n fields.push(field);\n }\n if (indices) {\n const indicesField = getArrowFieldFromAttribute('indices', indices);\n fields.push(indicesField);\n }\n return {fields, metadata};\n}\n\nfunction transformAttributesLoaderData(loaderData: {[key: number]: DracoAttribute}): {\n [attributeName: string]: DracoAttribute;\n} {\n const result: {[attributeName: string]: DracoAttribute} = {};\n for (const key in loaderData) {\n const dracoAttribute = loaderData[key];\n result[dracoAttribute.name || 'undefined'] = dracoAttribute;\n }\n return result;\n}\n\nfunction getArrowFieldFromAttribute(\n attributeName: string,\n attribute: MeshAttribute,\n loaderData?: DracoAttribute\n): Field {\n const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;\n const field = deduceMeshField(attributeName, attribute, metadataMap);\n return field;\n}\n\nfunction makeMetadata(metadata: {[key: string]: DracoMetadataEntry}): Record {\n Object.entries(metadata);\n const serializedMetadata: Record = {};\n for (const key in metadata) {\n serializedMetadata[`${key}.string`] = JSON.stringify(metadata[key]);\n }\n return serializedMetadata;\n}\n", "/* eslint-disable camelcase */\n\nimport type {TypedArray, MeshAttribute, MeshGeometry} from '@loaders.gl/schema';\n\n// Draco types (input)\nimport type {\n Draco3D,\n Decoder,\n Mesh,\n PointCloud,\n PointAttribute,\n Metadata,\n MetadataQuerier,\n DracoInt32Array,\n draco_DataType\n} from '../draco3d/draco3d-types';\n\n// Parsed data types (output)\nimport type {\n DracoMesh,\n DracoLoaderData,\n DracoAttribute,\n DracoMetadataEntry,\n DracoQuantizationTransform,\n DracoOctahedronTransform\n} from './draco-types';\n\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {getDracoSchema} from './utils/get-draco-schema';\n\n/** Options to control draco parsing */\nexport type DracoParseOptions = {\n /** How triangle indices should be generated (mesh only) */\n topology?: 'triangle-list' | 'triangle-strip';\n /** Specify which attribute metadata entry stores the attribute name */\n attributeNameEntry?: string;\n /** Names and ids of extra attributes to include in the output */\n extraAttributes?: {[uniqueId: string]: number};\n /** Skip transforms specific quantized attributes */\n quantizedAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n /** Skip transforms specific octahedron encoded attributes */\n octahedronAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n};\n\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst GEOMETRY_TYPE = {\n TRIANGULAR_MESH: 0,\n POINT_CLOUD: 1\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR: 'COLOR_0',\n TEX_COORD: 'TEXCOORD_0'\n};\n\nconst DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {\n 1: Int8Array,\n 2: Uint8Array,\n 3: Int16Array,\n 4: Uint16Array,\n 5: Int32Array,\n 6: Uint32Array,\n // 7: BigInt64Array,\n // 8: BigUint64Array,\n 9: Float32Array\n // 10: Float64Array\n // 11: BOOL - What array type do we use for this?\n};\n\nconst INDEX_ITEM_SIZE = 4;\n\nexport default class DracoParser {\n draco: Draco3D;\n decoder: Decoder;\n metadataQuerier: MetadataQuerier;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.decoder = new this.draco.Decoder();\n this.metadataQuerier = new this.draco.MetadataQuerier();\n }\n\n /**\n * Destroy draco resources\n */\n destroy(): void {\n this.draco.destroy(this.decoder);\n this.draco.destroy(this.metadataQuerier);\n }\n\n /**\n * NOTE: caller must call `destroyGeometry` on the return value after using it\n * @param arrayBuffer\n * @param options\n */\n parseSync(arrayBuffer: ArrayBuffer, options: DracoParseOptions = {}): DracoMesh {\n const buffer = new this.draco.DecoderBuffer();\n buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);\n\n this._disableAttributeTransforms(options);\n\n const geometry_type = this.decoder.GetEncodedGeometryType(buffer);\n const dracoGeometry =\n geometry_type === this.draco.TRIANGULAR_MESH\n ? new this.draco.Mesh()\n : new this.draco.PointCloud();\n\n try {\n let dracoStatus;\n switch (geometry_type) {\n case this.draco.TRIANGULAR_MESH:\n dracoStatus = this.decoder.DecodeBufferToMesh(buffer, dracoGeometry as Mesh);\n break;\n\n case this.draco.POINT_CLOUD:\n dracoStatus = this.decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);\n break;\n\n default:\n throw new Error('DRACO: Unknown geometry type.');\n }\n\n if (!dracoStatus.ok() || !dracoGeometry.ptr) {\n const message = `DRACO decompression failed: ${dracoStatus.error_msg()}`;\n // console.error(message);\n throw new Error(message);\n }\n\n const loaderData = this._getDracoLoaderData(dracoGeometry, geometry_type, options);\n\n const geometry = this._getMeshData(dracoGeometry, loaderData, options);\n\n const boundingBox = getMeshBoundingBox(geometry.attributes);\n\n const schema = getDracoSchema(geometry.attributes, loaderData, geometry.indices);\n\n const data: DracoMesh = {\n loader: 'draco',\n loaderData,\n header: {\n vertexCount: dracoGeometry.num_points(),\n boundingBox\n },\n ...geometry,\n schema\n };\n return data;\n } finally {\n this.draco.destroy(buffer);\n if (dracoGeometry) {\n this.draco.destroy(dracoGeometry);\n }\n }\n }\n\n // Draco specific \"loader data\"\n\n /**\n * Extract\n * @param dracoGeometry\n * @param geometry_type\n * @param options\n * @returns\n */\n _getDracoLoaderData(\n dracoGeometry: Mesh | PointCloud,\n geometry_type,\n options: DracoParseOptions\n ): DracoLoaderData {\n const metadata = this._getTopLevelMetadata(dracoGeometry);\n const attributes = this._getDracoAttributes(dracoGeometry, options);\n\n return {\n geometry_type,\n num_attributes: dracoGeometry.num_attributes(),\n num_points: dracoGeometry.num_points(),\n num_faces: dracoGeometry instanceof this.draco.Mesh ? dracoGeometry.num_faces() : 0,\n metadata,\n attributes\n };\n }\n\n /**\n * Extract all draco provided information and metadata for each attribute\n * @param dracoGeometry\n * @param options\n * @returns\n */\n _getDracoAttributes(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: DracoAttribute} {\n const dracoAttributes: {[unique_id: number]: DracoAttribute} = {};\n\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n // Note: Draco docs do not seem clear on `GetAttribute` ids just being a zero-based index,\n // but it does seems to work this way\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n\n const metadata = this._getAttributeMetadata(dracoGeometry, attributeId);\n\n dracoAttributes[dracoAttribute.unique_id()] = {\n unique_id: dracoAttribute.unique_id(),\n attribute_type: dracoAttribute.attribute_type(),\n data_type: dracoAttribute.data_type(),\n num_components: dracoAttribute.num_components(),\n\n byte_offset: dracoAttribute.byte_offset(),\n byte_stride: dracoAttribute.byte_stride(),\n normalized: dracoAttribute.normalized(),\n attribute_index: attributeId,\n\n metadata\n };\n\n // Add transformation parameters for any attributes app wants untransformed\n const quantization = this._getQuantizationTransform(dracoAttribute, options);\n if (quantization) {\n dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;\n }\n\n const octahedron = this._getOctahedronTransform(dracoAttribute, options);\n if (octahedron) {\n dracoAttributes[dracoAttribute.unique_id()].octahedron_transform = octahedron;\n }\n }\n\n return dracoAttributes;\n }\n\n /**\n * Get standard loaders.gl mesh category data\n * Extracts the geometry from draco\n * @param dracoGeometry\n * @param options\n */\n _getMeshData(\n dracoGeometry: Mesh | PointCloud,\n loaderData: DracoLoaderData,\n options: DracoParseOptions\n ): MeshGeometry {\n const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);\n\n const positionAttribute = attributes.POSITION;\n if (!positionAttribute) {\n throw new Error('DRACO: No position attribute found.');\n }\n\n // For meshes, we need indices to define the faces.\n if (dracoGeometry instanceof this.draco.Mesh) {\n switch (options.topology) {\n case 'triangle-strip':\n return {\n topology: 'triangle-strip',\n mode: 4, // GL.TRIANGLES\n attributes,\n indices: {\n value: this._getTriangleStripIndices(dracoGeometry),\n size: 1\n }\n };\n case 'triangle-list':\n default:\n return {\n topology: 'triangle-list',\n mode: 5, // GL.TRIANGLE_STRIP\n attributes,\n indices: {\n value: this._getTriangleListIndices(dracoGeometry),\n size: 1\n }\n };\n }\n }\n\n // PointCloud - must come last as Mesh inherits from PointCloud\n return {\n topology: 'point-list',\n mode: 0, // GL.POINTS\n attributes\n };\n }\n\n _getMeshAttributes(\n loaderData: DracoLoaderData,\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[attributeName: string]: MeshAttribute} {\n const attributes: {[key: string]: MeshAttribute} = {};\n\n for (const loaderAttribute of Object.values(loaderData.attributes)) {\n const attributeName = this._deduceAttributeName(loaderAttribute, options);\n loaderAttribute.name = attributeName;\n const values = this._getAttributeValues(dracoGeometry, loaderAttribute);\n if (values) {\n const {value, size} = values;\n attributes[attributeName] = {\n value,\n size,\n byteOffset: loaderAttribute.byte_offset,\n byteStride: loaderAttribute.byte_stride,\n normalized: loaderAttribute.normalized\n };\n }\n }\n\n return attributes;\n }\n\n // MESH INDICES EXTRACTION\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleListIndices(dracoGeometry: Mesh) {\n // Example on how to retrieve mesh and attributes.\n const numFaces = dracoGeometry.num_faces();\n const numIndices = numFaces * 3;\n const byteLength = numIndices * INDEX_ITEM_SIZE;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n this.decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n return new Uint32Array(this.draco.HEAPF32.buffer, ptr, numIndices).slice();\n } finally {\n this.draco._free(ptr);\n }\n }\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleStripIndices(dracoGeometry: Mesh) {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n /* const numStrips = */ this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);\n return getUint32Array(dracoArray);\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n /**\n *\n * @param dracoGeometry\n * @param dracoAttribute\n * @param attributeName\n */\n _getAttributeValues(\n dracoGeometry: Mesh | PointCloud,\n attribute: DracoAttribute\n ): {value: TypedArray; size: number} | null {\n const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];\n if (!TypedArrayCtor) {\n // eslint-disable-next-line no-console\n console.warn(`DRACO: Unsupported attribute type ${attribute.data_type}`);\n return null;\n }\n const numComponents = attribute.num_components;\n const numPoints = dracoGeometry.num_points();\n const numValues = numPoints * numComponents;\n\n const byteLength = numValues * TypedArrayCtor.BYTES_PER_ELEMENT;\n const dataType = getDracoDataType(this.draco, TypedArrayCtor);\n\n let value: TypedArray;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);\n this.decoder.GetAttributeDataArrayForAllPoints(\n dracoGeometry,\n dracoAttribute,\n dataType,\n byteLength,\n ptr\n );\n value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();\n } finally {\n this.draco._free(ptr);\n }\n\n return {value, size: numComponents};\n }\n\n // Attribute names\n\n /** \n * DRACO does not store attribute names - We need to deduce an attribute name\n * for each attribute\n _getAttributeNames(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: string} {\n const attributeNames: {[unique_id: number]: string} = {};\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n const attributeName = this._deduceAttributeName(dracoAttribute, options);\n attributeNames[attributeName] = attributeName;\n }\n return attributeNames;\n }\n */\n\n /**\n * Deduce an attribute name.\n * @note DRACO does not save attribute names, just general type (POSITION, COLOR)\n * to help optimize compression. We generate GLTF compatible names for the Draco-recognized\n * types\n * @param attributeData\n */\n _deduceAttributeName(attribute: DracoAttribute, options: DracoParseOptions): string {\n // Deduce name based on application provided map\n const uniqueId = attribute.unique_id;\n for (const [attributeName, attributeUniqueId] of Object.entries(\n options.extraAttributes || {}\n )) {\n if (attributeUniqueId === uniqueId) {\n return attributeName;\n }\n }\n\n // Deduce name based on attribute type\n const thisAttributeType = attribute.attribute_type;\n for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {\n const attributeType = this.draco[dracoAttributeConstant];\n if (attributeType === thisAttributeType) {\n // TODO - Return unique names if there multiple attributes per type\n // (e.g. multiple TEX_COORDS or COLORS)\n return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];\n }\n }\n\n // Look up in metadata\n // TODO - shouldn't this have priority?\n const entryName = options.attributeNameEntry || 'name';\n if (attribute.metadata[entryName]) {\n return attribute.metadata[entryName].string;\n }\n\n // Attribute of \"GENERIC\" type, we need to assign some name\n return `CUSTOM_ATTRIBUTE_${uniqueId}`;\n }\n\n // METADATA EXTRACTION\n\n /** Get top level metadata */\n _getTopLevelMetadata(dracoGeometry: Mesh | PointCloud) {\n const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /** Get per attribute metadata */\n _getAttributeMetadata(dracoGeometry: Mesh | PointCloud, attributeId: number) {\n const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /**\n * Extract metadata field values\n * @param dracoMetadata\n * @returns\n */\n _getDracoMetadata(dracoMetadata: Metadata): {[entry: string]: DracoMetadataEntry} {\n // The not so wonderful world of undocumented Draco APIs :(\n if (!dracoMetadata || !dracoMetadata.ptr) {\n return {};\n }\n const result = {};\n const numEntries = this.metadataQuerier.NumEntries(dracoMetadata);\n for (let entryIndex = 0; entryIndex < numEntries; entryIndex++) {\n const entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);\n result[entryName] = this._getDracoMetadataField(dracoMetadata, entryName);\n }\n return result;\n }\n\n /**\n * Extracts possible values for one metadata entry by name\n * @param dracoMetadata\n * @param entryName\n */\n _getDracoMetadataField(dracoMetadata: Metadata, entryName: string): DracoMetadataEntry {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n // Draco metadata fields can hold int32 arrays\n this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);\n const intArray = getInt32Array(dracoArray);\n return {\n int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),\n string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),\n double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),\n intArray\n };\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n // QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)\n\n /** Skip transforms for specific attribute types */\n _disableAttributeTransforms(options: DracoParseOptions) {\n const {quantizedAttributes = [], octahedronAttributes = []} = options;\n const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];\n for (const dracoAttributeName of skipAttributes) {\n this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);\n }\n }\n\n /**\n * Extract (and apply?) Position Transform\n * @todo not used\n */\n _getQuantizationTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoQuantizationTransform | null {\n const {quantizedAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const skip = quantizedAttributes.map((type) => this.decoder[type]).includes(attribute_type);\n if (skip) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits(),\n range: transform.range(),\n min_values: new Float32Array([1, 2, 3]).map((i) => transform.min_value(i))\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n _getOctahedronTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoOctahedronTransform | null {\n const {octahedronAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const octahedron = octahedronAttributes\n .map((type) => this.decoder[type])\n .includes(attribute_type);\n if (octahedron) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits()\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n // HELPERS\n}\n\n/**\n * Get draco specific data type by TypedArray constructor type\n * @param attributeType\n * @returns draco specific data type\n */\nfunction getDracoDataType(draco: Draco3D, attributeType: any): draco_DataType {\n switch (attributeType) {\n case Float32Array:\n return draco.DT_FLOAT32;\n case Int8Array:\n return draco.DT_INT8;\n case Int16Array:\n return draco.DT_INT16;\n case Int32Array:\n return draco.DT_INT32;\n case Uint8Array:\n return draco.DT_UINT8;\n case Uint16Array:\n return draco.DT_UINT16;\n case Uint32Array:\n return draco.DT_UINT32;\n default:\n return draco.DT_INVALID;\n }\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getInt32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getUint32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n", "// Dynamic DRACO module loading inspired by THREE.DRACOLoader\n// https://github.com/mrdoob/three.js/blob/398c4f39ebdb8b23eefd4a7a5ec49ec0c96c7462/examples/jsm/loaders/DRACOLoader.js\n// by Don McCurdy / https://www.donmccurdy.com / MIT license\n\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\nconst DRACO_DECODER_VERSION = '1.5.6';\nconst DRACO_ENCODER_VERSION = '1.4.1';\n\nconst STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;\n\nexport const DRACO_EXTERNAL_LIBRARIES = {\n /** The primary Draco3D encoder, javascript wrapper part */\n DECODER: 'draco_wasm_wrapper.js',\n /** The primary draco decoder, compiled web assembly part */\n DECODER_WASM: 'draco_decoder.wasm',\n /** Fallback decoder for non-webassebly environments. Very big bundle, lower performance */\n FALLBACK_DECODER: 'draco_decoder.js',\n /** Draco encoder */\n ENCODER: 'draco_encoder.js'\n};\n\nexport const DRACO_EXTERNAL_LIBRARY_URLS = {\n [DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,\n [DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,\n [DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,\n [DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`\n};\n\nlet loadDecoderPromise;\nlet loadEncoderPromise;\n\nexport async function loadDracoDecoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadDecoderPromise ||= modules.draco3d.createDecoderModule({}).then((draco) => {\n return {draco};\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadDecoderPromise ||= loadDracoDecoder(options);\n }\n return await loadDecoderPromise;\n}\n\nexport async function loadDracoEncoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadEncoderPromise ||= modules.draco3d.createEncoderModule({}).then((draco) => {\n return {draco};\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadEncoderPromise ||= loadDracoEncoder(options);\n }\n return await loadEncoderPromise;\n}\n\n// DRACO DECODER LOADING\n\nasync function loadDracoDecoder(options) {\n let DracoDecoderModule;\n let wasmBinary;\n switch (options.draco && options.draco.decoderType) {\n case 'js':\n DracoDecoderModule = await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER\n );\n break;\n\n case 'wasm':\n default:\n [DracoDecoderModule, wasmBinary] = await Promise.all([\n await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.DECODER\n ),\n await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.DECODER_WASM\n )\n ]);\n }\n // Depends on how import happened...\n // @ts-ignore\n DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;\n return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);\n}\n\nfunction initializeDracoDecoder(DracoDecoderModule, wasmBinary) {\n const options: {wasmBinary?: any} = {};\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n DracoDecoderModule({\n ...options,\n onModuleLoaded: (draco) => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n\n// ENCODER\n\nasync function loadDracoEncoder(options) {\n let DracoEncoderModule = await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.ENCODER],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.ENCODER\n );\n // @ts-ignore\n DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;\n\n return new Promise((resolve) => {\n DracoEncoderModule({\n onModuleLoaded: (draco) => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {DracoMesh, DracoLoaderData} from './lib/draco-types';\nimport type {DracoLoaderOptions} from './draco-loader';\nimport {DracoLoader as DracoWorkerLoader} from './draco-loader';\nimport DracoParser from './lib/draco-parser';\nimport {loadDracoDecoderModule} from './lib/draco-module-loader';\nimport {VERSION} from './lib/utils/version';\n\n// Module constants\nexport {DRACO_EXTERNAL_LIBRARIES, DRACO_EXTERNAL_LIBRARY_URLS} from './lib/draco-module-loader';\n\n// Draco data types\n\nexport type {DracoMesh, DracoLoaderData};\n\n// Draco Writer\n\nexport type {DracoWriterOptions} from './draco-writer';\nexport {DracoWriter} from './draco-writer';\n\n/**\n * Browser worker doesn't work because of issue during \"draco_encoder.js\" loading.\n * Refused to execute script from 'https://raw.githubusercontent.com/google/draco/1.4.1/javascript/draco_encoder.js' because its MIME type ('') is not executable.\n */\nexport const DracoWriterWorker = {\n id: 'draco-writer',\n name: 'Draco compressed geometry writer',\n module: 'draco',\n version: VERSION,\n worker: true,\n options: {\n draco: {},\n source: null\n }\n};\n\n// Draco Loader\n\nexport type {DracoLoaderOptions};\nexport {DracoWorkerLoader};\n\n/**\n * Loader for Draco3D compressed geometries\n */\nexport const DracoLoader = {\n ...DracoWorkerLoader,\n parse\n} as const satisfies LoaderWithParser;\n\nasync function parse(arrayBuffer: ArrayBuffer, options?: DracoLoaderOptions): Promise {\n const {draco} = await loadDracoDecoderModule(options);\n const dracoParser = new DracoParser(draco);\n try {\n return dracoParser.parseSync(arrayBuffer, options?.draco);\n } finally {\n dracoParser.destroy();\n }\n}\n", "// Polyfills increases the bundle size significantly. Use it for NodeJS worker only\nimport '@loaders.gl/polyfills';\nimport {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {DracoLoader} from '../index';\n\ncreateLoaderWorker(DracoLoader);\n"], "mappings": "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AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,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CA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MA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;AAEA,UAAIoB,KAAI;AAAA,QACN;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA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;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,QAAU,CAAC;AAAA,QACjD,IAAI,YAAY;AAAA,UACd;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,QAAU,CAAC;AAAA,QACjD,IAAI,YAAY;AAAA,UACd;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,QAAU,CAAC;AAAA,QACjD,IAAI,YAAY;AAAA,UACd;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AA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AK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,KAAI,MAAK,GAAG;AAAA,EACroB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC7gB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACphB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC7gB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,IAAI;AAAA,EAC1mB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EAC1mB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAI;AAAA,EACrhB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EAC/kB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC/gB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAI;AAAA,EAClhB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACpiB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC/gB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACjhB,UAAS,CAAC,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACnoB,UAAS,CAAC,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACnoB,aAAY,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,MAAK,KAAI,KAAI,MAAK,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,OAAM,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChjB,eAAc,CAAC,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACtnB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChiB,gBAAe,CAAC,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EAC/nB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChiB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAI;AAAA,EACpiB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChiB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACjmB,gBAAe,CAAC,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,MAAK,MAAK,IAAI;AAAA,EAChmB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACliB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAA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", "names": ["module", "isBoolean", "re", "isObject", "d", "e", "isFunction", "o", "module", "module", "e", "Buffer", "i", "c", "cr", "module", "Readable", "Buffer", "Stream", "stream", "er", "e", "n", "p", "i", "forEach", "c", "self", "l", "f", "x", "module", "Readable", "forEach", "f", "i", "l", "module", "Buffer", "Stream", "stream", "er", "finished", "c", "module", "stream", "er", "n", "module", "module", "Stream", "module", "Readable", "n", "require_isarray", "module", "require_stream_writable", "module", "Buffer", "Stream", "stream", "er", "finished", "c", "i", "require_stream_duplex", "module", "Readable", "forEach", "f", "i", "l", "require_stream_readable", "module", "Readable", "Buffer", "Stream", "stream", "er", "e", "n", "p", "i", "self", "forEach", "c", "l", "f", "x", "require_stream_transform", "module", "stream", "er", "n", "require_stream_passthrough", "module", "require_readable", "module", "module", "i", "v", "b", "g", "r", "j", "k", "m", "p", "a", "n", "q", "alphadec", "index", "l", "module", "c", "i", "encode", "n_bits", "module", "assert", "ReadableStream", "l", "i", "k", "j", "index", "c", "r", "g", "b", "dr", "d", "w", "h", "n", "module", "btoa", "self", "i", "t", "j", "u", "k", "nr", "fDCTQuant", "l", "m", "n", "o", "p", "e", "quality", "x", "y", "r", "g", "b", "encode", "module", "k", "i", "j", "p", "q", "n", "component", "t", "s", "r", "z", "e", "decode", "mcu", "h", "v", "R", "qt", "sample", "a", "path", "parse", "length", "frame", "maxH", "maxV", "componentId", "l", "x", "y", "Y", "Cr", "K", "C", "M", "Ye", "G", "B", "module", "encode", "decode", "module", "Stream", "i", "j", "x", "y", "module", "module", "i", "x", "module", "module", "module", "i", "j", "module", "i", "i", "y", "x", "module", "y", "x", "i", "module", "zlib", "module", "y", "x", "module", "i", "x", "y", "module", "zlib", "module", "Stream", "module", "module", "zlib", "inflatedData", "module", "zlib", "parse", "Stream", "y", "x", "i", "module", "n", "i", "module", "isBuffer", "module", "isBuffer", "a", "b", "i", "n", "d", "module", "a", "b", "i", "module", "i", "j", "re", "t", "f", "module", "i", "j", "module", "i", "x", "i", "a", "f", "module", "Stream", "stream", "module", "ndarray", "i", "j", "c", "savePixels", "require_chunkstream", "module", "Stream", "require_interlace", "i", "j", "x", "y", "require_paeth_predictor", "module", "require_filter_parse", "module", "i", "x", "require_filter_parse_async", "module", "require_constants", "module", "require_crc", "module", "i", "j", "require_parser", "module", "i", "require_bitmapper", "i", "y", "x", "require_format_normaliser", "module", "y", "x", "i", "require_parser_async", "module", "zlib", "require_bitpacker", "module", "y", "x", "require_filter_pack", "module", "x", "i", "y", "require_packer", "module", "zlib", "require_packer_async", "module", "Stream", "module", "assert", "zlib", "self", "require_sync_reader", "module", "require_filter_parse_sync", "require_parser_sync", "module", "zlib", "inflatedData", "require_packer_sync", "module", "zlib", "require_png_sync", "parse", "require_png", "Stream", "y", "x", "i", "module", "module", "ndarray", "c", "p", "i", "x", "y", "w", "h", "il", "rgb", "v", "c", "k", "palette_offset", "index", "r", "g", "b", "e", "module", "i", "r", "g", "b", "a", "h", "j", "paletteIndex", "palette", "module", "module", "isArray", "isPlainObject", "setProperty", "getProperty", "i", "module", "i", "path", "path", "a", "b", "module", "VERSION", "e", "c", "i", "d", "h", "m", "s", "path", "t", "parse", "a", "b", "cb", "err", "http", "now", "self", "module", "module", "Buffer", "crypto", "Buffer", "e", "o", "i", "module", "crypto", "parse", "r", "i", "path", "module", "crypto", "c", "i", "path", "a", "b", "module", "assert", "Stream", "k", "i", "module", "Buffer", "e", "module", "Buffer", "module", "assert", "require_errors", "module", "e", "module", "module", "assert", "Buffer", "b", "i", "o", "module", "assert", "Buffer", "to", "b", "i", "s", "self", "bytes", "module", "t", "e", "module", "module", "a", "b", "c", "i", "x", "w", "j", "n", "v", "l", "h", "m", "rr", "s", "r", "k", "d", "p", "t", "y", "q", "pt", "yt", "e", "z", "r2", "g", "f", "g2", "u", "SecureRandom", "module", "q", "x", "b", "y", "z", "r", "u", "v", "v2", "a", "w", "k", "e", "h", "R", "i", "j", "p", "s", "Q", "U", "V", "P", "n", "module", "i", "r", "D", "D2", "X", "Y", "I", "x", "h", "l", "y", "n", "d", "o", "p", "k", "c", "u", "m", "b", "z", "s", "g", "f", "a", "v", "q", "t", "j", "A", "Z", "M", "b2", "S", "e", "K", "L", "crypto", "module", "assert", "Buffer", "crypto", "D", "j", "i", "t", "T", "I", "c", "x", "o", "matches", "b", "g", "p", "y", "k", "d", "q", "a", "G", "module", "assert", "Buffer", "n", "v", "i", "p", "module", "assert", "Buffer", "crypto", "i", "r", "s", "e", "d", "module", "g", "n", "h", "s", "p", "a", "b", "G", "crypto", "Buffer", "c", "n", "r", "key", "S", "module", "assert", "crypto", "Buffer", "k", "n", "r", "p", "a", "b", "h", "G", "S", "c", "module", "stream", "assert", "Buffer", "module", "assert", "Buffer", "n", "e", "d", "p", "q", "g", "y", "x", "j", "c", "i", "k", "Q", "A", "a", "h", "module", "assert", "Buffer", "n", "e", "d", "p", "q", "g", "y", "x", "k", "A", "j", "c", "Q", "module", "assert", "Buffer", "i", "p", "module", "F", "S", "i", "x", "t", "d", "k", "j", "module", "assert", "Buffer", "crypto", "e", "n", "o", "i", "module", "assert", "crypto", "Buffer", "k", "m", "m2", "e", "o", "i", "module", "assert", "Buffer", "m", "e", "module", "assert", "Buffer", "k", "e", "d", "Q", "n", "p", "q", "module", "assert", "Buffer", "crypto", "module", "assert", "Buffer", "module", "assert", "Buffer", "crypto", "i", "p", "v", "e", "k", "module", "assert", "crypto", "Buffer", "k", "self", "c", "n", "v", "a", "b", "i", "m", "module", "assert", "crypto", "Buffer", "k", "i", "p", "pr", "d", "e", "module", "assert", "Buffer", "i", "k", "t", "m", "d", "n", "s", "j", "module", "assert", "Buffer", "m", "m2", "o", "i", "module", "assert", "Buffer", "crypto", "i", "k", "e", "module", "assert", "Buffer", "crypto", "e", "p", "a", "s", "h", "module", "assert", "crypto", "e", "i", "v", "self", "k", "require_lib", "module", "require_utils", "module", "assert", "k", "require_parser", "module", "assert", "i", "c", "e", "h", "re", "stream", "require_extsprintf", "re", "stream", "require_util", "isBoolean", "re", "isObject", "d", "e", "isFunction", "o", "module", "k", "a", "e", "c", "module", "exports", "schema", "path", "i", "l", "value", "j", "instance", "k", "i", "p", "d", "c", "j", "a", "b", "module", "assert", "crypto", "http", "path", "self", "e", "i", "h", "module", "assert", "crypto", "v", "require_lib", "module", "module", "module", "charset", "path", "extension", "i", "to", "module", "i", "c", "module", "self", "s", "index", "module", "Stream", "r", "module", "Stream", "stream", "self", "module", "module", "module", "module", "module", "a", "b", "module", "module", "module", "a", "b", "module", "module", "module", "module", "path", "http", "https", "fs", "i", "module", "stream", "module", "module", "require_utils", "module", "i", "compactQueue", "j", "arrayToObject", "merge", "decode", "e", "encode", "c", "compact", "isRegExp", "isBuffer", "module", "require_stringify", "module", "stringify", "i", "encode", "module", "i", "index", "require_lib", "module", "parse", "c", "merge", "sets", "length", "slice", "xl", "x", "join", "subexp", "str", "typeOf", "o", "undefined", "Object", "prototype", "toString", "call", "split", "pop", "shift", "toLowerCase", "toUpperCase", "toArray", "obj", "Array", "setInterval", "assign", "target", "source", "key", "buildExps", "isIRI", "ALPHA$$", "CR$", "DIGIT$$", "DQUOTE$$", "HEXDIG$$", "SP$$", "PCT_ENCODED$", "SUB_DELIMS$$", "RESERVED$$", "GEN_DELIMS$$", "UCSCHAR$$", "SCHEME$", "USERINFO$", "UNRESERVED$$", "DEC_OCTET$", "DEC_OCTET_RELAXED$", "H16$", "LS32$", "IPV4ADDRESS$", "IPV6ADDRESS1$", "IPV6ADDRESS2$", "IPV6ADDRESS3$", "IPV6ADDRESS4$", "IPV6ADDRESS5$", "IPV6ADDRESS6$", "IPV6ADDRESS7$", "IPV6ADDRESS8$", "IPV6ADDRESS9$", "ZONEID$", "IPV6ADDRESS$", "IP_LITERAL$", "IPV6ADDRZ_RELAXED$", "IPVFUTURE$", "HOST$", "REG_NAME$", "PORT$", "AUTHORITY$", "PCHAR$", "SEGMENT$", "SEGMENT_NZ$", "SEGMENT_NZ_NC$", "PATH_ABEMPTY$", "PATH_ABSOLUTE$", "PATH$", "PATH_NOSCHEME$", "PATH_ROOTLESS$", "PATH_EMPTY$", "QUERY$", "IPRIVATE$$", "FRAGMENT$", "HIER_PART$", "URI$", "RELATIVE_PART$", "RELATIVE$", "URI_REFERENCE$", "ABSOLUTE_URI$", "GENERIC_REF$", "RELATIVE_REF$", "ABSOLUTE_REF$", "SAMEDOC_REF$", "AUTHORITY_REF$", "RegExp", "maxInt", "base", "tMin", "tMax", "skew", "damp", "initialBias", "initialN", "delimiter", "regexPunycode", "regexNonASCII", "regexSeparators", "errors", "baseMinusTMin", "floor", "Math", "stringFromCharCode", "String", "fromCharCode", "error", "type", "RangeError", "map", "array", "fn", "result", "mapDomain", "string", "parts", "replace", "labels", "encoded", "ucs2decode", "output", "counter", "value", "charCodeAt", "extra", "push", "ucs2encode", "fromCodePoint", "basicToDigit", "codePoint", "digitToBasic", "digit", "flag", "adapt", "delta", "numPoints", "firstTime", "k", "decode", "input", "inputLength", "i", "n", "bias", "basic", "lastIndexOf", "j", "index", "oldi", "w", "t", "baseMinusT", "out", "splice", "encode", "currentValue", "basicLength", "handledCPCount", "m", "handledCPCountPlusOne", "q", "qMinusT", "toUnicode", "test", "toASCII", "punycode", "SCHEMES", "pctEncChar", "chr", "c", "e", "pctDecChars", "newStr", "il", "parseInt", "substr", "c2", "c3", "_normalizeComponentEncoding", "components", "protocol", "decodeUnreserved", "decStr", "match", "UNRESERVED", "scheme", "PCT_ENCODED", "NOT_SCHEME", "userinfo", "NOT_USERINFO", "host", "NOT_HOST", "path", "NOT_PATH", "NOT_PATH_NOSCHEME", "query", "NOT_QUERY", "fragment", "NOT_FRAGMENT", "_stripLeadingZeros", "_normalizeIPv4", "matches", "IPV4ADDRESS", "address", "_normalizeIPv6", "IPV6ADDRESS", "zone", "reverse", "last", "first", "firstFields", "lastFields", "isLastFieldIPv4Address", "fieldCount", "lastFieldsStart", "fields", "allZeroFields", "reduce", "acc", "field", "lastLongest", "longestZeroFields", "sort", "a", "b", "newHost", "newFirst", "newLast", "URI_PARSE", "NO_MATCH_IS_UNDEFINED", "parse", "uriString", "options", "iri", "IRI_PROTOCOL", "URI_PROTOCOL", "reference", "port", "isNaN", "indexOf", "schemeHandler", "unicodeSupport", "domainHost", "_recomposeAuthority", "uriTokens", "_", "$1", "$2", "RDS1", "RDS2", "RDS3", "RDS5", "removeDotSegments", "im", "s", "Error", "serialize", "authority", "charAt", "absolutePath", "resolveComponents", "relative", "skipNormalization", "tolerant", "resolve", "baseURI", "relativeURI", "schemelessOptions", "normalize", "uri", "equal", "uriA", "uriB", "escapeComponent", "ESCAPE", "unescapeComponent", "handler", "secure", "http", "isSecure", "wsComponents", "resourceName", "ws", "O", "ATEXT$$", "QTEXT$$", "VCHAR$$", "SOME_DELIMS$$", "NOT_LOCAL_PART", "NOT_HFNAME", "NOT_HFVALUE", "mailtoComponents", "to", "unknownHeaders", "headers", "hfields", "hfield", "toAddrs", "subject", "body", "addr", "toAddr", "atIdx", "localPart", "domain", "name", "URN_PARSE", "urnComponents", "nid", "nss", "urnScheme", "uriComponents", "UUID", "uuidComponents", "uuid", "https", "wss", "mailto", "urn", "module", "a", "b", "i", "module", "require_util", "module", "o", "to", "t", "i", "matches", "path", "a", "b", "module", "module", "i", "module", "v", "p", "i", "self", "module", "module", "f", "a", "b", "i", "require_validate", "module", "it", "$rulesGroup", "i", "$rule", "require_compile", "module", "self", "c", "v", "localRefs", "baseId", "e", "refVal", "index", "schema", "it", "compile", "i", "module", "Cache", "require_formats", "module", "URL", "matches", "e", "module", "it", "module", "it", "module", "it", "$sch", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "p", "module", "it", "module", "it", "module", "it", "module", "require_rules", "module", "k", "module", "i", "j", "require_async", "module", "self", "p", "v", "e", "ref", "module", "it", "module", "module", "module", "i", "keyword", "dataType", "definition", "j", "v", "require_data", "module", "module", "v", "i", "self", "e", "module", "module", "module", "module", "require_cache", "module", "module", "require_cookie", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "require_lib", "module", "module", "ajv", "validate", "require_har", "fs", "e", "module", "crypto", "module", "i", "module", "i", "self", "path", "re", "cnonce", "ha1", "k", "c", "crypto", "i", "a", "b", "p", "crypto", "Buffer", "i", "self", "crypto", "Buffer", "self", "self", "http", "https", "assert", "Buffer", "self", "i", "j", "k", "self", "module", "hr", "require_request", "module", "http", "https", "stream", "zlib", "Buffer", "i", "isFunction", "self", "j", "a", "b", "v", "e", "q", "re", "path", "now", "cookies", "require_request", "module", "self", "module", "i", "module", "module", "ndarray", "path", "fs", "e", "i", "getPixels", "a", "o", "s", "n", "i", "u", "c", "d", "b", "stream", "index", "code_point", "TextDecoder", "TextEncoder", "ndarray", "savePixels", "ndarray", "getPixels", "isBrowser", "parentPort", "isBrowser", "requireFromFile", "requireFromString", "e", "readFileAsArrayBuffer", "readFileAsText", "payload", "path", "fs", "import_fs", "x", "zlib", "concatenateArrayBuffers", "x", "stream", "fs", "fsPromise", "path", "_e", "Stream", "Readable", "it", "r", "e", "t", "r", "o", "n", "a", "q", "i", "l", "s", "u", "c", "d", "_", "y", "S", "g", "v", "w", "R", "T", "P", "E", "C", "O", "f", "b", "h", "p", "ReadableStream", "ReadableStream", "import_fs", "fs", "code", "Module", "path", "Headers", "assert", "isBoolean", "x", "isFunction", "isObject", "isReadableNodeStream", "Response", "Headers", "assert", "isArrayBuffer", "x", "isBuffer", "toArrayBuffer", "fetchNode", "Response", "https", "http", "Headers", "nodeVersion", "TextEncoder", "TextDecoder", "Headers", "Response", "fetchNode", "VERSION", "VERSION", "i", "x", "y", "z", "i", "DracoLoader", "DracoLoader"] }