{"version":3,"sources":["webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/request/lib/cookies.js","webpack:///./node_modules/randombytes/browser.js","webpack:///./node_modules/request/lib/helpers.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/request/lib/querystring.js","webpack:///./node_modules/request/index.js","webpack:///./node_modules/request/lib/multipart.js","webpack:///./node_modules/request/request.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/request/lib/hawk.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/randomfill/browser.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/querystring-es3/decode.js","webpack:///./node_modules/request/lib/auth.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/request/lib/redirect.js","webpack:///./node_modules/request/lib/tunnel.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/querystring-es3/index.js","webpack:///./node_modules/ripemd160/index.js","webpack:///./node_modules/request/lib/getProxyFromURI.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./node_modules/request/lib/oauth.js","webpack:///./node_modules/request/lib/har.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/querystring-es3/encode.js","webpack:///./node_modules/readable-stream/readable-browser.js"],"names":["module","exports","tough","Cookie","CookieJar","RequestJar","store","self","this","_jar","looseMode","parse","str","uri","Error","loose","prototype","setCookie","cookieOrStr","options","setCookieSync","getCookieString","getCookieStringSync","getCookies","getCookiesSync","jar","MAX_BYTES","MAX_UINT32","oldBrowser","Buffer","crypto","global","msCrypto","randomBytes","size","cb","RangeError","bytes","allocUnsafe","generated","getRandomValues","slice","process","nextTick","jsonSafeStringify","defer","setImmediate","paramsHaveRequestBody","params","body","requestBodyStream","json","multipart","safeStringify","obj","replacer","ret","JSON","stringify","e","md5","createHash","update","digest","isReadStream","rs","readable","path","mode","toBase64","from","toString","copy","o","Object","keys","forEach","i","version","numbers","replace","split","major","parseInt","minor","patch","Transform","Duplex","util","create","afterTransform","er","data","ts","_transformState","transforming","writecb","emit","writechunk","push","_readableState","reading","needReadable","length","highWaterMark","_read","call","bind","needTransform","writeencoding","sync","transform","_transform","flush","_flush","on","prefinish","_this","done","stream","_writableState","inherits","chunk","encoding","_write","n","_destroy","err","_this2","err2","qs","querystring","Querystring","request","lib","useQuerystring","parseOptions","stringifyOptions","init","qsParseOptions","qsStringifyOptions","rfc3986","sep","eq","c","charCodeAt","toUpperCase","unescape","extend","cookies","helpers","initParams","callback","method","Request","verbFunc","verb","wrapRequestMethod","requester","opts","target","pool","get","head","post","put","del","cookie","defaults","verbs","forever","agentOptions","optionsArg","defineProperty","enumerable","debug","set","uuid","CombinedStream","isstream","Multipart","boundary","chunked","isChunked","parts","undefined","getHeader","part","setHeaders","hasHeader","setHeader","header","indexOf","build","add","append","preambleCRLF","preamble","key","postambleCRLF","onRequest","http","https","url","zlib","aws2","aws4","httpSignature","mime","caseless","ForeverAgent","FormData","isTypedArray","strict","getProxyFromURI","Har","Auth","OAuth","hawk","Redirect","Tunnel","now","globalCookieJar","globalPool","filterForNonReserved","reserved","object","notReserved","filterOutReservedFunctions","isReserved","isFunction","requestToJSON","headers","responseToJSON","statusCode","har","_har","Stream","nonReserved","writable","explicitMethod","_qs","_auth","_oauth","_multipart","_redirect","_tunnel","console","error","format","apply","arguments","NODE_DEBUG","test","headerName","httpify","localAddress","dests","__isRequestRequest","_callback","_callbackCalled","baseUrl","baseUrlEndsWithSlash","lastIndexOf","uriStartsWithSlash","href","protocol","host","enableUnixSocket","strictSSL","rejectUnauthorized","pathname","hostname","port","isUnix","faultyUri","message","abort","hasOwnProperty","proxy","tunnel","isEnabled","setup","setHost","hostHeaderName","originalHostHeaderName","form","formData","requestForm","appendFormValue","value","formKey","formValue","Array","j","search","aws","auth","user","username","pass","password","sendImmediately","bearer","gzip","uriAuthPieces","map","item","join","proxyAuthPieces","authHeader","setContentLength","byteLength","isArray","reduce","a","b","time","timing","elapsedTime","oauth","defaultModules","httpModules","httpModule","ca","agent","agentClass","v","SSL","Agent","keepAlive","getNewAgent","src","ntick","_started","lookup","_json","_aborted","end","_form","hasAuth","sentAuth","pipe","write","warn","getHeaders","getLength","isNaN","ciphers","secureProtocol","secureOptions","cert","pfx","passphrase","poolKey","name","isHttps","globalAgent","maxSockets","start","startTime","Date","getTime","startTimeNow","stat","_aws","timeout","reqOptions","req","timings","timeoutTimer","isFinite","onRequestResponse","onRequestError","socket","isConnecting","_connecting","connecting","onLookupTiming","onConnectTiming","connect","once","removeListener","setReqTimeout","setTimeout","code","onReqSockConnect","clearTimeout","_reusedSocket","addRequestNoreuse","addRequest","response","timingStart","Math","round","timingPhases","wait","dns","tcp","firstByte","download","total","resume","toJSON","authorized","originalHost","removeHeader","targetCookieJar","addCookie","ignoreError","has","_disableCookies","onResponse","_ended","responseContent","noBody","contentEncoding","trim","toLowerCase","zlibOptions","Z_SYNC_FLUSH","finishFlush","createGunzip","createInflate","setEncoding","_paused","pause","dest","pipeDest","responseStarted","responseStartTime","_destdata","readResponseBody","sslErr","authorizationError","buffers","bufferLength","strings","isBuffer","concat","substring","_jsonReviver","alloc","destroy","headersSent","ctname","clname","pipefilter","q","clobber","base","query","val","jsonReplacer","_jsonReplacer","jsonReviver","result","re","match","RegExp","unixParts","socketPath","sign_version","service","signRes","sign","accessKeyId","secretAccessKey","secret","sessionToken","session","Authorization","date","toUTCString","contentType","amazonHeaders","canonicalizeHeaders","bucket","resource","canonicalizeResource","authorization","signRequest","redirectsFollowed","originalCookieHeader","urihref","defaultProxyHeaderWhiteList","defaultProxyHeaderExclusiveList","EventEmitter","pna","readableDestroyed","destroyed","writableDestroyed","errorEmitted","emitErrorNT","undestroy","ended","endEmitted","ending","finished","randomString","bits","buffer","ceil","string","calculatePayloadHash","payload","algorithm","hash","calculateMac","credentials","normalized","nonce","ext","app","dlg","hmac","createHmac","timestamp","floor","localtimeOffsetMsec","id","artifacts","mac","hasExt","_classCallCheck","instance","Constructor","TypeError","copyBuffer","offset","BufferList","tail","entry","next","unshift","shift","clear","s","p","inspect","custom","constructor","safeBuffer","randombytes","kBufferMaxLength","kMaxLength","kMaxUint32","pow","assertOffset","assertSize","randomFill","buf","Uint8Array","actualFill","browser","ourBuf","uint","randomFillSync","PassThrough","prop","regexp","maxKeys","len","kstr","vstr","k","x","idx","substr","decodeURIComponent","xs","bearerToken","basic","challenge","exec","ha1Compute","realm","cnonce","ha1","qop","nc","ha2","digestResponse","authValues","opaque","authVerb","runtime","Op","hasOwn","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","configurable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","type","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","__await","then","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","reverse","pop","skipTempReset","prev","charAt","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","isUrl","followRedirect","followRedirects","followAllRedirects","followOriginalHttpMethod","allowRedirect","maxRedirects","redirects","removeRefererHeader","redirectTo","location","uriPrev","redirectUri","constructProxyHost","uriObject","proxyHost","constructProxyHeaderWhiteList","proxyHeaderWhiteList","whiteList","filter","constructTunnelOptions","proxyHeaders","tunnelOptions","proxyAuth","constructTunnelFnName","uriProtocol","proxyProtocol","getTunnelFn","tunnelFnName","proxyHeaderExclusiveList","tunnelOverride","tunnelFn","Readable","ReadableState","EElistenerCount","emitter","listeners","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","debugUtil","debuglog","StringDecoder","destroyImpl","kProxyEvents","prependListener","event","_events","isDuplex","objectMode","readableObjectMode","hwm","readableHwm","readableHighWaterMark","defaultHwm","pipes","pipesCount","flowing","emittedReadable","readableListening","resumeScheduled","defaultEncoding","awaitDrain","readingMore","decoder","read","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","addChunk","maybeReadMore","needMoreData","emitReadable","_undestroy","isPaused","enc","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","nReadingNextTick","resume_","fromList","fromListPartial","list","hasStrings","copyFromBufferString","copyFromBuffer","nb","endReadable","endReadableNT","l","nOrig","doRead","pipeOpts","doEnd","stdout","stderr","endFn","onend","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanup","ondrain","cleanedUp","onclose","onfinish","onerror","ondata","needDrain","increasedAwaitDrain","index","splice","ev","res","addListener","paused","_fromList","objectKeys","Writable","allowHalfOpen","onEndNT","decode","encode","HashBase","ARRAY16","zl","zr","sl","sr","hl","hr","RIPEMD160","_a","_b","_c","_d","_e","rotl","fn1","d","m","fn2","fn3","fn4","fn5","_update","words","_block","readInt32LE","al","bl","cl","dl","el","ar","br","cr","dr","tl","tr","t","_digest","_blockOffset","fill","writeUInt32LE","_length","writeInt32LE","formatHostname","parseNoProxyZone","zone","zoneParts","zoneHost","zonePort","hasPort","uriInNoProxy","noProxy","noProxyList","some","noProxyZone","isMatchedAt","hostnameMatched","NO_PROXY","no_proxy","HTTP_PROXY","http_proxy","HTTPS_PROXY","https_proxy","buildParams","qsLib","oa","oauth_version","oauth_timestamp","oauth_nonce","oauth_signature_method","consumer_secret_or_private_key","oauth_consumer_secret","oauth_private_key","token_secret","oauth_token_secret","oauth_realm","oauth_transport_method","baseurl","oauth_signature","buildBodyHash","signature_method","shasum","sha1","concatParams","sort","formContentType","transport","transport_method","body_hash","fs","validate","reducer","pair","arr","prep","queryObj","headersObj","postData","jsonObj","paramsObj","queryString","reduceRight","mimeType","text","log","entries","httpVersion","bodySize","headersSize","param","attachment","fileName","createReadStream","filename","CorkedRequest","onCorkedFinish","asyncWrite","WritableState","internalUtil","deprecate","realHasInstance","nop","writableObjectMode","writableHwm","writableHighWaterMark","finalCalled","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","bufferedRequestCount","corkedRequestsFree","writev","_writev","final","_final","writeAfterEnd","validChunk","valid","decodeChunk","writeOrBuffer","isBuf","newChunk","last","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","holder","count","allBuffers","callFinal","need","endWritable","corkReq","getBuffer","current","out","_","hasInstance","cork","uncork","setDefaultEncoding","stringifyPrimitive","ks","encodeURIComponent","f"],"mappings":"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","file":"js/chunk-vendors~b9cf3951.b5a9f618.js","sourcesContent":["module.exports = require('./lib/_stream_duplex.js');\n","'use strict'\n\nvar tough = require('tough-cookie')\n\nvar Cookie = tough.Cookie\nvar CookieJar = tough.CookieJar\n\nexports.parse = function (str) {\n if (str && str.uri) {\n str = str.uri\n }\n if (typeof str !== 'string') {\n throw new Error('The cookie function only accepts STRING as param')\n }\n return Cookie.parse(str, {loose: true})\n}\n\n// Adapt the sometimes-Async api of tough.CookieJar to our requirements\nfunction RequestJar (store) {\n var self = this\n self._jar = new CookieJar(store, {looseMode: true})\n}\nRequestJar.prototype.setCookie = function (cookieOrStr, uri, options) {\n var self = this\n return self._jar.setCookieSync(cookieOrStr, uri, options || {})\n}\nRequestJar.prototype.getCookieString = function (uri) {\n var self = this\n return self._jar.getCookieStringSync(uri)\n}\nRequestJar.prototype.getCookies = function (uri) {\n var self = this\n return self._jar.getCookiesSync(uri)\n}\n\nexports.jar = function (store) {\n return new RequestJar(store)\n}\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","module.exports = require('./lib/_stream_writable.js');\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","// 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","'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 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","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","'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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","'use strict'\n\nvar caseless = require('caseless')\nvar uuid = require('uuid/v4')\nvar helpers = require('./helpers')\n\nvar md5 = helpers.md5\nvar toBase64 = helpers.toBase64\n\nfunction Auth (request) {\n // define all public properties here\n this.request = request\n this.hasAuth = false\n this.sentAuth = false\n this.bearerToken = null\n this.user = null\n this.pass = null\n}\n\nAuth.prototype.basic = function (user, pass, sendImmediately) {\n var self = this\n if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) {\n self.request.emit('error', new Error('auth() received invalid user or password'))\n }\n self.user = user\n self.pass = pass\n self.hasAuth = true\n var header = user + ':' + (pass || '')\n if (sendImmediately || typeof sendImmediately === 'undefined') {\n var authHeader = 'Basic ' + toBase64(header)\n self.sentAuth = true\n return authHeader\n }\n}\n\nAuth.prototype.bearer = function (bearer, sendImmediately) {\n var self = this\n self.bearerToken = bearer\n self.hasAuth = true\n if (sendImmediately || typeof sendImmediately === 'undefined') {\n if (typeof bearer === 'function') {\n bearer = bearer()\n }\n var authHeader = 'Bearer ' + (bearer || '')\n self.sentAuth = true\n return authHeader\n }\n}\n\nAuth.prototype.digest = function (method, path, authHeader) {\n // TODO: More complete implementation of RFC 2617.\n // - handle challenge.domain\n // - support qop=\"auth-int\" only\n // - handle Authentication-Info (not necessarily?)\n // - check challenge.stale (not necessarily?)\n // - increase nc (not necessarily?)\n // For reference:\n // http://tools.ietf.org/html/rfc2617#section-3\n // https://github.com/bagder/curl/blob/master/lib/http_digest.c\n\n var self = this\n\n var challenge = {}\n var re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi\n while (true) {\n var match = re.exec(authHeader)\n if (!match) {\n break\n }\n challenge[match[1]] = match[2] || match[3]\n }\n\n /**\n * RFC 2617: handle both MD5 and MD5-sess algorithms.\n *\n * If the algorithm directive's value is \"MD5\" or unspecified, then HA1 is\n * HA1=MD5(username:realm:password)\n * If the algorithm directive's value is \"MD5-sess\", then HA1 is\n * HA1=MD5(MD5(username:realm:password):nonce:cnonce)\n */\n var ha1Compute = function (algorithm, user, realm, pass, nonce, cnonce) {\n var ha1 = md5(user + ':' + realm + ':' + pass)\n if (algorithm && algorithm.toLowerCase() === 'md5-sess') {\n return md5(ha1 + ':' + nonce + ':' + cnonce)\n } else {\n return ha1\n }\n }\n\n var qop = /(^|,)\\s*auth\\s*($|,)/.test(challenge.qop) && 'auth'\n var nc = qop && '00000001'\n var cnonce = qop && uuid().replace(/-/g, '')\n var ha1 = ha1Compute(challenge.algorithm, self.user, challenge.realm, self.pass, challenge.nonce, cnonce)\n var ha2 = md5(method + ':' + path)\n var digestResponse = qop\n ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2)\n : md5(ha1 + ':' + challenge.nonce + ':' + ha2)\n var authValues = {\n username: self.user,\n realm: challenge.realm,\n nonce: challenge.nonce,\n uri: path,\n qop: qop,\n response: digestResponse,\n nc: nc,\n cnonce: cnonce,\n algorithm: challenge.algorithm,\n opaque: challenge.opaque\n }\n\n authHeader = []\n for (var k in authValues) {\n if (authValues[k]) {\n if (k === 'qop' || k === 'nc' || k === 'algorithm') {\n authHeader.push(k + '=' + authValues[k])\n } else {\n authHeader.push(k + '=\"' + authValues[k] + '\"')\n }\n }\n }\n authHeader = 'Digest ' + authHeader.join(', ')\n self.sentAuth = true\n return authHeader\n}\n\nAuth.prototype.onRequest = function (user, pass, sendImmediately, bearer) {\n var self = this\n var request = self.request\n\n var authHeader\n if (bearer === undefined && user === undefined) {\n self.request.emit('error', new Error('no auth mechanism defined'))\n } else if (bearer !== undefined) {\n authHeader = self.bearer(bearer, sendImmediately)\n } else {\n authHeader = self.basic(user, pass, sendImmediately)\n }\n if (authHeader) {\n request.setHeader('authorization', authHeader)\n }\n}\n\nAuth.prototype.onResponse = function (response) {\n var self = this\n var request = self.request\n\n if (!self.hasAuth || self.sentAuth) { return null }\n\n var c = caseless(response.headers)\n\n var authHeader = c.get('www-authenticate')\n var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase()\n request.debug('reauth', authVerb)\n\n switch (authVerb) {\n case 'basic':\n return self.basic(self.user, self.pass, true)\n\n case 'bearer':\n return self.bearer(self.bearerToken, true)\n\n case 'digest':\n return self.digest(request.method, request.path, authHeader)\n }\n}\n\nexports.Auth = Auth\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\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 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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\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","module.exports = require('./readable').PassThrough\n","'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 fs = require('fs')\nvar qs = require('querystring')\nvar validate = require('har-validator')\nvar extend = require('extend')\n\nfunction Har (request) {\n this.request = request\n}\n\nHar.prototype.reducer = function (obj, pair) {\n // new property ?\n if (obj[pair.name] === undefined) {\n obj[pair.name] = pair.value\n return obj\n }\n\n // existing? convert to array\n var arr = [\n obj[pair.name],\n pair.value\n ]\n\n obj[pair.name] = arr\n\n return obj\n}\n\nHar.prototype.prep = function (data) {\n // construct utility properties\n data.queryObj = {}\n data.headersObj = {}\n data.postData.jsonObj = false\n data.postData.paramsObj = false\n\n // construct query objects\n if (data.queryString && data.queryString.length) {\n data.queryObj = data.queryString.reduce(this.reducer, {})\n }\n\n // construct headers objects\n if (data.headers && data.headers.length) {\n // loweCase header keys\n data.headersObj = data.headers.reduceRight(function (headers, header) {\n headers[header.name] = header.value\n return headers\n }, {})\n }\n\n // construct Cookie header\n if (data.cookies && data.cookies.length) {\n var cookies = data.cookies.map(function (cookie) {\n return cookie.name + '=' + cookie.value\n })\n\n if (cookies.length) {\n data.headersObj.cookie = cookies.join('; ')\n }\n }\n\n // prep body\n function some (arr) {\n return arr.some(function (type) {\n return data.postData.mimeType.indexOf(type) === 0\n })\n }\n\n if (some([\n 'multipart/mixed',\n 'multipart/related',\n 'multipart/form-data',\n 'multipart/alternative'])) {\n // reset values\n data.postData.mimeType = 'multipart/form-data'\n } else if (some([\n 'application/x-www-form-urlencoded'])) {\n if (!data.postData.params) {\n data.postData.text = ''\n } else {\n data.postData.paramsObj = data.postData.params.reduce(this.reducer, {})\n\n // always overwrite\n data.postData.text = qs.stringify(data.postData.paramsObj)\n }\n } else if (some([\n 'text/json',\n 'text/x-json',\n 'application/json',\n 'application/x-json'])) {\n data.postData.mimeType = 'application/json'\n\n if (data.postData.text) {\n try {\n data.postData.jsonObj = JSON.parse(data.postData.text)\n } catch (e) {\n this.request.debug(e)\n\n // force back to text/plain\n data.postData.mimeType = 'text/plain'\n }\n }\n }\n\n return data\n}\n\nHar.prototype.options = function (options) {\n // skip if no har property defined\n if (!options.har) {\n return options\n }\n\n var har = {}\n extend(har, options.har)\n\n // only process the first entry\n if (har.log && har.log.entries) {\n har = har.log.entries[0]\n }\n\n // add optional properties to make validation successful\n har.url = har.url || options.url || options.uri || options.baseUrl || '/'\n har.httpVersion = har.httpVersion || 'HTTP/1.1'\n har.queryString = har.queryString || []\n har.headers = har.headers || []\n har.cookies = har.cookies || []\n har.postData = har.postData || {}\n har.postData.mimeType = har.postData.mimeType || 'application/octet-stream'\n\n har.bodySize = 0\n har.headersSize = 0\n har.postData.size = 0\n\n if (!validate.request(har)) {\n return options\n }\n\n // clean up and get some utility properties\n var req = this.prep(har)\n\n // construct new options\n if (req.url) {\n options.url = req.url\n }\n\n if (req.method) {\n options.method = req.method\n }\n\n if (Object.keys(req.queryObj).length) {\n options.qs = req.queryObj\n }\n\n if (Object.keys(req.headersObj).length) {\n options.headers = req.headersObj\n }\n\n function test (type) {\n return req.postData.mimeType.indexOf(type) === 0\n }\n if (test('application/x-www-form-urlencoded')) {\n options.form = req.postData.paramsObj\n } else if (test('application/json')) {\n if (req.postData.jsonObj) {\n options.body = req.postData.jsonObj\n options.json = true\n }\n } else if (test('multipart/form-data')) {\n options.formData = {}\n\n req.postData.params.forEach(function (param) {\n var attachment = {}\n\n if (!param.fileName && !param.contentType) {\n options.formData[param.name] = param.value\n return\n }\n\n // attempt to read from disk!\n if (param.fileName && !param.value) {\n attachment.value = fs.createReadStream(param.fileName)\n } else if (param.value) {\n attachment.value = param.value\n }\n\n if (param.fileName) {\n attachment.options = {\n filename: param.fileName,\n contentType: param.contentType ? param.contentType : null\n }\n }\n\n options.formData[param.name] = attachment\n })\n } else {\n if (req.postData.text) {\n options.body = req.postData.text\n }\n }\n\n return options\n}\n\nexports.Har = Har\n","module.exports = require('./readable').Transform\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n"],"sourceRoot":""}