{"action":"created","comment":{"url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/comments/146243344","pull_request_review_id":71155752,"id":146243344,"diff_hunk":"@@ -0,0 +1,4660 @@\n+(function webpackUniversalModuleDefinition(root, factory) {\n+\tif(typeof exports === 'object' && typeof module === 'object')\n+\t\tmodule.exports = factory();\n+\telse if(typeof define === 'function' && define.amd)\n+\t\tdefine([], factory);\n+\telse if(typeof exports === 'object')\n+\t\texports[\"eio\"] = factory();\n+\telse\n+\t\troot[\"eio\"] = factory();\n+})(this, function() {\n+return /******/ (function(modules) { // webpackBootstrap\n+/******/ \t// The module cache\n+/******/ \tvar installedModules = {};\n+\n+/******/ \t// The require function\n+/******/ \tfunction __webpack_require__(moduleId) {\n+\n+/******/ \t\t// Check if module is in cache\n+/******/ \t\tif(installedModules[moduleId])\n+/******/ \t\t\treturn installedModules[moduleId].exports;\n+\n+/******/ \t\t// Create a new module (and put it into the cache)\n+/******/ \t\tvar module = installedModules[moduleId] = {\n+/******/ \t\t\texports: {},\n+/******/ \t\t\tid: moduleId,\n+/******/ \t\t\tloaded: false\n+/******/ \t\t};\n+\n+/******/ \t\t// Execute the module function\n+/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n+\n+/******/ \t\t// Flag the module as loaded\n+/******/ \t\tmodule.loaded = true;\n+\n+/******/ \t\t// Return the exports of the module\n+/******/ \t\treturn module.exports;\n+/******/ \t}\n+\n+\n+/******/ \t// expose the modules object (__webpack_modules__)\n+/******/ \t__webpack_require__.m = modules;\n+\n+/******/ \t// expose the module cache\n+/******/ \t__webpack_require__.c = installedModules;\n+\n+/******/ \t// __webpack_public_path__\n+/******/ \t__webpack_require__.p = \"\";\n+\n+/******/ \t// Load entry module and return exports\n+/******/ \treturn __webpack_require__(0);\n+/******/ })\n+/************************************************************************/\n+/******/ ([\n+/* 0 */\n+/***/ function(module, exports, __webpack_require__) {\n+\n+\t'use strict';\n+\n+\tmodule.exports = __webpack_require__(1);\n+\n+\t/**\n+\t * Exports parser\n+\t *\n+\t * @api public\n+\t *\n+\t */\n+\tmodule.exports.parser = __webpack_require__(8);\n+\n+/***/ },\n+/* 1 */\n+/***/ function(module, exports, __webpack_require__) {\n+\n+\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n+\n+\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n+\n+\t/**\n+\t * Module dependencies.\n+\t */\n+\n+\tvar transports = __webpack_require__(2);\n+\tvar Emitter = __webpack_require__(18);\n+\tvar debug = __webpack_require__(22)('engine.io-client:socket');\n+\tvar index = __webpack_require__(29);\n+\tvar parser = __webpack_require__(8);\n+\tvar parseuri = __webpack_require__(30);\n+\tvar parseqs = __webpack_require__(19);\n+\n+\t/**\n+\t * Module exports.\n+\t */\n+\n+\tmodule.exports = Socket;\n+\n+\t/**\n+\t * Socket constructor.\n+\t *\n+\t * @param {String|Object} uri or options\n+\t * @param {Object} options\n+\t * @api public\n+\t */\n+\n+\tfunction Socket(uri, opts) {\n+\t  if (!(this instanceof Socket)) return new Socket(uri, opts);\n+\n+\t  opts = opts || {};\n+\n+\t  if (uri && 'object' === (typeof uri === 'undefined' ? 'undefined' : _typeof(uri))) {\n+\t    opts = uri;\n+\t    uri = null;\n+\t  }\n+\n+\t  if (uri) {\n+\t    uri = parseuri(uri);\n+\t    opts.hostname = uri.host;\n+\t    opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n+\t    opts.port = uri.port;\n+\t    if (uri.query) opts.query = uri.query;\n+\t  } else if (opts.host) {\n+\t    opts.hostname = parseuri(opts.host).host;\n+\t  }\n+\n+\t  this.secure = null != opts.secure ? opts.secure : global.location && 'https:' === location.protocol;\n+\n+\t  if (opts.hostname && !opts.port) {\n+\t    // if no port is specified manually, use the protocol default\n+\t    opts.port = this.secure ? '443' : '80';\n+\t  }\n+\n+\t  this.agent = opts.agent || false;\n+\t  this.hostname = opts.hostname || (global.location ? location.hostname : 'localhost');\n+\t  this.port = opts.port || (global.location && location.port ? location.port : this.secure ? 443 : 80);\n+\t  this.query = opts.query || {};\n+\t  if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n+\t  this.upgrade = false !== opts.upgrade;\n+\t  this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n+\t  this.forceJSONP = !!opts.forceJSONP;\n+\t  this.jsonp = false !== opts.jsonp;\n+\t  this.forceBase64 = !!opts.forceBase64;\n+\t  this.enablesXDR = !!opts.enablesXDR;\n+\t  this.timestampParam = opts.timestampParam || 't';\n+\t  this.timestampRequests = opts.timestampRequests;\n+\t  this.transports = opts.transports || ['polling', 'websocket'];\n+\t  this.transportOptions = opts.transportOptions || {};\n+\t  this.readyState = '';\n+\t  this.writeBuffer = [];\n+\t  this.prevBufferLen = 0;\n+\t  this.policyPort = opts.policyPort || 843;\n+\t  this.rememberUpgrade = opts.rememberUpgrade || false;\n+\t  this.binaryType = null;\n+\t  this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n+\t  this.perMessageDeflate = false !== opts.perMessageDeflate ? opts.perMessageDeflate || {} : false;\n+\n+\t  if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n+\t  if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n+\t    this.perMessageDeflate.threshold = 1024;\n+\t  }\n+\n+\t  // SSL options for Node.js client\n+\t  this.pfx = opts.pfx || null;\n+\t  this.key = opts.key || null;\n+\t  this.passphrase = opts.passphrase || null;\n+\t  this.cert = opts.cert || null;\n+\t  this.ca = opts.ca || null;\n+\t  this.ciphers = opts.ciphers || null;\n+\t  this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n+\t  this.forceNode = !!opts.forceNode;\n+\n+\t  // other options for Node.js client\n+\t  var freeGlobal = (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' && global;\n+\t  if (freeGlobal.global === freeGlobal) {\n+\t    if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n+\t      this.extraHeaders = opts.extraHeaders;\n+\t    }\n+\n+\t    if (opts.localAddress) {\n+\t      this.localAddress = opts.localAddress;\n+\t    }\n+\t  }\n+\n+\t  // set on handshake\n+\t  this.id = null;\n+\t  this.upgrades = null;\n+\t  this.pingInterval = null;\n+\t  this.pingTimeout = null;\n+\n+\t  // set on heartbeat\n+\t  this.pingIntervalTimer = null;\n+\t  this.pingTimeoutTimer = null;\n+\n+\t  this.open();\n+\t}\n+\n+\tSocket.priorWebsocketSuccess = false;\n+\n+\t/**\n+\t * Mix in `Emitter`.\n+\t */\n+\n+\tEmitter(Socket.prototype);\n+\n+\t/**\n+\t * Protocol version.\n+\t *\n+\t * @api public\n+\t */\n+\n+\tSocket.protocol = parser.protocol; // this is an int\n+\n+\t/**\n+\t * Expose deps for legacy compatibility\n+\t * and standalone browser access.\n+\t */\n+\n+\tSocket.Socket = Socket;\n+\tSocket.Transport = __webpack_require__(7);\n+\tSocket.transports = __webpack_require__(2);\n+\tSocket.parser = __webpack_require__(8);\n+\n+\t/**\n+\t * Creates transport of the given type.\n+\t *\n+\t * @param {String} transport name\n+\t * @return {Transport}\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.createTransport = function (name) {\n+\t  debug('creating transport \"%s\"', name);\n+\t  var query = clone(this.query);\n+\n+\t  // append engine.io protocol identifier\n+\t  query.EIO = parser.protocol;\n+\n+\t  // transport name\n+\t  query.transport = name;\n+\n+\t  // per-transport options\n+\t  var options = this.transportOptions[name] || {};\n+\n+\t  // session id if we already have one\n+\t  if (this.id) query.sid = this.id;\n+\n+\t  var transport = new transports[name]({\n+\t    query: query,\n+\t    socket: this,\n+\t    agent: options.agent || this.agent,\n+\t    hostname: options.hostname || this.hostname,\n+\t    port: options.port || this.port,\n+\t    secure: options.secure || this.secure,\n+\t    path: options.path || this.path,\n+\t    forceJSONP: options.forceJSONP || this.forceJSONP,\n+\t    jsonp: options.jsonp || this.jsonp,\n+\t    forceBase64: options.forceBase64 || this.forceBase64,\n+\t    enablesXDR: options.enablesXDR || this.enablesXDR,\n+\t    timestampRequests: options.timestampRequests || this.timestampRequests,\n+\t    timestampParam: options.timestampParam || this.timestampParam,\n+\t    policyPort: options.policyPort || this.policyPort,\n+\t    pfx: options.pfx || this.pfx,\n+\t    key: options.key || this.key,\n+\t    passphrase: options.passphrase || this.passphrase,\n+\t    cert: options.cert || this.cert,\n+\t    ca: options.ca || this.ca,\n+\t    ciphers: options.ciphers || this.ciphers,\n+\t    rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n+\t    perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n+\t    extraHeaders: options.extraHeaders || this.extraHeaders,\n+\t    forceNode: options.forceNode || this.forceNode,\n+\t    localAddress: options.localAddress || this.localAddress,\n+\t    requestTimeout: options.requestTimeout || this.requestTimeout,\n+\t    protocols: options.protocols || void 0\n+\t  });\n+\n+\t  return transport;\n+\t};\n+\n+\tfunction clone(obj) {\n+\t  var o = {};\n+\t  for (var i in obj) {\n+\t    if (obj.hasOwnProperty(i)) {\n+\t      o[i] = obj[i];\n+\t    }\n+\t  }\n+\t  return o;\n+\t}\n+\n+\t/**\n+\t * Initializes transport to use and starts probe.\n+\t *\n+\t * @api private\n+\t */\n+\tSocket.prototype.open = function () {\n+\t  var transport;\n+\t  if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n+\t    transport = 'websocket';\n+\t  } else if (0 === this.transports.length) {\n+\t    // Emit error on next tick so it can be listened to\n+\t    var self = this;\n+\t    setTimeout(function () {\n+\t      self.emit('error', 'No transports available');\n+\t    }, 0);\n+\t    return;\n+\t  } else {\n+\t    transport = this.transports[0];\n+\t  }\n+\t  this.readyState = 'opening';\n+\n+\t  // Retry with the next transport if the transport is disabled (jsonp: false)\n+\t  try {\n+\t    transport = this.createTransport(transport);\n+\t  } catch (e) {\n+\t    this.transports.shift();\n+\t    this.open();\n+\t    return;\n+\t  }\n+\n+\t  transport.open();\n+\t  this.setTransport(transport);\n+\t};\n+\n+\t/**\n+\t * Sets the current transport. Disables the existing one (if any).\n+\t *\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.setTransport = function (transport) {\n+\t  debug('setting transport %s', transport.name);\n+\t  var self = this;\n+\n+\t  if (this.transport) {\n+\t    debug('clearing existing transport %s', this.transport.name);\n+\t    this.transport.removeAllListeners();\n+\t  }\n+\n+\t  // set up transport\n+\t  this.transport = transport;\n+\n+\t  // set up transport listeners\n+\t  transport.on('drain', function () {\n+\t    self.onDrain();\n+\t  }).on('packet', function (packet) {\n+\t    self.onPacket(packet);\n+\t  }).on('error', function (e) {\n+\t    self.onError(e);\n+\t  }).on('close', function () {\n+\t    self.onClose('transport close');\n+\t  });\n+\t};\n+\n+\t/**\n+\t * Probes a transport.\n+\t *\n+\t * @param {String} transport name\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.probe = function (name) {\n+\t  debug('probing transport \"%s\"', name);\n+\t  var transport = this.createTransport(name, { probe: 1 });\n+\t  var failed = false;\n+\t  var self = this;\n+\n+\t  Socket.priorWebsocketSuccess = false;\n+\n+\t  function onTransportOpen() {\n+\t    if (self.onlyBinaryUpgrades) {\n+\t      var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n+\t      failed = failed || upgradeLosesBinary;\n+\t    }\n+\t    if (failed) return;\n+\n+\t    debug('probe transport \"%s\" opened', name);\n+\t    transport.send([{ type: 'ping', data: 'probe' }]);\n+\t    transport.once('packet', function (msg) {\n+\t      if (failed) return;\n+\t      if ('pong' === msg.type && 'probe' === msg.data) {\n+\t        debug('probe transport \"%s\" pong', name);\n+\t        self.upgrading = true;\n+\t        self.emit('upgrading', transport);\n+\t        if (!transport) return;\n+\t        Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n+\n+\t        debug('pausing current transport \"%s\"', self.transport.name);\n+\t        self.transport.pause(function () {\n+\t          if (failed) return;\n+\t          if ('closed' === self.readyState) return;\n+\t          debug('changing transport and sending upgrade packet');\n+\n+\t          cleanup();\n+\n+\t          self.setTransport(transport);\n+\t          transport.send([{ type: 'upgrade' }]);\n+\t          self.emit('upgrade', transport);\n+\t          transport = null;\n+\t          self.upgrading = false;\n+\t          self.flush();\n+\t        });\n+\t      } else {\n+\t        debug('probe transport \"%s\" failed', name);\n+\t        var err = new Error('probe error');\n+\t        err.transport = transport.name;\n+\t        self.emit('upgradeError', err);\n+\t      }\n+\t    });\n+\t  }\n+\n+\t  function freezeTransport() {\n+\t    if (failed) return;\n+\n+\t    // Any callback called by transport should be ignored since now\n+\t    failed = true;\n+\n+\t    cleanup();\n+\n+\t    transport.close();\n+\t    transport = null;\n+\t  }\n+\n+\t  // Handle any error that happens while probing\n+\t  function onerror(err) {\n+\t    var error = new Error('probe error: ' + err);\n+\t    error.transport = transport.name;\n+\n+\t    freezeTransport();\n+\n+\t    debug('probe transport \"%s\" failed because of error: %s', name, err);\n+\n+\t    self.emit('upgradeError', error);\n+\t  }\n+\n+\t  function onTransportClose() {\n+\t    onerror('transport closed');\n+\t  }\n+\n+\t  // When the socket is closed while we're probing\n+\t  function onclose() {\n+\t    onerror('socket closed');\n+\t  }\n+\n+\t  // When the socket is upgraded while we're probing\n+\t  function onupgrade(to) {\n+\t    if (transport && to.name !== transport.name) {\n+\t      debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n+\t      freezeTransport();\n+\t    }\n+\t  }\n+\n+\t  // Remove all listeners on the transport and on self\n+\t  function cleanup() {\n+\t    transport.removeListener('open', onTransportOpen);\n+\t    transport.removeListener('error', onerror);\n+\t    transport.removeListener('close', onTransportClose);\n+\t    self.removeListener('close', onclose);\n+\t    self.removeListener('upgrading', onupgrade);\n+\t  }\n+\n+\t  transport.once('open', onTransportOpen);\n+\t  transport.once('error', onerror);\n+\t  transport.once('close', onTransportClose);\n+\n+\t  this.once('close', onclose);\n+\t  this.once('upgrading', onupgrade);\n+\n+\t  transport.open();\n+\t};\n+\n+\t/**\n+\t * Called when connection is deemed open.\n+\t *\n+\t * @api public\n+\t */\n+\n+\tSocket.prototype.onOpen = function () {\n+\t  debug('socket open');\n+\t  this.readyState = 'open';\n+\t  Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n+\t  this.emit('open');\n+\t  this.flush();\n+\n+\t  // we check for `readyState` in case an `open`\n+\t  // listener already closed the socket\n+\t  if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n+\t    debug('starting upgrade probes');\n+\t    for (var i = 0, l = this.upgrades.length; i < l; i++) {\n+\t      this.probe(this.upgrades[i]);\n+\t    }\n+\t  }\n+\t};\n+\n+\t/**\n+\t * Handles a packet.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.onPacket = function (packet) {\n+\t  if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n+\t    debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n+\n+\t    this.emit('packet', packet);\n+\n+\t    // Socket is live - any packet counts\n+\t    this.emit('heartbeat');\n+\n+\t    switch (packet.type) {\n+\t      case 'open':\n+\t        this.onHandshake(JSON.parse(packet.data));\n+\t        break;\n+\n+\t      case 'pong':\n+\t        this.setPing();\n+\t        this.emit('pong');\n+\t        break;\n+\n+\t      case 'error':\n+\t        var err = new Error('server error');\n+\t        err.code = packet.data;\n+\t        this.onError(err);\n+\t        break;\n+\n+\t      case 'message':\n+\t        this.emit('data', packet.data);\n+\t        this.emit('message', packet.data);\n+\t        break;\n+\t    }\n+\t  } else {\n+\t    debug('packet received with socket readyState \"%s\"', this.readyState);\n+\t  }\n+\t};\n+\n+\t/**\n+\t * Called upon handshake completion.\n+\t *\n+\t * @param {Object} handshake obj\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.onHandshake = function (data) {\n+\t  this.emit('handshake', data);\n+\t  this.id = data.sid;\n+\t  this.transport.query.sid = data.sid;\n+\t  this.upgrades = this.filterUpgrades(data.upgrades);\n+\t  this.pingInterval = data.pingInterval;\n+\t  this.pingTimeout = data.pingTimeout;\n+\t  this.onOpen();\n+\t  // In case open handler closes socket\n+\t  if ('closed' === this.readyState) return;\n+\t  this.setPing();\n+\n+\t  // Prolong liveness of socket on heartbeat\n+\t  this.removeListener('heartbeat', this.onHeartbeat);\n+\t  this.on('heartbeat', this.onHeartbeat);\n+\t};\n+\n+\t/**\n+\t * Resets ping timeout.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.onHeartbeat = function (timeout) {\n+\t  clearTimeout(this.pingTimeoutTimer);\n+\t  var self = this;\n+\t  self.pingTimeoutTimer = setTimeout(function () {\n+\t    if ('closed' === self.readyState) return;\n+\t    self.onClose('ping timeout');\n+\t  }, timeout || self.pingInterval + self.pingTimeout);\n+\t};\n+\n+\t/**\n+\t * Pings server every `this.pingInterval` and expects response\n+\t * within `this.pingTimeout` or closes connection.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.setPing = function () {\n+\t  var self = this;\n+\t  clearTimeout(self.pingIntervalTimer);\n+\t  self.pingIntervalTimer = setTimeout(function () {\n+\t    debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n+\t    self.ping();\n+\t    self.onHeartbeat(self.pingTimeout);\n+\t  }, self.pingInterval);\n+\t};\n+\n+\t/**\n+\t* Sends a ping packet.\n+\t*\n+\t* @api private\n+\t*/\n+\n+\tSocket.prototype.ping = function () {\n+\t  var self = this;\n+\t  this.sendPacket('ping', function () {\n+\t    self.emit('ping');\n+\t  });\n+\t};\n+\n+\t/**\n+\t * Called on `drain` event\n+\t *\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.onDrain = function () {\n+\t  this.writeBuffer.splice(0, this.prevBufferLen);\n+\n+\t  // setting prevBufferLen = 0 is very important\n+\t  // for example, when upgrading, upgrade packet is sent over,\n+\t  // and a nonzero prevBufferLen could cause problems on `drain`\n+\t  this.prevBufferLen = 0;\n+\n+\t  if (0 === this.writeBuffer.length) {\n+\t    this.emit('drain');\n+\t  } else {\n+\t    this.flush();\n+\t  }\n+\t};\n+\n+\t/**\n+\t * Flush write buffers.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.flush = function () {\n+\t  if ('closed' !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) {\n+\t    debug('flushing %d packets in socket', this.writeBuffer.length);\n+\t    this.transport.send(this.writeBuffer);\n+\t    // keep track of current length of writeBuffer\n+\t    // splice writeBuffer and callbackBuffer on `drain`\n+\t    this.prevBufferLen = this.writeBuffer.length;\n+\t    this.emit('flush');\n+\t  }\n+\t};\n+\n+\t/**\n+\t * Sends a message.\n+\t *\n+\t * @param {String} message.\n+\t * @param {Function} callback function.\n+\t * @param {Object} options.\n+\t * @return {Socket} for chaining.\n+\t * @api public\n+\t */\n+\n+\tSocket.prototype.write = Socket.prototype.send = function (msg, options, fn) {\n+\t  this.sendPacket('message', msg, options, fn);\n+\t  return this;\n+\t};\n+\n+\t/**\n+\t * Sends a packet.\n+\t *\n+\t * @param {String} packet type.\n+\t * @param {String} data.\n+\t * @param {Object} options.\n+\t * @param {Function} callback function.\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.sendPacket = function (type, data, options, fn) {\n+\t  if ('function' === typeof data) {\n+\t    fn = data;\n+\t    data = undefined;\n+\t  }\n+\n+\t  if ('function' === typeof options) {\n+\t    fn = options;\n+\t    options = null;\n+\t  }\n+\n+\t  if ('closing' === this.readyState || 'closed' === this.readyState) {\n+\t    return;\n+\t  }\n+\n+\t  options = options || {};\n+\t  options.compress = false !== options.compress;\n+\n+\t  var packet = {\n+\t    type: type,\n+\t    data: data,\n+\t    options: options\n+\t  };\n+\t  this.emit('packetCreate', packet);\n+\t  this.writeBuffer.push(packet);\n+\t  if (fn) this.once('flush', fn);\n+\t  this.flush();\n+\t};\n+\n+\t/**\n+\t * Closes the connection.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.close = function () {\n+\t  if ('opening' === this.readyState || 'open' === this.readyState) {\n+\t    this.readyState = 'closing';\n+\n+\t    var self = this;\n+\n+\t    if (this.writeBuffer.length) {\n+\t      this.once('drain', function () {\n+\t        if (this.upgrading) {\n+\t          waitForUpgrade();\n+\t        } else {\n+\t          close();\n+\t        }\n+\t      });\n+\t    } else if (this.upgrading) {\n+\t      waitForUpgrade();\n+\t    } else {\n+\t      close();\n+\t    }\n+\t  }\n+\n+\t  function close() {\n+\t    self.onClose('forced close');\n+\t    debug('socket closing - telling transport to close');\n+\t    self.transport.close();\n+\t  }\n+\n+\t  function cleanupAndClose() {\n+\t    self.removeListener('upgrade', cleanupAndClose);\n+\t    self.removeListener('upgradeError', cleanupAndClose);\n+\t    close();\n+\t  }\n+\n+\t  function waitForUpgrade() {\n+\t    // wait for upgrade to finish since we can't send packets while pausing a transport\n+\t    self.once('upgrade', cleanupAndClose);\n+\t    self.once('upgradeError', cleanupAndClose);\n+\t  }\n+\n+\t  return this;\n+\t};\n+\n+\t/**\n+\t * Called upon transport error\n+\t *\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.onError = function (err) {\n+\t  debug('socket error %j', err);\n+\t  Socket.priorWebsocketSuccess = false;\n+\t  this.emit('error', err);\n+\t  this.onClose('transport error', err);\n+\t};\n+\n+\t/**\n+\t * Called upon transport close.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tSocket.prototype.onClose = function (reason, desc) {\n+\t  if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n+\t    debug('socket close with reason: \"%s\"', reason);\n+\t    var self = this;\n+\n+\t    // clear timers\n+\t    clearTimeout(this.pingIntervalTimer);\n+\t    clearTimeout(this.pingTimeoutTimer);\n+\n+\t    // stop event from firing again for transport\n+\t    this.transport.removeAllListeners('close');\n+\n+\t    // ensure transport won't stay open\n+\t    this.transport.close();\n+\n+\t    // ignore further transport communication\n+\t    this.transport.removeAllListeners();\n+\n+\t    // set ready state\n+\t    this.readyState = 'closed';\n+\n+\t    // clear session id\n+\t    this.id = null;\n+\n+\t    // emit close event\n+\t    this.emit('close', reason, desc);\n+\n+\t    // clean buffers after, so users can still\n+\t    // grab the buffers on `close` event\n+\t    self.writeBuffer = [];\n+\t    self.prevBufferLen = 0;\n+\t  }\n+\t};\n+\n+\t/**\n+\t * Filters upgrades, returning only those matching client transports.\n+\t *\n+\t * @param {Array} server upgrades\n+\t * @api private\n+\t *\n+\t */\n+\n+\tSocket.prototype.filterUpgrades = function (upgrades) {\n+\t  var filteredUpgrades = [];\n+\t  for (var i = 0, j = upgrades.length; i < j; i++) {\n+\t    if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n+\t  }\n+\t  return filteredUpgrades;\n+\t};\n+\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n+\n+/***/ },\n+/* 2 */\n+/***/ function(module, exports, __webpack_require__) {\n+\n+\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n+\n+\t/**\n+\t * Module dependencies\n+\t */\n+\n+\tvar XMLHttpRequest = __webpack_require__(3);\n+\tvar XHR = __webpack_require__(5);\n+\tvar JSONP = __webpack_require__(26);\n+\tvar websocket = __webpack_require__(27);\n+\n+\t/**\n+\t * Export transports.\n+\t */\n+\n+\texports.polling = polling;\n+\texports.websocket = websocket;\n+\n+\t/**\n+\t * Polling transport polymorphic constructor.\n+\t * Decides on xhr vs jsonp based on feature detection.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tfunction polling(opts) {\n+\t  var xhr;\n+\t  var xd = false;\n+\t  var xs = false;\n+\t  var jsonp = false !== opts.jsonp;\n+\n+\t  if (global.location) {\n+\t    var isSSL = 'https:' === location.protocol;\n+\t    var port = location.port;\n+\n+\t    // some user agents have empty `location.port`\n+\t    if (!port) {\n+\t      port = isSSL ? 443 : 80;\n+\t    }\n+\n+\t    xd = opts.hostname !== location.hostname || port !== opts.port;\n+\t    xs = opts.secure !== isSSL;\n+\t  }\n+\n+\t  opts.xdomain = xd;\n+\t  opts.xscheme = xs;\n+\t  xhr = new XMLHttpRequest(opts);\n+\n+\t  if ('open' in xhr && !opts.forceJSONP) {\n+\t    return new XHR(opts);\n+\t  } else {\n+\t    if (!jsonp) throw new Error('JSONP disabled');\n+\t    return new JSONP(opts);\n+\t  }\n+\t}\n+\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n+\n+/***/ },\n+/* 3 */\n+/***/ function(module, exports, __webpack_require__) {\n+\n+\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n+\n+\t// browser shim for xmlhttprequest module\n+\n+\tvar hasCORS = __webpack_require__(4);\n+\n+\tmodule.exports = function (opts) {\n+\t  var xdomain = opts.xdomain;\n+\n+\t  // scheme must be same when usign XDomainRequest\n+\t  // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n+\t  var xscheme = opts.xscheme;\n+\n+\t  // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n+\t  // https://github.com/Automattic/engine.io-client/pull/217\n+\t  var enablesXDR = opts.enablesXDR;\n+\n+\t  // XMLHttpRequest can be disabled on IE\n+\t  try {\n+\t    if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n+\t      return new XMLHttpRequest();\n+\t    }\n+\t  } catch (e) {}\n+\n+\t  // Use XDomainRequest for IE8 if enablesXDR is true\n+\t  // because loading bar keeps flashing when using jsonp-polling\n+\t  // https://github.com/yujiosaka/socke.io-ie8-loading-example\n+\t  try {\n+\t    if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n+\t      return new XDomainRequest();\n+\t    }\n+\t  } catch (e) {}\n+\n+\t  if (!xdomain) {\n+\t    try {\n+\t      return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n+\t    } catch (e) {}\n+\t  }\n+\t};\n+\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n+\n+/***/ },\n+/* 4 */\n+/***/ function(module, exports) {\n+\n+\t\n+\t/**\n+\t * Module exports.\n+\t *\n+\t * Logic borrowed from Modernizr:\n+\t *\n+\t *   - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n+\t */\n+\n+\ttry {\n+\t  module.exports = typeof XMLHttpRequest !== 'undefined' &&\n+\t    'withCredentials' in new XMLHttpRequest();\n+\t} catch (err) {\n+\t  // if XMLHttp support is disabled in IE then it will throw\n+\t  // when trying to create\n+\t  module.exports = false;\n+\t}\n+\n+\n+/***/ },\n+/* 5 */\n+/***/ function(module, exports, __webpack_require__) {\n+\n+\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n+\n+\t/**\n+\t * Module requirements.\n+\t */\n+\n+\tvar XMLHttpRequest = __webpack_require__(3);\n+\tvar Polling = __webpack_require__(6);\n+\tvar Emitter = __webpack_require__(18);\n+\tvar inherit = __webpack_require__(20);\n+\tvar debug = __webpack_require__(22)('engine.io-client:polling-xhr');\n+\n+\t/**\n+\t * Module exports.\n+\t */\n+\n+\tmodule.exports = XHR;\n+\tmodule.exports.Request = Request;\n+\n+\t/**\n+\t * Empty function\n+\t */\n+\n+\tfunction empty() {}\n+\n+\t/**\n+\t * XHR Polling constructor.\n+\t *\n+\t * @param {Object} opts\n+\t * @api public\n+\t */\n+\n+\tfunction XHR(opts) {\n+\t  Polling.call(this, opts);\n+\t  this.requestTimeout = opts.requestTimeout;\n+\t  this.extraHeaders = opts.extraHeaders;\n+\n+\t  if (global.location) {\n+\t    var isSSL = 'https:' === location.protocol;\n+\t    var port = location.port;\n+\n+\t    // some user agents have empty `location.port`\n+\t    if (!port) {\n+\t      port = isSSL ? 443 : 80;\n+\t    }\n+\n+\t    this.xd = opts.hostname !== global.location.hostname || port !== opts.port;\n+\t    this.xs = opts.secure !== isSSL;\n+\t  }\n+\t}\n+\n+\t/**\n+\t * Inherits from Polling.\n+\t */\n+\n+\tinherit(XHR, Polling);\n+\n+\t/**\n+\t * XHR supports binary\n+\t */\n+\n+\tXHR.prototype.supportsBinary = true;\n+\n+\t/**\n+\t * Creates a request.\n+\t *\n+\t * @param {String} method\n+\t * @api private\n+\t */\n+\n+\tXHR.prototype.request = function (opts) {\n+\t  opts = opts || {};\n+\t  opts.uri = this.uri();\n+\t  opts.xd = this.xd;\n+\t  opts.xs = this.xs;\n+\t  opts.agent = this.agent || false;\n+\t  opts.supportsBinary = this.supportsBinary;\n+\t  opts.enablesXDR = this.enablesXDR;\n+\n+\t  // SSL options for Node.js client\n+\t  opts.pfx = this.pfx;\n+\t  opts.key = this.key;\n+\t  opts.passphrase = this.passphrase;\n+\t  opts.cert = this.cert;\n+\t  opts.ca = this.ca;\n+\t  opts.ciphers = this.ciphers;\n+\t  opts.rejectUnauthorized = this.rejectUnauthorized;\n+\t  opts.requestTimeout = this.requestTimeout;\n+\n+\t  // other options for Node.js client\n+\t  opts.extraHeaders = this.extraHeaders;\n+\n+\t  return new Request(opts);\n+\t};\n+\n+\t/**\n+\t * Sends data.\n+\t *\n+\t * @param {String} data to send.\n+\t * @param {Function} called upon flush.\n+\t * @api private\n+\t */\n+\n+\tXHR.prototype.doWrite = function (data, fn) {\n+\t  var isBinary = typeof data !== 'string' && data !== undefined;\n+\t  var req = this.request({ method: 'POST', data: data, isBinary: isBinary });\n+\t  var self = this;\n+\t  req.on('success', fn);\n+\t  req.on('error', function (err) {\n+\t    self.onError('xhr post error', err);\n+\t  });\n+\t  this.sendXhr = req;\n+\t};\n+\n+\t/**\n+\t * Starts a poll cycle.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tXHR.prototype.doPoll = function () {\n+\t  debug('xhr poll');\n+\t  var req = this.request();\n+\t  var self = this;\n+\t  req.on('data', function (data) {\n+\t    self.onData(data);\n+\t  });\n+\t  req.on('error', function (err) {\n+\t    self.onError('xhr poll error', err);\n+\t  });\n+\t  this.pollXhr = req;\n+\t};\n+\n+\t/**\n+\t * Request constructor\n+\t *\n+\t * @param {Object} options\n+\t * @api public\n+\t */\n+\n+\tfunction Request(opts) {\n+\t  this.method = opts.method || 'GET';\n+\t  this.uri = opts.uri;\n+\t  this.xd = !!opts.xd;\n+\t  this.xs = !!opts.xs;\n+\t  this.async = false !== opts.async;\n+\t  this.data = undefined !== opts.data ? opts.data : null;\n+\t  this.agent = opts.agent;\n+\t  this.isBinary = opts.isBinary;\n+\t  this.supportsBinary = opts.supportsBinary;\n+\t  this.enablesXDR = opts.enablesXDR;\n+\t  this.requestTimeout = opts.requestTimeout;\n+\n+\t  // SSL options for Node.js client\n+\t  this.pfx = opts.pfx;\n+\t  this.key = opts.key;\n+\t  this.passphrase = opts.passphrase;\n+\t  this.cert = opts.cert;\n+\t  this.ca = opts.ca;\n+\t  this.ciphers = opts.ciphers;\n+\t  this.rejectUnauthorized = opts.rejectUnauthorized;\n+\n+\t  // other options for Node.js client\n+\t  this.extraHeaders = opts.extraHeaders;\n+\n+\t  this.create();\n+\t}\n+\n+\t/**\n+\t * Mix in `Emitter`.\n+\t */\n+\n+\tEmitter(Request.prototype);\n+\n+\t/**\n+\t * Creates the XHR object and sends the request.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tRequest.prototype.create = function () {\n+\t  var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };\n+\n+\t  // SSL options for Node.js client\n+\t  opts.pfx = this.pfx;\n+\t  opts.key = this.key;\n+\t  opts.passphrase = this.passphrase;\n+\t  opts.cert = this.cert;\n+\t  opts.ca = this.ca;\n+\t  opts.ciphers = this.ciphers;\n+\t  opts.rejectUnauthorized = this.rejectUnauthorized;\n+\n+\t  var xhr = this.xhr = new XMLHttpRequest(opts);\n+\t  var self = this;\n+\n+\t  try {\n+\t    debug('xhr open %s: %s', this.method, this.uri);\n+\t    xhr.open(this.method, this.uri, this.async);\n+\t    try {\n+\t      if (this.extraHeaders) {\n+\t        xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n+\t        for (var i in this.extraHeaders) {\n+\t          if (this.extraHeaders.hasOwnProperty(i)) {\n+\t            xhr.setRequestHeader(i, this.extraHeaders[i]);\n+\t          }\n+\t        }\n+\t      }\n+\t    } catch (e) {}\n+\n+\t    if ('POST' === this.method) {\n+\t      try {\n+\t        if (this.isBinary) {\n+\t          xhr.setRequestHeader('Content-type', 'application/octet-stream');\n+\t        } else {\n+\t          xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');\n+\t        }\n+\t      } catch (e) {}\n+\t    }\n+\n+\t    try {\n+\t      xhr.setRequestHeader('Accept', '*/*');\n+\t    } catch (e) {}\n+\n+\t    // ie6 check\n+\t    if ('withCredentials' in xhr) {\n+\t      xhr.withCredentials = true;\n+\t    }\n+\n+\t    if (this.requestTimeout) {\n+\t      xhr.timeout = this.requestTimeout;\n+\t    }\n+\n+\t    if (this.hasXDR()) {\n+\t      xhr.onload = function () {\n+\t        self.onLoad();\n+\t      };\n+\t      xhr.onerror = function () {\n+\t        self.onError(xhr.responseText);\n+\t      };\n+\t    } else {\n+\t      xhr.onreadystatechange = function () {\n+\t        if (xhr.readyState === 2) {\n+\t          var contentType;\n+\t          try {\n+\t            contentType = xhr.getResponseHeader('Content-Type');\n+\t          } catch (e) {}\n+\t          if (contentType === 'application/octet-stream') {\n+\t            xhr.responseType = 'arraybuffer';\n+\t          }\n+\t        }\n+\t        if (4 !== xhr.readyState) return;\n+\t        if (200 === xhr.status || 1223 === xhr.status) {\n+\t          self.onLoad();\n+\t        } else {\n+\t          // make sure the `error` event handler that's user-set\n+\t          // does not throw in the same tick and gets caught here\n+\t          setTimeout(function () {\n+\t            self.onError(xhr.status);\n+\t          }, 0);\n+\t        }\n+\t      };\n+\t    }\n+\n+\t    debug('xhr data %s', this.data);\n+\t    xhr.send(this.data);\n+\t  } catch (e) {\n+\t    // Need to defer since .create() is called directly fhrom the constructor\n+\t    // and thus the 'error' event can only be only bound *after* this exception\n+\t    // occurs.  Therefore, also, we cannot throw here at all.\n+\t    setTimeout(function () {\n+\t      self.onError(e);\n+\t    }, 0);\n+\t    return;\n+\t  }\n+\n+\t  if (global.document) {\n+\t    this.index = Request.requestsCount++;\n+\t    Request.requests[this.index] = this;\n+\t  }\n+\t};\n+\n+\t/**\n+\t * Called upon successful response.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tRequest.prototype.onSuccess = function () {\n+\t  this.emit('success');\n+\t  this.cleanup();\n+\t};\n+\n+\t/**\n+\t * Called if we have data.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tRequest.prototype.onData = function (data) {\n+\t  this.emit('data', data);\n+\t  this.onSuccess();\n+\t};\n+\n+\t/**\n+\t * Called upon error.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tRequest.prototype.onError = function (err) {\n+\t  this.emit('error', err);\n+\t  this.cleanup(true);\n+\t};\n+\n+\t/**\n+\t * Cleans up house.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tRequest.prototype.cleanup = function (fromError) {\n+\t  if ('undefined' === typeof this.xhr || null === this.xhr) {\n+\t    return;\n+\t  }\n+\t  // xmlhttprequest\n+\t  if (this.hasXDR()) {\n+\t    this.xhr.onload = this.xhr.onerror = empty;\n+\t  } else {\n+\t    this.xhr.onreadystatechange = empty;\n+\t  }\n+\n+\t  if (fromError) {\n+\t    try {\n+\t      this.xhr.abort();\n+\t    } catch (e) {}\n+\t  }\n+\n+\t  if (global.document) {\n+\t    delete Request.requests[this.index];\n+\t  }\n+\n+\t  this.xhr = null;\n+\t};\n+\n+\t/**\n+\t * Called upon load.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tRequest.prototype.onLoad = function () {\n+\t  var data;\n+\t  try {\n+\t    var contentType;\n+\t    try {\n+\t      contentType = this.xhr.getResponseHeader('Content-Type');\n+\t    } catch (e) {}\n+\t    if (contentType === 'application/octet-stream') {\n+\t      data = this.xhr.response || this.xhr.responseText;\n+\t    } else {\n+\t      data = this.xhr.responseText;\n+\t    }\n+\t  } catch (e) {\n+\t    this.onError(e);\n+\t  }\n+\t  if (null != data) {\n+\t    this.onData(data);\n+\t  }\n+\t};\n+\n+\t/**\n+\t * Check if it has XDomainRequest.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tRequest.prototype.hasXDR = function () {\n+\t  return 'undefined' !== typeof global.XDomainRequest && !this.xs && this.enablesXDR;\n+\t};\n+\n+\t/**\n+\t * Aborts the request.\n+\t *\n+\t * @api public\n+\t */\n+\n+\tRequest.prototype.abort = function () {\n+\t  this.cleanup();\n+\t};\n+\n+\t/**\n+\t * Aborts pending requests when unloading the window. This is needed to prevent\n+\t * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n+\t * emitted.\n+\t */\n+\n+\tRequest.requestsCount = 0;\n+\tRequest.requests = {};\n+\n+\tif (global.document) {\n+\t  if (global.attachEvent) {\n+\t    global.attachEvent('onunload', unloadHandler);\n+\t  } else if (global.addEventListener) {\n+\t    global.addEventListener('beforeunload', unloadHandler, false);\n+\t  }\n+\t}\n+\n+\tfunction unloadHandler() {\n+\t  for (var i in Request.requests) {\n+\t    if (Request.requests.hasOwnProperty(i)) {\n+\t      Request.requests[i].abort();\n+\t    }\n+\t  }\n+\t}\n+\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n+\n+/***/ },\n+/* 6 */\n+/***/ function(module, exports, __webpack_require__) {\n+\n+\t'use strict';\n+\n+\t/**\n+\t * Module dependencies.\n+\t */\n+\n+\tvar Transport = __webpack_require__(7);\n+\tvar parseqs = __webpack_require__(19);\n+\tvar parser = __webpack_require__(8);\n+\tvar inherit = __webpack_require__(20);\n+\tvar yeast = __webpack_require__(21);\n+\tvar debug = __webpack_require__(22)('engine.io-client:polling');\n+\n+\t/**\n+\t * Module exports.\n+\t */\n+\n+\tmodule.exports = Polling;\n+\n+\t/**\n+\t * Is XHR2 supported?\n+\t */\n+\n+\tvar hasXHR2 = function () {\n+\t  var XMLHttpRequest = __webpack_require__(3);\n+\t  var xhr = new XMLHttpRequest({ xdomain: false });\n+\t  return null != xhr.responseType;\n+\t}();\n+\n+\t/**\n+\t * Polling interface.\n+\t *\n+\t * @param {Object} opts\n+\t * @api private\n+\t */\n+\n+\tfunction Polling(opts) {\n+\t  var forceBase64 = opts && opts.forceBase64;\n+\t  if (!hasXHR2 || forceBase64) {\n+\t    this.supportsBinary = false;\n+\t  }\n+\t  Transport.call(this, opts);\n+\t}\n+\n+\t/**\n+\t * Inherits from Transport.\n+\t */\n+\n+\tinherit(Polling, Transport);\n+\n+\t/**\n+\t * Transport name.\n+\t */\n+\n+\tPolling.prototype.name = 'polling';\n+\n+\t/**\n+\t * Opens the socket (triggers polling). We write a PING message to determine\n+\t * when the transport is open.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tPolling.prototype.doOpen = function () {\n+\t  this.poll();\n+\t};\n+\n+\t/**\n+\t * Pauses polling.\n+\t *\n+\t * @param {Function} callback upon buffers are flushed and transport is paused\n+\t * @api private\n+\t */\n+\n+\tPolling.prototype.pause = function (onPause) {\n+\t  var self = this;\n+\n+\t  this.readyState = 'pausing';\n+\n+\t  function pause() {\n+\t    debug('paused');\n+\t    self.readyState = 'paused';\n+\t    onPause();\n+\t  }\n+\n+\t  if (this.polling || !this.writable) {\n+\t    var total = 0;\n+\n+\t    if (this.polling) {\n+\t      debug('we are currently polling - waiting to pause');\n+\t      total++;\n+\t      this.once('pollComplete', function () {\n+\t        debug('pre-pause polling complete');\n+\t        --total || pause();\n+\t      });\n+\t    }\n+\n+\t    if (!this.writable) {\n+\t      debug('we are currently writing - waiting to pause');\n+\t      total++;\n+\t      this.once('drain', function () {\n+\t        debug('pre-pause writing complete');\n+\t        --total || pause();\n+\t      });\n+\t    }\n+\t  } else {\n+\t    pause();\n+\t  }\n+\t};\n+\n+\t/**\n+\t * Starts polling cycle.\n+\t *\n+\t * @api public\n+\t */\n+\n+\tPolling.prototype.poll = function () {\n+\t  debug('polling');\n+\t  this.polling = true;\n+\t  this.doPoll();\n+\t  this.emit('poll');\n+\t};\n+\n+\t/**\n+\t * Overloads onData to detect payloads.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tPolling.prototype.onData = function (data) {\n+\t  var self = this;\n+\t  debug('polling got data %s', data);\n+\t  var callback = function callback(packet, index, total) {\n+\t    // if its the first message we consider the transport open\n+\t    if ('opening' === self.readyState) {\n+\t      self.onOpen();\n+\t    }\n+\n+\t    // if its a close packet, we close the ongoing requests\n+\t    if ('close' === packet.type) {\n+\t      self.onClose();\n+\t      return false;\n+\t    }\n+\n+\t    // otherwise bypass onData and handle the message\n+\t    self.onPacket(packet);\n+\t  };\n+\n+\t  // decode payload\n+\t  parser.decodePayload(data, this.socket.binaryType, callback);\n+\n+\t  // if an event did not trigger closing\n+\t  if ('closed' !== this.readyState) {\n+\t    // if we got data we're not polling\n+\t    this.polling = false;\n+\t    this.emit('pollComplete');\n+\n+\t    if ('open' === this.readyState) {\n+\t      this.poll();\n+\t    } else {\n+\t      debug('ignoring poll - transport state \"%s\"', this.readyState);\n+\t    }\n+\t  }\n+\t};\n+\n+\t/**\n+\t * For polling, send a close packet.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tPolling.prototype.doClose = function () {\n+\t  var self = this;\n+\n+\t  function close() {\n+\t    debug('writing close packet');\n+\t    self.write([{ type: 'close' }]);\n+\t  }\n+\n+\t  if ('open' === this.readyState) {\n+\t    debug('transport open - closing');\n+\t    close();\n+\t  } else {\n+\t    // in case we're trying to close while\n+\t    // handshaking is in progress (GH-164)\n+\t    debug('transport not open - deferring close');\n+\t    this.once('open', close);\n+\t  }\n+\t};\n+\n+\t/**\n+\t * Writes a packets payload.\n+\t *\n+\t * @param {Array} data packets\n+\t * @param {Function} drain callback\n+\t * @api private\n+\t */\n+\n+\tPolling.prototype.write = function (packets) {\n+\t  var self = this;\n+\t  this.writable = false;\n+\t  var callbackfn = function callbackfn() {\n+\t    self.writable = true;\n+\t    self.emit('drain');\n+\t  };\n+\n+\t  parser.encodePayload(packets, this.supportsBinary, function (data) {\n+\t    self.doWrite(data, callbackfn);\n+\t  });\n+\t};\n+\n+\t/**\n+\t * Generates uri for connection.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tPolling.prototype.uri = function () {\n+\t  var query = this.query || {};\n+\t  var schema = this.secure ? 'https' : 'http';\n+\t  var port = '';\n+\n+\t  // cache busting is forced\n+\t  if (false !== this.timestampRequests) {\n+\t    query[this.timestampParam] = yeast();\n+\t  }\n+\n+\t  if (!this.supportsBinary && !query.sid) {\n+\t    query.b64 = 1;\n+\t  }\n+\n+\t  query = parseqs.encode(query);\n+\n+\t  // avoid port if default for schema\n+\t  if (this.port && ('https' === schema && Number(this.port) !== 443 || 'http' === schema && Number(this.port) !== 80)) {\n+\t    port = ':' + this.port;\n+\t  }\n+\n+\t  // prepend ? to query\n+\t  if (query.length) {\n+\t    query = '?' + query;\n+\t  }\n+\n+\t  var ipv6 = this.hostname.indexOf(':') !== -1;\n+\t  return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n+\t};\n+\n+/***/ },\n+/* 7 */\n+/***/ function(module, exports, __webpack_require__) {\n+\n+\t'use strict';\n+\n+\t/**\n+\t * Module dependencies.\n+\t */\n+\n+\tvar parser = __webpack_require__(8);\n+\tvar Emitter = __webpack_require__(18);\n+\n+\t/**\n+\t * Module exports.\n+\t */\n+\n+\tmodule.exports = Transport;\n+\n+\t/**\n+\t * Transport abstract constructor.\n+\t *\n+\t * @param {Object} options.\n+\t * @api private\n+\t */\n+\n+\tfunction Transport(opts) {\n+\t  this.path = opts.path;\n+\t  this.hostname = opts.hostname;\n+\t  this.port = opts.port;\n+\t  this.secure = opts.secure;\n+\t  this.query = opts.query;\n+\t  this.timestampParam = opts.timestampParam;\n+\t  this.timestampRequests = opts.timestampRequests;\n+\t  this.readyState = '';\n+\t  this.agent = opts.agent || false;\n+\t  this.socket = opts.socket;\n+\t  this.enablesXDR = opts.enablesXDR;\n+\n+\t  // SSL options for Node.js client\n+\t  this.pfx = opts.pfx;\n+\t  this.key = opts.key;\n+\t  this.passphrase = opts.passphrase;\n+\t  this.cert = opts.cert;\n+\t  this.ca = opts.ca;\n+\t  this.ciphers = opts.ciphers;\n+\t  this.rejectUnauthorized = opts.rejectUnauthorized;\n+\t  this.forceNode = opts.forceNode;\n+\n+\t  // other options for Node.js client\n+\t  this.extraHeaders = opts.extraHeaders;\n+\t  this.localAddress = opts.localAddress;\n+\t}\n+\n+\t/**\n+\t * Mix in `Emitter`.\n+\t */\n+\n+\tEmitter(Transport.prototype);\n+\n+\t/**\n+\t * Emits an error.\n+\t *\n+\t * @param {String} str\n+\t * @return {Transport} for chaining\n+\t * @api public\n+\t */\n+\n+\tTransport.prototype.onError = function (msg, desc) {\n+\t  var err = new Error(msg);\n+\t  err.type = 'TransportError';\n+\t  err.description = desc;\n+\t  this.emit('error', err);\n+\t  return this;\n+\t};\n+\n+\t/**\n+\t * Opens the transport.\n+\t *\n+\t * @api public\n+\t */\n+\n+\tTransport.prototype.open = function () {\n+\t  if ('closed' === this.readyState || '' === this.readyState) {\n+\t    this.readyState = 'opening';\n+\t    this.doOpen();\n+\t  }\n+\n+\t  return this;\n+\t};\n+\n+\t/**\n+\t * Closes the transport.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tTransport.prototype.close = function () {\n+\t  if ('opening' === this.readyState || 'open' === this.readyState) {\n+\t    this.doClose();\n+\t    this.onClose();\n+\t  }\n+\n+\t  return this;\n+\t};\n+\n+\t/**\n+\t * Sends multiple packets.\n+\t *\n+\t * @param {Array} packets\n+\t * @api private\n+\t */\n+\n+\tTransport.prototype.send = function (packets) {\n+\t  if ('open' === this.readyState) {\n+\t    this.write(packets);\n+\t  } else {\n+\t    throw new Error('Transport not open');\n+\t  }\n+\t};\n+\n+\t/**\n+\t * Called upon open\n+\t *\n+\t * @api private\n+\t */\n+\n+\tTransport.prototype.onOpen = function () {\n+\t  this.readyState = 'open';\n+\t  this.writable = true;\n+\t  this.emit('open');\n+\t};\n+\n+\t/**\n+\t * Called with data.\n+\t *\n+\t * @param {String} data\n+\t * @api private\n+\t */\n+\n+\tTransport.prototype.onData = function (data) {\n+\t  var packet = parser.decodePacket(data, this.socket.binaryType);\n+\t  this.onPacket(packet);\n+\t};\n+\n+\t/**\n+\t * Called with a decoded packet.\n+\t */\n+\n+\tTransport.prototype.onPacket = function (packet) {\n+\t  this.emit('packet', packet);\n+\t};\n+\n+\t/**\n+\t * Called upon close.\n+\t *\n+\t * @api private\n+\t */\n+\n+\tTransport.prototype.onClose = function () {\n+\t  this.readyState = 'closed';\n+\t  this.emit('close');\n+\t};\n+\n+/***/ },\n+/* 8 */\n+/***/ function(module, exports, __webpack_require__) {\n+\n+\t/* WEBPACK VAR INJECTION */(function(global) {/**\n+\t * Module dependencies.\n+\t */\n+\n+\tvar keys = __webpack_require__(9);\n+\tvar hasBinary = __webpack_require__(10);\n+\tvar sliceBuffer = __webpack_require__(12);\n+\tvar after = __webpack_require__(13);\n+\tvar utf8 = __webpack_require__(14);\n+\n+\tvar base64encoder;\n+\tif (global && global.ArrayBuffer) {\n+\t  base64encoder = __webpack_require__(16);\n+\t}\n+\n+\t/**\n+\t * Check if we are running an android browser. That requires us to use\n+\t * ArrayBuffer with polling transports...\n+\t *\n+\t * http://ghinda.net/jpeg-blob-ajax-android/\n+\t */\n+\n+\tvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n+\n+\t/**\n+\t * Check if we are running in PhantomJS.\n+\t * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n+\t * https://github.com/ariya/phantomjs/issues/11395\n+\t * @type boolean\n+\t */\n+\tvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n+\n+\t/**\n+\t * When true, avoids using Blobs to encode payloads.\n+\t * @type boolean\n+\t */\n+\tvar dontSendBlobs = isAndroid || isPhantomJS;\n+\n+\t/**\n+\t * Current protocol version.\n+\t */\n+\n+\texports.protocol = 3;\n+\n+\t/**\n+\t * Packet types.\n+\t */\n+\n+\tvar packets = exports.packets = {\n+\t    open:     0    // non-ws\n+\t  , close:    1    // non-ws\n+\t  , ping:     2\n+\t  , pong:     3\n+\t  , message:  4\n+\t  , upgrade:  5\n+\t  , noop:     6\n+\t};\n+\n+\tvar packetslist = keys(packets);\n+\n+\t/**\n+\t * Premade error packet.\n+\t */\n+\n+\tvar err = { type: 'error', data: 'parser error' };\n+\n+\t/**\n+\t * Create a blob api even for blob builder when vendor prefixes exist\n+\t */\n+\n+\tvar Blob = __webpack_require__(17);\n+\n+\t/**\n+\t * Encodes a packet.\n+\t *\n+\t *     <packet type id> [ <data> ]\n+\t *\n+\t * Example:\n+\t *\n+\t *     5hello world\n+\t *     3\n+\t *     4\n+\t *\n+\t * Binary is encoded in an identical principle\n+\t *\n+\t * @api private\n+\t */\n+\n+\texports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n+\t  if (typeof supportsBinary === 'function') {\n+\t    callback = supportsBinary;\n+\t    supportsBinary = false;\n+\t  }\n+\n+\t  if (typeof utf8encode === 'function') {\n+\t    callback = utf8encode;\n+\t    utf8encode = null;\n+\t  }\n+\n+\t  var data = (packet.data === undefined)\n+\t    ? undefined\n+\t    : packet.data.buffer || packet.data;\n+\n+\t  if (global.ArrayBuffer && data instanceof ArrayBuffer) {\n+\t    return encodeArrayBuffer(packet, supportsBinary, callback);\n+\t  } else if (Blob && data instanceof global.Blob) {\n+\t    return encodeBlob(packet, supportsBinary, callback);\n+\t  }\n+\n+\t  // might be an object with { base64: true, data: dataAsBase64String }\n+\t  if (data && data.base64) {\n+\t    return encodeBase64Object(packet, callback);\n+\t  }\n+\n+\t  // Sending data as a utf-8 string\n+\t  var encoded = packets[packet.type];\n+\n+\t  // data fragment is optional\n+\t  if (undefined !== packet.data) {\n+\t    encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n+\t  }\n+\n+\t  return callback('' + encoded);\n+\n+\t};\n+\n+\tfunction encodeBase64Object(packet, callback) {\n+\t  // packet data is an object { base64: true, data: dataAsBase64String }\n+\t  var message = 'b' + exports.packets[packet.type] + packet.data.data;\n+\t  return callback(message);\n+\t}\n+\n+\t/**\n+\t * Encode packet helpers for binary types\n+\t */\n+\n+\tfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n+\t  if (!supportsBinary) {\n+\t    return exports.encodeBase64Packet(packet, callback);\n+\t  }\n+\n+\t  var data = packet.data;\n+\t  var contentArray = new Uint8Array(data);\n+\t  var resultBuffer = new Uint8Array(1 + data.byteLength);\n+\n+\t  resultBuffer[0] = packets[packet.type];\n+\t  for (var i = 0; i < contentArray.length; i++) {\n+\t    resultBuffer[i+1] = contentArray[i];\n+\t  }\n+\n+\t  return callback(resultBuffer.buffer);\n+\t}\n+\n+\tfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n+\t  if (!supportsBinary) {\n+\t    return exports.encodeBase64Packet(packet, callback);\n+\t  }\n+\n+\t  var fr = new FileReader();\n+\t  fr.onload = function() {\n+\t    packet.data = fr.result;\n+\t    exports.encodePacket(packet, supportsBinary, true, callback);\n+\t  };\n+\t  return fr.readAsArrayBuffer(packet.data);\n+\t}\n+\n+\tfunction encodeBlob(packet, supportsBinary, callback) {\n+\t  if (!supportsBinary) {\n+\t    return exports.encodeBase64Packet(packet, callback);\n+\t  }\n+\n+\t  if (dontSendBlobs) {\n+\t    return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n+\t  }\n+\n+\t  var length = new Uint8Array(1);\n+\t  length[0] = packets[packet.type];\n+\t  var blob = new Blob([length.buffer, packet.data]);\n+\n+\t  return callback(blob);\n+\t}\n+\n+\t/**\n+\t * Encodes a packet with binary data in a base64 string\n+\t *\n+\t * @param {Object} packet, has `type` and `data`\n+\t * @return {String} base64 encoded message\n+\t */\n+\n+\texports.encodeBase64Packet = function(packet, callback) {\n+\t  var message = 'b' + exports.packets[packet.type];\n+\t  if (Blob && packet.data instanceof global.Blob) {\n+\t    var fr = new FileReader();\n+\t    fr.onload = function() {\n+\t      var b64 = fr.result.split(',')[1];\n+\t      callback(message + b64);\n+\t    };\n+\t    return fr.readAsDataURL(packet.data);\n+\t  }\n+\n+\t  var b64data;\n+\t  try {\n+\t    b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n+\t  } catch (e) {\n+\t    // iPhone Safari doesn't let you apply with typed arrays\n+\t    var typed = new Uint8Array(packet.data);\n+\t    var basic = new Array(typed.length);\n+\t    for (var i = 0; i < typed.length; i++) {\n+\t      basic[i] = typed[i];\n+\t    }\n+\t    b64data = String.fromCharCode.apply(null, basic);\n+\t  }\n+\t  message += global.btoa(b64data);\n+\t  return callback(message);\n+\t};\n+\n+\t/**\n+\t * Decodes a packet. Changes format to Blob if requested.\n+\t *\n+\t * @return {Object} with `type` and `data` (if any)\n+\t * @api private\n+\t */\n+\n+\texports.decodePacket = function (data, binaryType, utf8decode) {\n+\t  if (data === undefined) {\n+\t    return err;\n+\t  }\n+\t  // String data\n+\t  if (typeof data === 'string') {\n+\t    if (data.charAt(0) === 'b') {\n+\t      return exports.decodeBase64Packet(data.substr(1), binaryType);\n+\t    }\n+\n+\t    if (utf8decode) {\n+\t      data = tryDecode(data);\n+\t      if (data === false) {\n+\t        return err;\n+\t      }\n+\t    }\n+\t    var type = data.charAt(0);\n+\n+\t    if (Number(type) != type || !packetslist[type]) {\n+\t      return err;\n+\t    }\n+\n+\t    if (data.length > 1) {\n+\t      return { type: packetslist[type], data: data.substring(1) };\n+\t    } else {\n+\t      return { type: packetslist[type] };\n+\t    }\n+\t  }\n+\n+\t  var asArray = new Uint8Array(data);\n+\t  var type = asArray[0];\n+\t  var rest = sliceBuffer(data, 1);\n+\t  if (Blob && binaryType === 'blob') {\n+\t    rest = new Blob([rest]);\n+\t  }\n+\t  return { type: packetslist[type], data: rest };\n+\t};\n+\n+\tfunction tryDecode(data) {\n+\t  try {\n+\t    data = utf8.decode(data, { strict: false });\n+\t  } catch (e) {\n+\t    return false;\n+\t  }\n+\t  return data;\n+\t}\n+\n+\t/**\n+\t * Decodes a packet encoded in a base64 string\n+\t *\n+\t * @param {String} base64 encoded message\n+\t * @return {Object} with `type` and `data` (if any)\n+\t */\n+\n+\texports.decodeBase64Packet = function(msg, binaryType) {\n+\t  var type = packetslist[msg.charAt(0)];\n+\t  if (!base64encoder) {\n+\t    return { type: type, data: { base64: true, data: msg.substr(1) } };\n+\t  }\n+\n+\t  var data = base64encoder.decode(msg.substr(1));\n+\n+\t  if (binaryType === 'blob' && Blob) {\n+\t    data = new Blob([data]);\n+\t  }\n+\n+\t  return { type: type, data: data };\n+\t};\n+\n+\t/**\n+\t * Encodes multiple messages (payload).\n+\t *\n+\t *     <length>:data\n+\t *\n+\t * Example:\n+\t *\n+\t *     11:hello world2:hi\n+\t *\n+\t * If any contents are binary, they will be encoded as base64 strings. Base64\n+\t * encoded strings are marked with a b before the length specifier\n+\t *\n+\t * @param {Array} packets\n+\t * @api private\n+\t */\n+\n+\texports.encodePayload = function (packets, supportsBinary, callback) {\n+\t  if (typeof supportsBinary === 'function') {\n+\t    callback = supportsBinary;\n+\t    supportsBinary = null;\n+\t  }\n+\n+\t  var isBinary = hasBinary(packets);\n+\n+\t  if (supportsBinary && isBinary) {\n+\t    if (Blob && !dontSendBlobs) {\n+\t      return exports.encodePayloadAsBlob(packets, callback);\n+\t    }\n+\n+\t    return exports.encodePayloadAsArrayBuffer(packets, callback);\n+\t  }\n+\n+\t  if (!packets.length) {\n+\t    return callback('0:');\n+\t  }\n+\n+\t  function setLengthHeader(message) {\n+\t    return message.length + ':' + message;\n+\t  }\n+\n+\t  function encodeOne(packet, doneCallback) {\n+\t    exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n+\t      doneCallback(null, setLengthHeader(message));\n+\t    });\n+\t  }\n+\n+\t  map(packets, encodeOne, function(err, results) {\n+\t    return callback(results.join(''));\n+\t  });\n+\t};\n+\n+\t/**\n+\t * Async array map using after\n+\t */\n+\n+\tfunction map(ary, each, done) {\n+\t  var result = new Array(ary.length);\n+\t  var next = after(ary.length, done);\n+\n+\t  var eachWithIndex = function(i, el, cb) {\n+\t    each(el, function(error, msg) {\n+\t      result[i] = msg;\n+\t      cb(error, result);\n+\t    });\n+\t  };\n+\n+\t  for (var i = 0; i < ary.length; i++) {\n+\t    eachWithIndex(i, ary[i], next);\n+\t  }\n+\t}\n+\n+\t/*\n+\t * Decodes data when a payload is maybe expected. Possible binary contents are\n+\t * decoded from their base64 representation\n+\t *\n+\t * @param {String} data, callback method\n+\t * @api public\n+\t */\n+\n+\texports.decodePayload = function (data, binaryType, callback) {\n+\t  if (typeof data !== 'string') {\n+\t    return exports.decodePayloadAsBinary(data, binaryType, callback);\n+\t  }\n+\n+\t  if (typeof binaryType === 'function') {\n+\t    callback = binaryType;\n+\t    binaryType = null;\n+\t  }\n+\n+\t  var packet;\n+\t  if (data === '') {\n+\t    // parser error - ignoring payload\n+\t    return callback(err, 0, 1);\n+\t  }\n+\n+\t  var length = '', n, msg;\n+\n+\t  for (var i = 0, l = data.length; i < l; i++) {\n+\t    var chr = data.charAt(i);\n+\n+\t    if (chr !== ':') {\n+\t      length += chr;\n+\t      continue;\n+\t    }\n+\n+\t    if (length === '' || (length != (n = Number(length)))) {\n+\t      // parser error - ignoring payload\n+\t      return callback(err, 0, 1);\n+\t    }\n+\n+\t    msg = data.substr(i + 1, n);\n+\n+\t    if (length != msg.length) {\n+\t      // parser error - ignoring payload\n+\t      return callback(err, 0, 1);\n+\t    }\n+\n+\t    if (msg.length) {\n+\t      packet = exports.decodePacket(msg, binaryType, false);\n+\n+\t      if (err.type === packet.type && err.data === packet.data) {\n+\t        // parser error in individual packet - ignoring payload\n+\t        return callback(err, 0, 1);\n+\t      }\n+\n+\t      var ret = callback(packet, i + n, l);\n+\t      if (false === ret) return;\n+\t    }\n+\n+\t    // advance cursor\n+\t    i += n;\n+\t    length = '';\n+\t  }\n+\n+\t  if (length !== '') {\n+\t    // parser error - ignoring payload\n+\t    return callback(err, 0, 1);\n+\t  }\n+\n+\t};\n+\n+\t/**\n+\t * Encodes multiple messages (payload) as binary.\n+\t *\n+\t * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number\n+\t * 255><data>\n+\t *\n+\t * Example:\n+\t * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n+\t *\n+\t * @param {Array} packets\n+\t * @return {ArrayBuffer} encoded payload\n+\t * @api private\n+\t */\n+\n+\texports.encodePayloadAsArrayBuffer = function(packets, callback) {\n+\t  if (!packets.length) {\n+\t    return callback(new ArrayBuffer(0));\n+\t  }\n+\n+\t  function encodeOne(packet, doneCallback) {\n+\t    exports.encodePacket(packet, true, true, function(data) {\n+\t      return doneCallback(null, data);\n+\t    });\n+\t  }\n+\n+\t  map(packets, encodeOne, function(err, encodedPackets) {\n+\t    var totalLength = encodedPackets.reduce(function(acc, p) {\n+\t      var len;\n+\t      if (typeof p === 'string'){\n+\t        len = p.length;\n+\t      } else {\n+\t        len = p.byteLength;\n+\t      }\n+\t      return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n+\t    }, 0);\n+\n+\t    var resultArray = new Uint8Array(totalLength);\n+\n+\t    var bufferIndex = 0;\n+\t    encodedPackets.forEach(function(p) {\n+\t      var isString = typeof p === 'string';\n+\t      var ab = p;\n+\t      if (isString) {\n+\t        var view = new Uint8Array(p.length);\n+\t        for (var i = 0; i < p.length; i++) {\n+\t          view[i] = p.charCodeAt(i);\n+\t        }\n+\t        ab = view.buffer;\n+\t      }\n+\n+\t      if (isString) { // not true binary\n+\t        resultArray[bufferIndex++] = 0;\n+\t      } else { // true binary\n+\t        resultArray[bufferIndex++] = 1;\n+\t      }\n+\n+\t      var lenStr = ab.byteLength.toString();\n+\t      for (var i = 0; i < lenStr.length; i++) {\n+\t        resultArray[bufferIndex++] = parseInt(lenStr[i]);\n+\t      }\n+\t      resultArray[bufferIndex++] = 255;\n+\n+\t      var view = new Uint8Array(ab);","path":"node-js-basics-101/node_modules/engine.io-client/engine.io.js","position":2274,"original_position":2274,"commit_id":"d6372df3f4fb68ff34e59b491ff1d6ec0ebbb29b","original_commit_id":"d6372df3f4fb68ff34e59b491ff1d6ec0ebbb29b","user":{"login":"maheshk172","id":5226009,"avatar_url":"https://avatars0.githubusercontent.com/u/5226009?v=4","gravatar_id":"","url":"https://api.github.com/users/maheshk172","html_url":"https://github.com/maheshk172","followers_url":"https://api.github.com/users/maheshk172/followers","following_url":"https://api.github.com/users/maheshk172/following{/other_user}","gists_url":"https://api.github.com/users/maheshk172/gists{/gist_id}","starred_url":"https://api.github.com/users/maheshk172/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maheshk172/subscriptions","organizations_url":"https://api.github.com/users/maheshk172/orgs","repos_url":"https://api.github.com/users/maheshk172/repos","events_url":"https://api.github.com/users/maheshk172/events{/privacy}","received_events_url":"https://api.github.com/users/maheshk172/received_events","type":"User","site_admin":false},"body":"__[jshint]__\n* 'view' is already defined.\n\n<!-- Comment by [SideCI](https://sideci.com) -->","created_at":"2017-10-23T12:04:27Z","updated_at":"2017-10-23T12:04:27Z","html_url":"https://github.com/maheshk172/Javascript_and_framework_playground/pull/2#discussion_r146243344","pull_request_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/2","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/comments/146243344"},"html":{"href":"https://github.com/maheshk172/Javascript_and_framework_playground/pull/2#discussion_r146243344"},"pull_request":{"href":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/2"}}},"pull_request":{"url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/2","id":148109658,"html_url":"https://github.com/maheshk172/Javascript_and_framework_playground/pull/2","diff_url":"https://github.com/maheshk172/Javascript_and_framework_playground/pull/2.diff","patch_url":"https://github.com/maheshk172/Javascript_and_framework_playground/pull/2.patch","issue_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/issues/2","number":2,"state":"closed","locked":false,"title":"Added some more code ","user":{"login":"maheshk172","id":5226009,"avatar_url":"https://avatars0.githubusercontent.com/u/5226009?v=4","gravatar_id":"","url":"https://api.github.com/users/maheshk172","html_url":"https://github.com/maheshk172","followers_url":"https://api.github.com/users/maheshk172/followers","following_url":"https://api.github.com/users/maheshk172/following{/other_user}","gists_url":"https://api.github.com/users/maheshk172/gists{/gist_id}","starred_url":"https://api.github.com/users/maheshk172/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maheshk172/subscriptions","organizations_url":"https://api.github.com/users/maheshk172/orgs","repos_url":"https://api.github.com/users/maheshk172/repos","events_url":"https://api.github.com/users/maheshk172/events{/privacy}","received_events_url":"https://api.github.com/users/maheshk172/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-10-23T11:53:07Z","updated_at":"2017-10-23T12:04:27Z","closed_at":"2017-10-23T11:53:25Z","merged_at":"2017-10-23T11:53:25Z","merge_commit_sha":"fcb5e54e39f6e6926f54fe6d88ddcf785407a51f","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/2/commits","review_comments_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/2/comments","review_comment_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/comments{/number}","comments_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/issues/2/comments","statuses_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/statuses/d6372df3f4fb68ff34e59b491ff1d6ec0ebbb29b","head":{"label":"maheshk172:Tesing-sideci-reviews","ref":"Tesing-sideci-reviews","sha":"d6372df3f4fb68ff34e59b491ff1d6ec0ebbb29b","user":{"login":"maheshk172","id":5226009,"avatar_url":"https://avatars0.githubusercontent.com/u/5226009?v=4","gravatar_id":"","url":"https://api.github.com/users/maheshk172","html_url":"https://github.com/maheshk172","followers_url":"https://api.github.com/users/maheshk172/followers","following_url":"https://api.github.com/users/maheshk172/following{/other_user}","gists_url":"https://api.github.com/users/maheshk172/gists{/gist_id}","starred_url":"https://api.github.com/users/maheshk172/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maheshk172/subscriptions","organizations_url":"https://api.github.com/users/maheshk172/orgs","repos_url":"https://api.github.com/users/maheshk172/repos","events_url":"https://api.github.com/users/maheshk172/events{/privacy}","received_events_url":"https://api.github.com/users/maheshk172/received_events","type":"User","site_admin":false},"repo":{"id":22849782,"name":"Javascript_and_framework_playground","full_name":"maheshk172/Javascript_and_framework_playground","owner":{"login":"maheshk172","id":5226009,"avatar_url":"https://avatars0.githubusercontent.com/u/5226009?v=4","gravatar_id":"","url":"https://api.github.com/users/maheshk172","html_url":"https://github.com/maheshk172","followers_url":"https://api.github.com/users/maheshk172/followers","following_url":"https://api.github.com/users/maheshk172/following{/other_user}","gists_url":"https://api.github.com/users/maheshk172/gists{/gist_id}","starred_url":"https://api.github.com/users/maheshk172/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maheshk172/subscriptions","organizations_url":"https://api.github.com/users/maheshk172/orgs","repos_url":"https://api.github.com/users/maheshk172/repos","events_url":"https://api.github.com/users/maheshk172/events{/privacy}","received_events_url":"https://api.github.com/users/maheshk172/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/maheshk172/Javascript_and_framework_playground","description":null,"fork":false,"url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground","forks_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/forks","keys_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/keys{/key_id}","collaborators_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/teams","hooks_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/hooks","issue_events_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/issues/events{/number}","events_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/events","assignees_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/assignees{/user}","branches_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/branches{/branch}","tags_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/tags","blobs_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/git/refs{/sha}","trees_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/git/trees{/sha}","statuses_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/statuses/{sha}","languages_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/languages","stargazers_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/stargazers","contributors_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/contributors","subscribers_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/subscribers","subscription_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/subscription","commits_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/commits{/sha}","git_commits_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/git/commits{/sha}","comments_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/comments{/number}","issue_comment_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/issues/comments{/number}","contents_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/contents/{+path}","compare_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/compare/{base}...{head}","merges_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/merges","archive_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/downloads","issues_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/issues{/number}","pulls_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls{/number}","milestones_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/milestones{/number}","notifications_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/labels{/name}","releases_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/releases{/id}","deployments_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/deployments","created_at":"2014-08-11T18:27:03Z","updated_at":"2017-10-12T05:22:00Z","pushed_at":"2017-10-23T11:53:26Z","git_url":"git://github.com/maheshk172/Javascript_and_framework_playground.git","ssh_url":"git@github.com:maheshk172/Javascript_and_framework_playground.git","clone_url":"https://github.com/maheshk172/Javascript_and_framework_playground.git","svn_url":"https://github.com/maheshk172/Javascript_and_framework_playground","homepage":null,"size":45,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"maheshk172:master","ref":"master","sha":"fc7f3cb472e52cae94372b552c6b4d550a4bf137","user":{"login":"maheshk172","id":5226009,"avatar_url":"https://avatars0.githubusercontent.com/u/5226009?v=4","gravatar_id":"","url":"https://api.github.com/users/maheshk172","html_url":"https://github.com/maheshk172","followers_url":"https://api.github.com/users/maheshk172/followers","following_url":"https://api.github.com/users/maheshk172/following{/other_user}","gists_url":"https://api.github.com/users/maheshk172/gists{/gist_id}","starred_url":"https://api.github.com/users/maheshk172/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maheshk172/subscriptions","organizations_url":"https://api.github.com/users/maheshk172/orgs","repos_url":"https://api.github.com/users/maheshk172/repos","events_url":"https://api.github.com/users/maheshk172/events{/privacy}","received_events_url":"https://api.github.com/users/maheshk172/received_events","type":"User","site_admin":false},"repo":{"id":22849782,"name":"Javascript_and_framework_playground","full_name":"maheshk172/Javascript_and_framework_playground","owner":{"login":"maheshk172","id":5226009,"avatar_url":"https://avatars0.githubusercontent.com/u/5226009?v=4","gravatar_id":"","url":"https://api.github.com/users/maheshk172","html_url":"https://github.com/maheshk172","followers_url":"https://api.github.com/users/maheshk172/followers","following_url":"https://api.github.com/users/maheshk172/following{/other_user}","gists_url":"https://api.github.com/users/maheshk172/gists{/gist_id}","starred_url":"https://api.github.com/users/maheshk172/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maheshk172/subscriptions","organizations_url":"https://api.github.com/users/maheshk172/orgs","repos_url":"https://api.github.com/users/maheshk172/repos","events_url":"https://api.github.com/users/maheshk172/events{/privacy}","received_events_url":"https://api.github.com/users/maheshk172/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/maheshk172/Javascript_and_framework_playground","description":null,"fork":false,"url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground","forks_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/forks","keys_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/keys{/key_id}","collaborators_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/teams","hooks_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/hooks","issue_events_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/issues/events{/number}","events_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/events","assignees_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/assignees{/user}","branches_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/branches{/branch}","tags_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/tags","blobs_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/git/refs{/sha}","trees_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/git/trees{/sha}","statuses_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/statuses/{sha}","languages_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/languages","stargazers_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/stargazers","contributors_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/contributors","subscribers_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/subscribers","subscription_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/subscription","commits_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/commits{/sha}","git_commits_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/git/commits{/sha}","comments_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/comments{/number}","issue_comment_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/issues/comments{/number}","contents_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/contents/{+path}","compare_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/compare/{base}...{head}","merges_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/merges","archive_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/downloads","issues_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/issues{/number}","pulls_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls{/number}","milestones_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/milestones{/number}","notifications_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/labels{/name}","releases_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/releases{/id}","deployments_url":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/deployments","created_at":"2014-08-11T18:27:03Z","updated_at":"2017-10-12T05:22:00Z","pushed_at":"2017-10-23T11:53:26Z","git_url":"git://github.com/maheshk172/Javascript_and_framework_playground.git","ssh_url":"git@github.com:maheshk172/Javascript_and_framework_playground.git","clone_url":"https://github.com/maheshk172/Javascript_and_framework_playground.git","svn_url":"https://github.com/maheshk172/Javascript_and_framework_playground","homepage":null,"size":45,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/2"},"html":{"href":"https://github.com/maheshk172/Javascript_and_framework_playground/pull/2"},"issue":{"href":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/issues/2"},"comments":{"href":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/maheshk172/Javascript_and_framework_playground/statuses/d6372df3f4fb68ff34e59b491ff1d6ec0ebbb29b"}},"author_association":"OWNER"}}
{"actor":{"display_login":"maheshk172"}}