{"version":3,"sources":["webpack:///./node_modules/@material-ui/core/TableHead/index.js","webpack:///./node_modules/@material-ui/core/TableRow/index.js","webpack:///./node_modules/@material-ui/core/TableCell/index.js","webpack:///./node_modules/@material-ui/core/TableBody/index.js","webpack:///./src/common/components/RectLoader/RectLoader.tsx","webpack:///./src/App/components/ErrorDisplay/ErrorDisplay.tsx","webpack:///./src/App/components/ErrorDisplay/ErrorDisplay.styles.ts","webpack:///./src/App/assets/error-icon.svg","webpack:///./node_modules/component-emitter/index.js","webpack:///./node_modules/engine.io-parser/lib/browser.js","webpack:///./node_modules/@material-ui/core/TableHead/TableHead.js","webpack:///./node_modules/@material-ui/core/TableRow/TableRow.js","webpack:///./node_modules/@material-ui/core/TableCell/TableCell.js","webpack:///./node_modules/@material-ui/core/TableBody/TableBody.js","webpack:///./src/Transactions/components/TransactionsTable/TransactionsTable.tsx","webpack:///./src/Transactions/components/TransactionsTable/Transactions.styles.ts","webpack:///./src/common/components/ResponsiveTable/ResponsiveTable.tsx","webpack:///./src/common/components/ResponsiveTable/ResponsiveTable.styles.ts","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/@material-ui/core/Toolbar/Toolbar.js","webpack:///./node_modules/socket.io-client/node_modules/debug/src/browser.js","webpack:///./node_modules/parseqs/index.js","webpack:///./node_modules/component-inherit/index.js","webpack:///./node_modules/engine.io-client/node_modules/debug/src/browser.js","webpack:///./node_modules/socket.io-parser/index.js","webpack:///./node_modules/engine.io-client/lib/xmlhttprequest.js","webpack:///./node_modules/engine.io-client/lib/transport.js","webpack:///./node_modules/parseuri/index.js","webpack:///./node_modules/socket.io-parser/node_modules/isarray/index.js","webpack:///./node_modules/socket.io-parser/is-buffer.js","webpack:///./node_modules/socket.io-client/lib/manager.js","webpack:///./node_modules/engine.io-client/lib/transports/index.js","webpack:///./node_modules/engine.io-client/lib/transports/polling.js","webpack:///./node_modules/has-binary2/index.js","webpack:///./node_modules/yeast/index.js","webpack:///./node_modules/indexof/index.js","webpack:///./node_modules/socket.io-client/lib/socket.js","webpack:///./node_modules/socket.io-client/lib/on.js","webpack:///./node_modules/component-bind/index.js","webpack:///./node_modules/react-animated-number/build/index.js","webpack:///./node_modules/react-animated-number/build/AnimatedNumber.js","webpack:///./node_modules/raf/index.js","webpack:///./node_modules/performance-now/lib/performance-now.js","webpack:///./node_modules/@material-ui/core/Slide/Slide.js","webpack:///./node_modules/socket.io-client/lib/index.js","webpack:///./node_modules/socket.io-client/lib/url.js","webpack:///./node_modules/socket.io-client/node_modules/debug/src/debug.js","webpack:///./node_modules/socket.io-client/node_modules/ms/index.js","webpack:///./node_modules/socket.io-parser/node_modules/debug/src/browser.js","webpack:///./node_modules/socket.io-parser/node_modules/debug/src/debug.js","webpack:///./node_modules/socket.io-parser/node_modules/ms/index.js","webpack:///./node_modules/socket.io-parser/binary.js","webpack:///./node_modules/engine.io-client/lib/index.js","webpack:///./node_modules/engine.io-client/lib/socket.js","webpack:///./node_modules/has-cors/index.js","webpack:///./node_modules/engine.io-client/lib/transports/polling-xhr.js","webpack:///./node_modules/engine.io-parser/lib/keys.js","webpack:///./node_modules/has-binary2/node_modules/isarray/index.js","webpack:///./node_modules/arraybuffer.slice/index.js","webpack:///./node_modules/after/index.js","webpack:///./node_modules/engine.io-parser/lib/utf8.js","webpack:///./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","webpack:///./node_modules/blob/index.js","webpack:///./node_modules/engine.io-client/node_modules/debug/src/debug.js","webpack:///./node_modules/engine.io-client/node_modules/ms/index.js","webpack:///./node_modules/engine.io-client/lib/transports/polling-jsonp.js","webpack:///./node_modules/engine.io-client/lib/transports/websocket.js","webpack:///./node_modules/to-array/index.js","webpack:///./node_modules/backo2/index.js","webpack:///./src/Home/components/MetaData/MetaData.tsx","webpack:///./src/Home/components/MetaData/MetaData.styles.ts","webpack:///./src/Home/components/BlockVisualizer/BlockVisualizer.styles.ts","webpack:///./src/Home/components/BlockVisualizer/VisualizedBlock.tsx","webpack:///./src/Home/components/BlockVisualizer/BlockRow.tsx","webpack:///./src/Home/components/BlockVisualizer/BlockVisualizer.tsx","webpack:///./src/Home/components/Home/Home.tsx","webpack:///./src/Home/components/Home/Home.styles.ts","webpack:///./src/Home/containers/HomePageContainer/HomePageContainer.tsx"],"names":["_interopRequireDefault","Object","defineProperty","exports","value","enumerable","get","_TableHead","default","_TableRow","_TableCell","_TableBody","render","height","maxWidth","width","style","borderRadius","preserveAspectRatio","x","y","rx","ry","classes","retry","square","elevation","props","className","main","container","justify","alignItems","spacing","item","src","alt","image","message","variant","id","buttonContainer","sm","label","onClick","fullWidth","color","component","NavLink","to","Routes","Home","getPath","breakpoints","padding","unit","textAlign","marginBottom","down","flexDirection","module","Emitter","obj","key","prototype","mixin","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","cb","callbacks","i","splice","emit","args","slice","call","len","listeners","hasListeners","base64encoder","keys","hasBinary","sliceBuffer","after","utf8","global","ArrayBuffer","isAndroid","navigator","test","userAgent","isPhantomJS","dontSendBlobs","protocol","packets","open","close","ping","pong","upgrade","noop","packetslist","err","type","data","Blob","map","ary","each","done","result","Array","next","eachWithIndex","el","error","msg","encodePacket","packet","supportsBinary","utf8encode","callback","undefined","buffer","encodeBase64Packet","contentArray","Uint8Array","resultBuffer","byteLength","encodeArrayBuffer","fr","FileReader","onload","readAsArrayBuffer","encodeBlobAsArrayBuffer","blob","encodeBlob","base64","encodeBase64Object","encoded","encode","String","strict","b64data","b64","split","readAsDataURL","fromCharCode","e","typed","basic","btoa","decodePacket","binaryType","utf8decode","charAt","decodeBase64Packet","substr","decode","tryDecode","Number","substring","rest","encodePayload","isBinary","encodePayloadAsBlob","encodePayloadAsArrayBuffer","doneCallback","setLengthHeader","results","join","decodePayload","decodePayloadAsBinary","n","l","chr","encodedPackets","totalLength","reduce","acc","p","toString","resultArray","bufferIndex","forEach","isString","ab","view","charCodeAt","lenStr","parseInt","binaryIdentifier","size","lengthAry","bufferTail","buffers","tailArray","msgLength","total","styles","_extends2","_objectWithoutProperties2","_classCallCheck2","_createClass2","_possibleConstructorReturn2","_getPrototypeOf2","_inherits2","_react","_propTypes","_classnames","_withStyles","root","display","TableHead","_React$Component","tablelvl2","_this$props","Component","other","createElement","propTypes","defaultProps","childContextTypes","object","_default","name","_defineProperty2","theme","verticalAlign","outline","backgroundColor","palette","selected","hover","head","footer","TableRow","context","_classNames","classNameProp","contextTypes","_helpers","_colorManipulator","borderBottom","concat","lighten","fade","divider","darken","paddingRight","text","secondary","fontSize","typography","pxToRem","fontWeight","fontWeightMedium","body","primary","fontWeightRegular","numeric","paddingDense","paddingCheckbox","paddingNone","TableCell","children","sortDirection","paddingProp","scopeProp","scope","table","capitalize","ariaSort","TableBody","getRow","transaction","disabledAddress","intl","language","languageLocaleForMoment","successText","formatMessage","failureText","rows","content","Transaction","hash","Block","blockNumber","timestamp","locale","fromNow","from","AddressInfo","numberStringWithComma","statusContainer","gasUsed","title","status","placement","absolute","green","red","getIvotingRow","textIvoting","renderLoading","columns","RectLoader","getColumns","block","age","tt","cols","getIvotingColumns","isIvoting","parse","window","location","search","ignoreQueryPrefix","transactions","loading","ErrorDisplay","rowsData","tableContainer","noTransaction","direction","ResponsiveTable","injectIntl","overflowX","overflow","textOverflow","position","right","top","transform","state","app","smTable","row","idx","smSection","col","columnIdx","smTitle","flex","column","cell","cellIdx","cellClass","tableLayout","paddingBottom","paddingLeft","webpackContext","req","webpackContextResolve","__webpack_require__","Error","code","resolve","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","array","nextTick","browser","env","argv","version","versions","addListener","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","gutters","mixins","regular","toolbar","dense","minHeight","Toolbar","disableGutters","load","r","storage","debug","DEBUG","log","console","Function","formatArgs","useColors","namespace","humanize","diff","c","index","lastC","replace","match","save","namespaces","removeItem","toLowerCase","document","documentElement","WebkitAppearance","firebug","exception","RegExp","$1","chrome","local","localStorage","localstorage","colors","formatters","j","v","JSON","stringify","enable","str","hasOwnProperty","encodeURIComponent","qs","qry","pairs","pair","decodeURIComponent","a","b","constructor","binary","isArray","isBuf","Encoder","types","CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK","Decoder","ERROR_PACKET","encodeAsString","attachments","nsp","payload","tryStringify","reconstructor","BinaryReconstructor","reconPack","removeBlobs","bloblessData","deconstruction","deconstructPacket","pack","unshift","encodeAsBinary","add","buf","tryParse","decodeString","takeBinaryData","destroy","finishedReconstruction","binData","reconstructPacket","hasCORS","opts","xdomain","xscheme","enablesXDR","XMLHttpRequest","XDomainRequest","parser","Transport","path","hostname","port","secure","query","timestampParam","timestampRequests","readyState","agent","socket","pfx","passphrase","cert","ca","ciphers","rejectUnauthorized","forceNode","extraHeaders","localAddress","onError","desc","description","doOpen","doClose","onClose","send","write","onOpen","writable","onData","onPacket","re","parts","indexOf","m","exec","uri","source","host","authority","ipv6uri","arr","withNativeBuffer","Buffer","isBuffer","withNativeArrayBuffer","isView","eio","Socket","bind","Backoff","has","Manager","nsps","subs","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","min","max","jitter","connecting","lastPing","encoding","packetBuffer","_parser","encoder","decoder","autoConnect","emitAll","updateSocketIds","generateId","engine","_reconnection","_reconnectionAttempts","_reconnectionDelay","setMin","_randomizationFactor","setJitter","_reconnectionDelayMax","setMax","_timeout","maybeReconnectOnOpen","reconnecting","attempts","reconnect","connect","self","skipReconnect","openSub","onopen","errorSub","cleanup","timer","onping","Date","onpong","ondata","ondecoded","onerror","onConnecting","options","processPacketQueue","shift","subsLength","disconnect","reset","onclose","reason","delay","duration","onreconnect","attempt","XHR","JSONP","websocket","polling","xd","xs","jsonp","isSSL","forceJSONP","parseqs","inherit","yeast","Polling","hasXHR2","responseType","forceBase64","poll","pause","onPause","doPoll","callbackfn","doWrite","schema","sid","withNativeBlob","withNativeFile","File","toJSON","prev","alphabet","seed","num","Math","floor","now","decoded","toArray","hasBin","events","connect_error","connect_timeout","reconnect_attempt","reconnect_failed","reconnect_error","io","json","ids","acks","receiveBuffer","sendBuffer","connected","disconnected","flags","subEvents","ev","compress","pop","onpacket","sameNamespace","rootNamespaceError","onconnect","onevent","onack","ondisconnect","ack","sent","emitBuffered","_AnimatedNumber","_AnimatedNumber2","__esModule","_extends","assign","target","_createClass","defineProperties","descriptor","configurable","Constructor","protoProps","staticProps","_react2","_propTypes2","_raf2","AnimatedNumber","_Component","instance","TypeError","_classCallCheck","_this","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","currentValue","initialValue","subClass","superClass","create","setPrototypeOf","_inherits","prepareTween","nextProps","tweenHandle","endTween","_this2","tweenValue","cancel","setState","currentTime","start","ensureSixtyFps","_props","startTime","fromValue","newValue","_props2","formatValue","frameStyle","stepPrecision","_state","adjustedValue","toFixed","ceil","currStyle","abs","filterKnownProps","sanitized","propNames","validProps","filter","any","func","number","string","vendors","suffix","raf","caf","last","_now","cp","cancelled","round","handle","polyfill","requestAnimationFrame","cancelAnimationFrame","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","hr","uptime","getTime","setTranslateValue","_getPrototypeOf3","_reactDom","_reactEventListener","_debounce","_Transition","_ownerWindow","_withTheme","_transitions","_utils","node","rect","getBoundingClientRect","fakeTransform","computedStyle","getComputedStyle","getPropertyValue","offsetX","offsetY","transformValues","left","getTranslateValue","webkitTransform","Slide","_len","_key","mounted","transition","handleResize","in","transitionRef","handleEnter","reflow","onEnter","handleEntering","transitionProps","getTransitionProps","mode","webkitTransition","transitions","easing","easeOut","onEntering","handleExit","sharp","onExit","handleExited","onExited","updatePosition","prevProps","clear","visibility","styleProp","isValidElement","onResize","appear","ref","_ref","findDOMNode","enter","enteringScreen","exit","leavingScreen","url","lookup","cache","managers","parsed","forceNew","multiplex","parseuri","loc","href","createDebug","prevTime","enabled","curr","ms","coerce","format","formatter","val","logFn","selectColor","init","instances","stack","disable","names","skips","s","h","d","plural","parseFloat","isNaN","long","fmtShort","packetData","_deconstructPacket","placeholder","_placeholder","newData","_reconstructPacket","pendingBlobs","_removeBlobs","curKey","containingObject","fileReader","transports","transportOptions","writeBuffer","prevBufferLen","policyPort","rememberUpgrade","onlyBinaryUpgrades","perMessageDeflate","threshold","freeGlobal","upgrades","pingInterval","pingTimeout","pingIntervalTimer","pingTimeoutTimer","priorWebsocketSuccess","createTransport","o","clone","EIO","transport","requestTimeout","protocols","setTransport","onDrain","probe","failed","onTransportOpen","upgradeLosesBinary","upgrading","flush","freezeTransport","onTransportClose","onupgrade","onHandshake","setPing","filterUpgrades","onHeartbeat","sendPacket","waitForUpgrade","cleanupAndClose","filteredUpgrades","empty","Request","method","async","unloadHandler","requests","abort","request","sendXhr","pollXhr","xhr","setDisableHeaderCheck","setRequestHeader","withCredentials","hasXDR","onLoad","responseText","onreadystatechange","contentType","getResponseHeader","requestsCount","onSuccess","fromError","response","attachEvent","arraybuffer","end","bytes","abv","ii","count","err_cb","bail","proxy","freeExports","byteArray","byteCount","byteIndex","stringFromCharCode","ucs2decode","extra","output","counter","checkScalarValue","codePoint","toUpperCase","createByte","encodeCodePoint","symbol","readContinuationByte","continuationByte","decodeSymbol","byte1","codePoints","byteString","tmp","ucs2encode","chars","encoded1","encoded2","encoded3","encoded4","bufferLength","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","blobSupported","blobSupportsArrayBufferView","blobBuilderSupported","append","getBlob","mapArrayBufferViews","chunk","copy","set","byteOffset","BlobBuilderConstructor","bb","BlobConstructor","JSONPPolling","rNewline","rEscapedNewline","___eio","script","parentNode","removeChild","form","iframe","insertAt","getElementsByTagName","insertBefore","appendChild","area","iframeId","setAttribute","complete","initIframe","html","action","submit","NodeWebSocket","BrowserWebSocket","WebSocket","MozWebSocket","WS","usingBrowserWebSocket","check","headers","ws","supports","addEventListeners","onmessage","list","factor","pow","rand","random","deviation","timeSince","resetTimer","interval","clearInterval","setInterval","formatBlockTime","blockTime","componentDidUpdate","infoContainer","infoSection","SearchContainer","searchContainer","section","zIndex","background","marginRight","justifyContent","margin","easeInOut","standard","blockRow","slide","alpha","totalRows","offset","_","WidthSize","SpacingSize","div","createRef","updateRows","rowsToShow","current","clientHeight","blockSize","renderRows","blockNum","resizer","getDerivedStateFromProps","componentWillUnmount","home","visualizerContainer","metaContainer","titleContainer","button","xsDown","TransactionsTable","smUp","bottom","marginTop","up","minWidth","maxHeight","getLatestTransactions","subscription","transactionActions","limit","observable","subscribe","componentDidMount","SOCKET_URL","prevState","unsubscribe","dispatch"],"mappings":"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CR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ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","file":"static/js/HomePage.2f687d8d.chunk.js","sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _TableHead.default;\n }\n});\n\nvar _TableHead = _interopRequireDefault(require(\"./TableHead\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _TableRow.default;\n }\n});\n\nvar _TableRow = _interopRequireDefault(require(\"./TableRow\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _TableCell.default;\n }\n});\n\nvar _TableCell = _interopRequireDefault(require(\"./TableCell\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _TableBody.default;\n }\n});\n\nvar _TableBody = _interopRequireDefault(require(\"./TableBody\"));","import React, { PureComponent } from 'react'\nimport Loader from 'react-content-loader'\n\nexport interface IReactLoaderProps {\n height: number\n width?: string | number\n maxWidth?: string | number\n}\n\nclass RectLoader extends PureComponent<IReactLoaderProps> {\n render() {\n const { height, maxWidth, width } = this.props\n return (\n <Loader\n height={height}\n width={100}\n style={{\n borderRadius: 5,\n height,\n maxWidth,\n width: width || '100%'\n }}\n preserveAspectRatio=\"none\"\n >\n <rect x=\"0\" y=\"0\" rx=\"0\" ry=\"0\" width=\"100\" height={height} />\n </Loader>\n )\n }\n}\n\nexport default RectLoader\n","import * as React from 'react'\nimport Paper from '@material-ui/core/Paper/Paper'\nimport ErrorIcon from 'App/assets/error-icon.svg'\nimport { HTMLAttributes } from 'react'\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles'\nimport styles from './ErrorDisplay.styles'\nimport Grid from '@material-ui/core/Grid/Grid'\nimport Typography from '@material-ui/core/Typography/Typography'\nimport { Routes } from 'App/constants/Routes'\nimport { ButtonWithTracking } from 'tracking/components'\nimport { NavLink } from 'react-router-dom'\nimport { FormattedMessage } from 'react-intl'\n\ninterface IErrorDisplay extends HTMLAttributes<HTMLDivElement>, WithStyles {\n retry?(): any\n}\n\nclass ErrorDisplay extends React.PureComponent<IErrorDisplay> {\n render() {\n const { classes, retry, ...props } = this.props\n return (\n <Paper square={true} elevation={0} {...props} className={classes.main}>\n <Grid\n container={true}\n justify=\"center\"\n alignItems=\"flex-start\"\n spacing={8}\n >\n <Grid item>\n <img src={ErrorIcon} alt=\"\" className={classes.image} />\n </Grid>\n <Grid item>\n <div className={classes.message}>\n <Typography variant=\"title\">\n <FormattedMessage id=\"App.components.ErrorDisplay.oops\" />\n </Typography>\n <Typography variant=\"subheading\">\n <FormattedMessage id=\"App.components.ErrorDisplay.pleaseRetry\" />\n </Typography>\n </div>\n <Grid\n container={true}\n spacing={8}\n className={classes.buttonContainer}\n >\n {retry && (\n <Grid item sm={6}>\n <ButtonWithTracking\n label=\"Retry Error\"\n onClick={retry}\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n id=\"Retry\"\n >\n <FormattedMessage id=\"App.components.ErrorDisplay.retry\" />\n </ButtonWithTracking>\n </Grid>\n )}\n <Grid item sm={6}>\n <ButtonWithTracking\n component={NavLink}\n fullWidth\n label=\"Go Home\"\n variant=\"contained\"\n id=\"Go-Home\"\n to={Routes.Home.getPath()}\n >\n <FormattedMessage id=\"App.components.ErrorDisplay.goHome\" />\n </ButtonWithTracking>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n </Paper>\n )\n }\n}\n\nexport const Unconnected = ErrorDisplay\n\nexport default withStyles(styles)(ErrorDisplay)\n","import createStyles from '@material-ui/core/styles/createStyles'\nimport { Theme } from '@material-ui/core'\nimport { padding } from 'common/utils/styles'\n\nexport default ({ spacing, breakpoints }: Theme) =>\n createStyles({\n main: {\n padding: spacing.unit * 8\n },\n image: {\n maxWidth: '100%'\n },\n message: {\n textAlign: 'left',\n marginBottom: spacing.unit * 2\n },\n [breakpoints.down('xs')]: {\n main: {\n padding: padding(spacing.unit * 4, spacing.unit * 2)\n },\n message: {\n textAlign: 'center'\n },\n buttonContainer: {\n flexDirection: 'column'\n }\n }\n })\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTIiIGhlaWdodD0iODEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNTYuNTk2IDMzLjMxN2wtMS45OTItMS45OTJhMS4yMiAxLjIyIDAgMDEtLjAwNy0xLjczIDEuMjE1IDEuMjE1IDAgMDExLjczLjAwNmwxLjk5MyAxLjk5MyAxLjk5Mi0xLjk5M2ExLjIyIDEuMjIgMCAwMTEuNzMtLjAwNyAxLjIxNSAxLjIxNSAwIDAxLS4wMDYgMS43MzFsLTEuOTkyIDEuOTkyIDEuOTkyIDEuOTkzYy40OC40OC40ODYgMS4yNS4wMDcgMS43M2ExLjIxNSAxLjIxNSAwIDAxLTEuNzMtLjAwN2wtMS45OTMtMS45OTItMS45OTIgMS45OTJhMS4yMiAxLjIyIDAgMDEtMS43My4wMDcgMS4yMTUgMS4yMTUgMCAwMS4wMDYtMS43M2wxLjk5Mi0xLjk5M3ptLTM1LjY0IDBsLTEuOTkyLTEuOTkyYTEuMjIgMS4yMiAwIDAxLS4wMDctMS43MyAxLjIxNSAxLjIxNSAwIDAxMS43My4wMDZsMS45OTMgMS45OTMgMS45OTItMS45OTNhMS4yMiAxLjIyIDAgMDExLjczLS4wMDcgMS4yMTUgMS4yMTUgMCAwMS0uMDA2IDEuNzMxbC0xLjk5MiAxLjk5MiAxLjk5MiAxLjk5M2MuNDguNDguNDg2IDEuMjUuMDA3IDEuNzNhMS4yMTUgMS4yMTUgMCAwMS0xLjczLS4wMDdsLTEuOTkzLTEuOTkyLTEuOTkyIDEuOTkyYTEuMjIgMS4yMiAwIDAxLTEuNzMuMDA3IDEuMjE1IDEuMjE1IDAgMDEuMDA2LTEuNzNsMS45OTItMS45OTN6TTc4LjU3IDQ2LjMyYzAtLjY3My41NDQtMS4yMTkgMS4yMTUtMS4yMTlTODEgNDUuNjQ2IDgxIDQ2LjMydjIxLjkzOGMwIDIuNjkzLTIuMTc4IDQuODc4LTQuODYxIDQuODc4SDQ5LjM0NWwxLjcxOS0uNzE0LTcuMTI3IDcuMTVhNC44NDkgNC44NDkgMCAwMS02Ljg3NCAwbC03LjEyNy03LjE1IDEuNzE5LjcxNEg0Ljg2QzIuMTc2IDczLjEzNiAwIDcwLjk1IDAgNjguMjU4VjQuODc4QzAgMi4xODMgMi4xNzggMCA0Ljg2MSAwSDc2LjE0Qzc4LjgyNCAwIDgxIDIuMTg0IDgxIDQuODc3djYuNWMwIC42NzMtLjU0NCAxLjIxOS0xLjIxNSAxLjIxOWExLjIxNyAxLjIxNyAwIDAxLTEuMjE1LTEuMjJWNC44NzhhMi40MzYgMi40MzYgMCAwMC0yLjQzMS0yLjQ0SDQuODZhMi40MzcgMi40MzcgMCAwMC0yLjQzMSAyLjQ0djYzLjM4MWEyLjQzNiAyLjQzNiAwIDAwMi40MzEgMi40NGgyNi43OTRsNy4xMjYgNy4xNWMuOTUuOTUzIDIuNDg4Ljk1MiAzLjQzOCAwbDcuMTI2LTcuMTVINzYuMTRhMi40MzcgMi40MzcgMCAwMDIuNDMxLTIuNDRWNDYuMzJ6bS00OS44MTUgNC44NzZjMC0uNjczLjU0Ni0xLjIxOSAxLjIxMy0xLjIxOWgyMS4wNjRjLjY3IDAgMS4yMTMuNTQxIDEuMjEzIDEuMjE5IDAgLjY3My0uNTQ2IDEuMjE5LTEuMjEzIDEuMjE5SDI5Ljk2OGMtLjY3IDAtMS4yMTMtLjU0MS0xLjIxMy0xLjIyeiIgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJub256ZXJvIi8+PHBhdGggZD0iTTgzIDQyYzQuMDY3IDAgOS0xLjY5IDktOS4xNDVDOTIgMjUuMzk5IDgzLjgxOCAxNSA4MyAxNWMtLjgxOCAwLTkgMTAuMzk5LTkgMTcuODU1Qzc0IDQwLjMxIDc4LjkzMyA0MiA4MyA0MnoiIGZpbGw9IiNFOEQxMDAiLz48L2c+PC9zdmc+\"","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","/**\n * Module dependencies.\n */\n\nvar keys = require('./keys');\nvar hasBinary = require('has-binary2');\nvar sliceBuffer = require('arraybuffer.slice');\nvar after = require('after');\nvar utf8 = require('./utf8');\n\nvar base64encoder;\nif (global && global.ArrayBuffer) {\n base64encoder = require('base64-arraybuffer');\n}\n\n/**\n * Check if we are running an android browser. That requires us to use\n * ArrayBuffer with polling transports...\n *\n * http://ghinda.net/jpeg-blob-ajax-android/\n */\n\nvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\n/**\n * Check if we are running in PhantomJS.\n * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n * https://github.com/ariya/phantomjs/issues/11395\n * @type boolean\n */\nvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\n/**\n * When true, avoids using Blobs to encode payloads.\n * @type boolean\n */\nvar dontSendBlobs = isAndroid || isPhantomJS;\n\n/**\n * Current protocol version.\n */\n\nexports.protocol = 3;\n\n/**\n * Packet types.\n */\n\nvar packets = exports.packets = {\n open: 0 // non-ws\n , close: 1 // non-ws\n , ping: 2\n , pong: 3\n , message: 4\n , upgrade: 5\n , noop: 6\n};\n\nvar packetslist = keys(packets);\n\n/**\n * Premade error packet.\n */\n\nvar err = { type: 'error', data: 'parser error' };\n\n/**\n * Create a blob api even for blob builder when vendor prefixes exist\n */\n\nvar Blob = require('blob');\n\n/**\n * Encodes a packet.\n *\n * <packet type id> [ <data> ]\n *\n * Example:\n *\n * 5hello world\n * 3\n * 4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\n\nexports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = false;\n }\n\n if (typeof utf8encode === 'function') {\n callback = utf8encode;\n utf8encode = null;\n }\n\n var data = (packet.data === undefined)\n ? undefined\n : packet.data.buffer || packet.data;\n\n if (global.ArrayBuffer && data instanceof ArrayBuffer) {\n return encodeArrayBuffer(packet, supportsBinary, callback);\n } else if (Blob && data instanceof global.Blob) {\n return encodeBlob(packet, supportsBinary, callback);\n }\n\n // might be an object with { base64: true, data: dataAsBase64String }\n if (data && data.base64) {\n return encodeBase64Object(packet, callback);\n }\n\n // Sending data as a utf-8 string\n var encoded = packets[packet.type];\n\n // data fragment is optional\n if (undefined !== packet.data) {\n encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n }\n\n return callback('' + encoded);\n\n};\n\nfunction encodeBase64Object(packet, callback) {\n // packet data is an object { base64: true, data: dataAsBase64String }\n var message = 'b' + exports.packets[packet.type] + packet.data.data;\n return callback(message);\n}\n\n/**\n * Encode packet helpers for binary types\n */\n\nfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var data = packet.data;\n var contentArray = new Uint8Array(data);\n var resultBuffer = new Uint8Array(1 + data.byteLength);\n\n resultBuffer[0] = packets[packet.type];\n for (var i = 0; i < contentArray.length; i++) {\n resultBuffer[i+1] = contentArray[i];\n }\n\n return callback(resultBuffer.buffer);\n}\n\nfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var fr = new FileReader();\n fr.onload = function() {\n packet.data = fr.result;\n exports.encodePacket(packet, supportsBinary, true, callback);\n };\n return fr.readAsArrayBuffer(packet.data);\n}\n\nfunction encodeBlob(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n if (dontSendBlobs) {\n return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n }\n\n var length = new Uint8Array(1);\n length[0] = packets[packet.type];\n var blob = new Blob([length.buffer, packet.data]);\n\n return callback(blob);\n}\n\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\n\nexports.encodeBase64Packet = function(packet, callback) {\n var message = 'b' + exports.packets[packet.type];\n if (Blob && packet.data instanceof global.Blob) {\n var fr = new FileReader();\n fr.onload = function() {\n var b64 = fr.result.split(',')[1];\n callback(message + b64);\n };\n return fr.readAsDataURL(packet.data);\n }\n\n var b64data;\n try {\n b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n } catch (e) {\n // iPhone Safari doesn't let you apply with typed arrays\n var typed = new Uint8Array(packet.data);\n var basic = new Array(typed.length);\n for (var i = 0; i < typed.length; i++) {\n basic[i] = typed[i];\n }\n b64data = String.fromCharCode.apply(null, basic);\n }\n message += global.btoa(b64data);\n return callback(message);\n};\n\n/**\n * Decodes a packet. Changes format to Blob if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\n\nexports.decodePacket = function (data, binaryType, utf8decode) {\n if (data === undefined) {\n return err;\n }\n // String data\n if (typeof data === 'string') {\n if (data.charAt(0) === 'b') {\n return exports.decodeBase64Packet(data.substr(1), binaryType);\n }\n\n if (utf8decode) {\n data = tryDecode(data);\n if (data === false) {\n return err;\n }\n }\n var type = data.charAt(0);\n\n if (Number(type) != type || !packetslist[type]) {\n return err;\n }\n\n if (data.length > 1) {\n return { type: packetslist[type], data: data.substring(1) };\n } else {\n return { type: packetslist[type] };\n }\n }\n\n var asArray = new Uint8Array(data);\n var type = asArray[0];\n var rest = sliceBuffer(data, 1);\n if (Blob && binaryType === 'blob') {\n rest = new Blob([rest]);\n }\n return { type: packetslist[type], data: rest };\n};\n\nfunction tryDecode(data) {\n try {\n data = utf8.decode(data, { strict: false });\n } catch (e) {\n return false;\n }\n return data;\n}\n\n/**\n * Decodes a packet encoded in a base64 string\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\n\nexports.decodeBase64Packet = function(msg, binaryType) {\n var type = packetslist[msg.charAt(0)];\n if (!base64encoder) {\n return { type: type, data: { base64: true, data: msg.substr(1) } };\n }\n\n var data = base64encoder.decode(msg.substr(1));\n\n if (binaryType === 'blob' && Blob) {\n data = new Blob([data]);\n }\n\n return { type: type, data: data };\n};\n\n/**\n * Encodes multiple messages (payload).\n *\n * <length>:data\n *\n * Example:\n *\n * 11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\n\nexports.encodePayload = function (packets, supportsBinary, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = null;\n }\n\n var isBinary = hasBinary(packets);\n\n if (supportsBinary && isBinary) {\n if (Blob && !dontSendBlobs) {\n return exports.encodePayloadAsBlob(packets, callback);\n }\n\n return exports.encodePayloadAsArrayBuffer(packets, callback);\n }\n\n if (!packets.length) {\n return callback('0:');\n }\n\n function setLengthHeader(message) {\n return message.length + ':' + message;\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n doneCallback(null, setLengthHeader(message));\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(results.join(''));\n });\n};\n\n/**\n * Async array map using after\n */\n\nfunction map(ary, each, done) {\n var result = new Array(ary.length);\n var next = after(ary.length, done);\n\n var eachWithIndex = function(i, el, cb) {\n each(el, function(error, msg) {\n result[i] = msg;\n cb(error, result);\n });\n };\n\n for (var i = 0; i < ary.length; i++) {\n eachWithIndex(i, ary[i], next);\n }\n}\n\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\n\nexports.decodePayload = function (data, binaryType, callback) {\n if (typeof data !== 'string') {\n return exports.decodePayloadAsBinary(data, binaryType, callback);\n }\n\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var packet;\n if (data === '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n var length = '', n, msg;\n\n for (var i = 0, l = data.length; i < l; i++) {\n var chr = data.charAt(i);\n\n if (chr !== ':') {\n length += chr;\n continue;\n }\n\n if (length === '' || (length != (n = Number(length)))) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n msg = data.substr(i + 1, n);\n\n if (length != msg.length) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n if (msg.length) {\n packet = exports.decodePacket(msg, binaryType, false);\n\n if (err.type === packet.type && err.data === packet.data) {\n // parser error in individual packet - ignoring payload\n return callback(err, 0, 1);\n }\n\n var ret = callback(packet, i + n, l);\n if (false === ret) return;\n }\n\n // advance cursor\n i += n;\n length = '';\n }\n\n if (length !== '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n};\n\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number\n * 255><data>\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {ArrayBuffer} encoded payload\n * @api private\n */\n\nexports.encodePayloadAsArrayBuffer = function(packets, callback) {\n if (!packets.length) {\n return callback(new ArrayBuffer(0));\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(data) {\n return doneCallback(null, data);\n });\n }\n\n map(packets, encodeOne, function(err, encodedPackets) {\n var totalLength = encodedPackets.reduce(function(acc, p) {\n var len;\n if (typeof p === 'string'){\n len = p.length;\n } else {\n len = p.byteLength;\n }\n return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n }, 0);\n\n var resultArray = new Uint8Array(totalLength);\n\n var bufferIndex = 0;\n encodedPackets.forEach(function(p) {\n var isString = typeof p === 'string';\n var ab = p;\n if (isString) {\n var view = new Uint8Array(p.length);\n for (var i = 0; i < p.length; i++) {\n view[i] = p.charCodeAt(i);\n }\n ab = view.buffer;\n }\n\n if (isString) { // not true binary\n resultArray[bufferIndex++] = 0;\n } else { // true binary\n resultArray[bufferIndex++] = 1;\n }\n\n var lenStr = ab.byteLength.toString();\n for (var i = 0; i < lenStr.length; i++) {\n resultArray[bufferIndex++] = parseInt(lenStr[i]);\n }\n resultArray[bufferIndex++] = 255;\n\n var view = new Uint8Array(ab);\n for (var i = 0; i < view.length; i++) {\n resultArray[bufferIndex++] = view[i];\n }\n });\n\n return callback(resultArray.buffer);\n });\n};\n\n/**\n * Encode as Blob\n */\n\nexports.encodePayloadAsBlob = function(packets, callback) {\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(encoded) {\n var binaryIdentifier = new Uint8Array(1);\n binaryIdentifier[0] = 1;\n if (typeof encoded === 'string') {\n var view = new Uint8Array(encoded.length);\n for (var i = 0; i < encoded.length; i++) {\n view[i] = encoded.charCodeAt(i);\n }\n encoded = view.buffer;\n binaryIdentifier[0] = 0;\n }\n\n var len = (encoded instanceof ArrayBuffer)\n ? encoded.byteLength\n : encoded.size;\n\n var lenStr = len.toString();\n var lengthAry = new Uint8Array(lenStr.length + 1);\n for (var i = 0; i < lenStr.length; i++) {\n lengthAry[i] = parseInt(lenStr[i]);\n }\n lengthAry[lenStr.length] = 255;\n\n if (Blob) {\n var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n doneCallback(null, blob);\n }\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(new Blob(results));\n });\n};\n\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n *\n * @param {ArrayBuffer} data, callback method\n * @api public\n */\n\nexports.decodePayloadAsBinary = function (data, binaryType, callback) {\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var bufferTail = data;\n var buffers = [];\n\n while (bufferTail.byteLength > 0) {\n var tailArray = new Uint8Array(bufferTail);\n var isString = tailArray[0] === 0;\n var msgLength = '';\n\n for (var i = 1; ; i++) {\n if (tailArray[i] === 255) break;\n\n // 310 = char length of Number.MAX_VALUE\n if (msgLength.length > 310) {\n return callback(err, 0, 1);\n }\n\n msgLength += tailArray[i];\n }\n\n bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n msgLength = parseInt(msgLength);\n\n var msg = sliceBuffer(bufferTail, 0, msgLength);\n if (isString) {\n try {\n msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n } catch (e) {\n // iPhone Safari doesn't let you apply to typed arrays\n var typed = new Uint8Array(msg);\n msg = '';\n for (var i = 0; i < typed.length; i++) {\n msg += String.fromCharCode(typed[i]);\n }\n }\n }\n\n buffers.push(msg);\n bufferTail = sliceBuffer(bufferTail, msgLength);\n }\n\n var total = buffers.length;\n buffers.forEach(function(buffer, i) {\n callback(exports.decodePacket(buffer, binaryType, true), i, total);\n });\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _withStyles = _interopRequireDefault(require(\"../styles/withStyles\"));\n\nvar styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'table-header-group'\n }\n};\nexports.styles = styles;\n\nvar TableHead =\n/*#__PURE__*/\nfunction (_React$Component) {\n (0, _inherits2.default)(TableHead, _React$Component);\n\n function TableHead() {\n (0, _classCallCheck2.default)(this, TableHead);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(TableHead).apply(this, arguments));\n }\n\n (0, _createClass2.default)(TableHead, [{\n key: \"getChildContext\",\n value: function getChildContext() {\n // eslint-disable-line class-methods-use-this\n return {\n tablelvl2: {\n variant: 'head'\n }\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n classes = _this$props.classes,\n className = _this$props.className,\n Component = _this$props.component,\n other = (0, _objectWithoutProperties2.default)(_this$props, [\"classes\", \"className\", \"component\"]);\n return _react.default.createElement(Component, (0, _extends2.default)({\n className: (0, _classnames.default)(classes.root, className)\n }, other));\n }\n }]);\n return TableHead;\n}(_react.default.Component);\n\nTableHead.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * The content of the component, normally `TableRow`.\n */\n children: _propTypes.default.node.isRequired,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css-api) below for more details.\n */\n classes: _propTypes.default.object.isRequired,\n\n /**\n * @ignore\n */\n className: _propTypes.default.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func, _propTypes.default.object])\n} : {};\nTableHead.defaultProps = {\n component: 'thead'\n};\nTableHead.childContextTypes = {\n tablelvl2: _propTypes.default.object\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n name: 'MuiTableHead'\n})(TableHead);\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _withStyles = _interopRequireDefault(require(\"../styles/withStyles\"));\n\nvar styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n color: 'inherit',\n display: 'table-row',\n height: 48,\n verticalAlign: 'middle',\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 'none',\n '&$selected': {\n backgroundColor: theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.04)' // grey[100]\n : 'rgba(255, 255, 255, 0.08)'\n },\n '&$hover:hover': {\n backgroundColor: theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.07)' // grey[200]\n : 'rgba(255, 255, 255, 0.14)'\n }\n },\n\n /* Styles applied to the root element if `selected={true}`. */\n selected: {},\n\n /* Styles applied to the root element if `hover={true}`. */\n hover: {},\n\n /* Styles applied to the root element if table variant = 'head'. */\n head: {\n height: 56\n },\n\n /* Styles applied to the root element if table variant = 'footer'. */\n footer: {\n height: 56\n }\n };\n};\n/**\n * Will automatically set dynamic row height\n * based on the material table element parent (head, body, etc).\n */\n\n\nexports.styles = styles;\n\nfunction TableRow(props, context) {\n var _classNames;\n\n var classes = props.classes,\n classNameProp = props.className,\n Component = props.component,\n hover = props.hover,\n selected = props.selected,\n other = (0, _objectWithoutProperties2.default)(props, [\"classes\", \"className\", \"component\", \"hover\", \"selected\"]);\n var tablelvl2 = context.tablelvl2;\n var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.head, tablelvl2 && tablelvl2.variant === 'head'), (0, _defineProperty2.default)(_classNames, classes.footer, tablelvl2 && tablelvl2.variant === 'footer'), (0, _defineProperty2.default)(_classNames, classes.hover, hover), (0, _defineProperty2.default)(_classNames, classes.selected, selected), _classNames), classNameProp);\n return _react.default.createElement(Component, (0, _extends2.default)({\n className: className\n }, other));\n}\n\nTableRow.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Should be valid <tr> children such as `TableCell`.\n */\n children: _propTypes.default.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css-api) below for more details.\n */\n classes: _propTypes.default.object.isRequired,\n\n /**\n * @ignore\n */\n className: _propTypes.default.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func, _propTypes.default.object]),\n\n /**\n * If `true`, the table row will shade on hover.\n */\n hover: _propTypes.default.bool,\n\n /**\n * If `true`, the table row will have the selected shading.\n */\n selected: _propTypes.default.bool\n} : {};\nTableRow.defaultProps = {\n component: 'tr',\n hover: false,\n selected: false\n};\nTableRow.contextTypes = {\n tablelvl2: _propTypes.default.object\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n name: 'MuiTableRow'\n})(TableRow);\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _withStyles = _interopRequireDefault(require(\"../styles/withStyles\"));\n\nvar _helpers = require(\"../utils/helpers\");\n\nvar _colorManipulator = require(\"../styles/colorManipulator\");\n\nvar styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'table-cell',\n verticalAlign: 'inherit',\n // Workaround for a rendering bug with spanned columns in Chrome 62.0.\n // Removes the alpha (sets it to 1), and lightens or darkens the theme color.\n borderBottom: \"1px solid\\n \".concat(theme.palette.type === 'light' ? (0, _colorManipulator.lighten)((0, _colorManipulator.fade)(theme.palette.divider, 1), 0.88) : (0, _colorManipulator.darken)((0, _colorManipulator.fade)(theme.palette.divider, 1), 0.8)),\n textAlign: 'left',\n padding: '4px 56px 4px 24px',\n '&:last-child': {\n paddingRight: 24\n }\n },\n\n /* Styles applied to the root element if `variant=\"head\"` or `context.table.head`. */\n head: {\n color: theme.palette.text.secondary,\n fontSize: theme.typography.pxToRem(12),\n fontWeight: theme.typography.fontWeightMedium\n },\n\n /* Styles applied to the root element if `variant=\"body\"` or `context.table.body`. */\n body: {\n color: theme.palette.text.primary,\n fontSize: theme.typography.pxToRem(13),\n fontWeight: theme.typography.fontWeightRegular\n },\n\n /* Styles applied to the root element if `variant=\"footer\"` or `context.table.footer`. */\n footer: {\n borderBottom: 0,\n color: theme.palette.text.secondary,\n fontSize: theme.typography.pxToRem(12)\n },\n\n /* Styles applied to the root element if `numeric={true}`. */\n numeric: {\n textAlign: 'right',\n flexDirection: 'row-reverse' // can be dynamically inherited at runtime by contents\n\n },\n\n /* Styles applied to the root element if `padding=\"dense\"`. */\n paddingDense: {\n paddingRight: 24\n },\n\n /* Styles applied to the root element if `padding=\"checkbox\"`. */\n paddingCheckbox: {\n padding: '0 12px',\n '&:last-child': {\n paddingRight: 12\n }\n },\n\n /* Styles applied to the root element if `padding=\"none\"`. */\n paddingNone: {\n padding: 0,\n '&:last-child': {\n padding: 0\n }\n }\n };\n};\n\nexports.styles = styles;\n\nfunction TableCell(props, context) {\n var _classNames;\n\n var children = props.children,\n classes = props.classes,\n classNameProp = props.className,\n component = props.component,\n sortDirection = props.sortDirection,\n numeric = props.numeric,\n paddingProp = props.padding,\n scopeProp = props.scope,\n variant = props.variant,\n other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\", \"component\", \"sortDirection\", \"numeric\", \"padding\", \"scope\", \"variant\"]);\n var table = context.table,\n tablelvl2 = context.tablelvl2;\n var Component;\n\n if (component) {\n Component = component;\n } else {\n Component = tablelvl2 && tablelvl2.variant === 'head' ? 'th' : 'td';\n }\n\n var scope = scopeProp;\n\n if (!scope && tablelvl2 && tablelvl2.variant === 'head') {\n scope = 'col';\n }\n\n var padding = paddingProp || (table && table.padding ? table.padding : 'default');\n var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.head, variant ? variant === 'head' : tablelvl2 && tablelvl2.variant === 'head'), (0, _defineProperty2.default)(_classNames, classes.body, variant ? variant === 'body' : tablelvl2 && tablelvl2.variant === 'body'), (0, _defineProperty2.default)(_classNames, classes.footer, variant ? variant === 'footer' : tablelvl2 && tablelvl2.variant === 'footer'), (0, _defineProperty2.default)(_classNames, classes.numeric, numeric), (0, _defineProperty2.default)(_classNames, classes[\"padding\".concat((0, _helpers.capitalize)(padding))], padding !== 'default'), _classNames), classNameProp);\n var ariaSort = null;\n\n if (sortDirection) {\n ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n }\n\n return _react.default.createElement(Component, (0, _extends2.default)({\n className: className,\n \"aria-sort\": ariaSort,\n scope: scope\n }, other), children);\n}\n\nTableCell.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * The table cell contents.\n */\n children: _propTypes.default.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css-api) below for more details.\n */\n classes: _propTypes.default.object.isRequired,\n\n /**\n * @ignore\n */\n className: _propTypes.default.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func, _propTypes.default.object]),\n\n /**\n * If `true`, content will align to the right.\n */\n numeric: _propTypes.default.bool,\n\n /**\n * Sets the padding applied to the cell.\n * By default, the Table parent component set the value.\n */\n padding: _propTypes.default.oneOf(['default', 'checkbox', 'dense', 'none']),\n\n /**\n * Set scope attribute.\n */\n scope: _propTypes.default.string,\n\n /**\n * Set aria-sort direction.\n */\n sortDirection: _propTypes.default.oneOf(['asc', 'desc', false]),\n\n /**\n * Specify the cell type.\n * By default, the TableHead, TableBody or TableFooter parent component set the value.\n */\n variant: _propTypes.default.oneOf(['head', 'body', 'footer'])\n} : {};\nTableCell.defaultProps = {\n numeric: false\n};\nTableCell.contextTypes = {\n table: _propTypes.default.object,\n tablelvl2: _propTypes.default.object\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n name: 'MuiTableCell'\n})(TableCell);\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _withStyles = _interopRequireDefault(require(\"../styles/withStyles\"));\n\nvar styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'table-row-group'\n }\n};\nexports.styles = styles;\n\nvar TableBody =\n/*#__PURE__*/\nfunction (_React$Component) {\n (0, _inherits2.default)(TableBody, _React$Component);\n\n function TableBody() {\n (0, _classCallCheck2.default)(this, TableBody);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(TableBody).apply(this, arguments));\n }\n\n (0, _createClass2.default)(TableBody, [{\n key: \"getChildContext\",\n value: function getChildContext() {\n // eslint-disable-line class-methods-use-this\n return {\n tablelvl2: {\n variant: 'body'\n }\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n classes = _this$props.classes,\n className = _this$props.className,\n Component = _this$props.component,\n other = (0, _objectWithoutProperties2.default)(_this$props, [\"classes\", \"className\", \"component\"]);\n return _react.default.createElement(Component, (0, _extends2.default)({\n className: (0, _classnames.default)(classes.root, className)\n }, other));\n }\n }]);\n return TableBody;\n}(_react.default.Component);\n\nTableBody.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * The content of the component, normally `TableRow`.\n */\n children: _propTypes.default.node.isRequired,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css-api) below for more details.\n */\n classes: _propTypes.default.object.isRequired,\n\n /**\n * @ignore\n */\n className: _propTypes.default.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a DOM element or a component.\n */\n component: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func, _propTypes.default.object])\n} : {};\nTableBody.defaultProps = {\n component: 'tbody'\n};\nTableBody.childContextTypes = {\n tablelvl2: _propTypes.default.object\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n name: 'MuiTableBody'\n})(TableBody);\n\nexports.default = _default;","import React, { PureComponent } from 'react'\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles'\nimport styles from './Transactions.styles'\nimport { List } from 'immutable'\nimport { Routes } from 'App/constants/Routes'\nimport { TransactionRecord } from 'Transactions/types/transactions'\nimport moment from 'moment'\nimport cn from 'classnames'\n//@ts-ignore\nimport { fromWei } from 'web3-utils'\nimport Tooltip from '@material-ui/core/Tooltip/Tooltip'\nimport { NavLinkWithTracking } from 'tracking/components'\nimport { numberStringWithComma } from 'App/utils/numberStringWithComma'\nimport ResponsiveTable from 'common/components/ResponsiveTable/ResponsiveTable'\nimport ErrorDisplay from 'App/components/ErrorDisplay/ErrorDisplay'\nimport RectLoader from 'common/components/RectLoader/RectLoader'\nimport { Grid } from '@material-ui/core'\nimport Typography from '@material-ui/core/Typography'\nimport NoResultIcon from 'App/assets/no-result.svg'\nimport Paper from '@material-ui/core/Paper'\nimport { compose } from 'recompose'\nimport { WrappedComponentProps, injectIntl, FormattedMessage } from 'react-intl'\nimport { IGlobalState } from 'configuration/reducers'\nimport { connect } from 'react-redux'\nimport { languageLocaleForMomentSwitcher } from 'src/i18n/getLocale'\nimport qs from 'qs'\n\ninterface ITransactionsTableProps\n extends WrappedComponentProps,\n IMapStateProps {\n variant: 'lg' | 'sm'\n transactions?: List<TransactionRecord>\n loading: boolean\n disabledAddress?: string\n error?: string\n rows: number\n retry?(): any\n}\nclass TransactionsTable extends PureComponent<\n ITransactionsTableProps & WithStyles\n> {\n getRow = (transaction: TransactionRecord) => {\n const { classes, disabledAddress, variant, intl, language } = this.props\n\n const languageLocaleForMoment = languageLocaleForMomentSwitcher(language)\n\n const successText = intl.formatMessage({\n id: 'Transactions.components.TransactionsTable.success',\n })\n\n const failureText = intl.formatMessage({\n id: 'Transactions.components.TransactionsTable.failure',\n })\n\n const rows = [\n {\n content: (\n <div className={classes.text}>\n <NavLinkWithTracking\n label=\"Transaction Hash\"\n to={Routes.Transaction.getPath({ id: transaction.hash })}\n >\n {transaction.hash}\n </NavLinkWithTracking>\n </div>\n ),\n },\n {\n content: (\n <NavLinkWithTracking\n label=\"Transaction Block Number\"\n to={Routes.Block.getPath({ id: transaction.blockNumber })}\n >\n {transaction.blockNumber}\n </NavLinkWithTracking>\n ),\n },\n {\n content: moment(transaction.timestamp)\n .locale(languageLocaleForMoment)\n .fromNow(),\n },\n {\n content: (\n <div className={classes.text}>\n {transaction.from && transaction.from !== disabledAddress ? (\n <NavLinkWithTracking\n label=\"Transaction From\"\n to={Routes.AddressInfo.getPath({ id: transaction.from })}\n >\n {transaction.from}\n </NavLinkWithTracking>\n ) : (\n transaction.from\n )}\n </div>\n ),\n },\n {\n content: (\n <div className={classes.text}>\n {transaction.to && transaction.to !== disabledAddress && transaction.to !== 'null' ? (\n <NavLinkWithTracking\n label=\"Transaction To\"\n to={Routes.AddressInfo.getPath({ id: transaction.to })}\n >\n {transaction.to}\n </NavLinkWithTracking>\n ) : (\n transaction.to || intl.formatMessage({\n id: 'Transactions.components.TransactionsTable.contractCreation'\n })\n )}\n </div>\n ),\n },\n {\n content: numberStringWithComma(fromWei(transaction.value)),\n },\n ]\n if (variant === 'lg') {\n rows.push({\n content: (\n <div className={classes.statusContainer}>\n {numberStringWithComma(transaction.gasUsed.toString())}\n <Tooltip\n title={transaction.status ? successText : failureText}\n placement=\"right\"\n >\n <div\n className={cn(\n classes.absolute,\n classes.status,\n transaction.status ? classes.green : classes.red\n )}\n />\n </Tooltip>\n </div>\n ),\n })\n } else {\n rows.push({\n content: numberStringWithComma(transaction.gasUsed.toString())\n })\n rows.push({\n content: (\n <Grid container alignItems=\"center\" spacing={8}>\n <Grid item>{transaction.status ? successText : failureText}</Grid>\n <Grid item>\n <div\n className={cn(\n classes.status,\n transaction.status ? classes.green : classes.red\n )}\n />\n </Grid>\n </Grid>\n ),\n })\n }\n\n return rows\n }\n\n getIvotingRow = (transaction: TransactionRecord) => {\n const { classes, language } = this.props\n\n const languageLocaleForMoment = languageLocaleForMomentSwitcher(language)\n\n const successText = '投票æˆåŠŸ'\n\n const failureText = '投票失敗'\n\n const rows = [\n {\n content: (\n <div className={classes.textIvoting}>\n <NavLinkWithTracking\n label=\"Transaction Hash\"\n to={\n Routes.Transaction.getPath({ id: transaction.hash }) +\n '?type=ivoting'\n }\n >\n {transaction.hash}\n </NavLinkWithTracking>\n </div>\n ),\n },\n {\n content: <Grid>{transaction.blockNumber}</Grid>,\n },\n {\n content: moment(transaction.timestamp)\n .locale(languageLocaleForMoment)\n .fromNow(),\n },\n {\n content: (\n <Grid container alignItems=\"center\" spacing={8}>\n <Grid item>{transaction.status ? successText : failureText}</Grid>\n <Grid item>\n <div\n className={cn(\n classes.status,\n transaction.status ? classes.green : classes.red\n )}\n />\n </Grid>\n </Grid>\n ),\n },\n ]\n\n return rows\n }\n\n renderLoading = (columns: string[]) => {\n const { rows } = this.props\n return [...Array(rows).keys()].map(() =>\n columns.map(() => ({\n content: <RectLoader height={20} />,\n }))\n )\n }\n\n getColumns = () => {\n const { intl } = this.props\n\n const hash = intl.formatMessage({\n id: 'Transactions.components.TransactionsTable.hash',\n })\n\n const block = intl.formatMessage({\n id: 'Transactions.components.TransactionsTable.block',\n })\n\n const age = intl.formatMessage({\n id: 'Transactions.components.TransactionsTable.age',\n })\n\n const from = intl.formatMessage({\n id: 'Transactions.components.TransactionsTable.from',\n })\n\n const to = intl.formatMessage({\n id: 'Transactions.components.TransactionsTable.to',\n })\n\n const tt = intl.formatMessage({\n id: 'Transactions.components.TransactionsTable.tt',\n })\n\n const gasUsed = intl.formatMessage({\n id: 'Transactions.components.TransactionsTable.gasUsed',\n })\n\n const status = intl.formatMessage({\n id: 'Transactions.components.TransactionsTable.status',\n })\n\n\n\n const cols = [hash, block, age, from, to, tt, gasUsed]\n return this.props.variant === 'lg' ? cols : [...cols, status]\n }\n\n getIvotingColumns = () => {\n const { intl } = this.props\n\n const hash = '投票編號'\n\n const block = 'å€å¡Šç·¨è™Ÿ'\n\n const age = '上éˆæ™‚é–“'\n\n const status = '狀態'\n\n const cols = [hash, block, age, status]\n return cols\n }\n\n isIvoting = (): boolean => {\n const params = qs.parse(window.location.search, {\n ignoreQueryPrefix: true,\n })\n\n return params.type === 'ivoting'\n }\n\n render() {\n const { classes, transactions, error, retry, loading } = this.props\n if (error) {\n return <ErrorDisplay retry={retry} />\n }\n const isIvoting = this.isIvoting()\n const columns = isIvoting ? this.getIvotingColumns() : this.getColumns()\n const isLoading = loading || !transactions\n const rowsData = isLoading\n ? this.renderLoading(columns)\n : transactions!.map(isIvoting ? this.getIvotingRow : this.getRow)\n return (\n <Paper square={true} elevation={0} className={classes.tableContainer}>\n {transactions && !transactions.size ? (\n <div className={classes.noTransaction}>\n <Grid\n justify=\"center\"\n direction=\"column\"\n alignItems=\"center\"\n container={true}\n >\n <img src={NoResultIcon} alt=\"\" className={classes.image} />\n <Typography variant=\"headline\">\n <FormattedMessage id=\"Transactions.components.TransactionsTable.noTxsFound\" />\n </Typography>\n </Grid>\n </div>\n ) : (\n <ResponsiveTable columns={columns} rows={rowsData} />\n )}\n </Paper>\n )\n }\n}\n\ninterface IMapStateProps {\n language: string\n}\n\nexport const mapStateToProps = (state: IGlobalState): IMapStateProps => {\n return {\n language: state.app.language,\n }\n}\n\nexport const Unconnected = TransactionsTable\nexport default compose<any, any>(\n injectIntl,\n withStyles(styles),\n connect(mapStateToProps, {})\n)(TransactionsTable)\n","import createStyles from '@material-ui/core/styles/createStyles'\nimport { Theme } from '@material-ui/core'\n\nexport default ({ spacing, breakpoints }: Theme) =>\n createStyles({\n noTransaction: {\n textAlign: 'center',\n padding: spacing.unit * 4,\n },\n tableContainer: {\n overflowX: 'auto',\n },\n text: {\n maxWidth: 140,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n textIvoting: {\n maxWidth: 520,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n image: {\n marginBottom: spacing.unit * 2,\n width: 110,\n },\n statusContainer: {\n paddingRight: 16,\n position: 'relative',\n },\n absolute: {\n position: 'absolute',\n right: 0,\n top: '50%',\n transform: 'translateY(-50%)',\n },\n status: {\n height: 10,\n width: 10,\n borderRadius: 20,\n },\n red: {\n backgroundColor: '#f15f5f',\n },\n green: {\n backgroundColor: '#23d462',\n },\n [breakpoints.down('sm')]: {\n text: {\n maxWidth: '100%',\n },\n },\n })\n","import React, { PureComponent, ReactNode } from 'react'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport styles from './ResponsiveTable.styles'\nimport { Table, withWidth } from '@material-ui/core'\nimport { WithWidth } from '@material-ui/core/withWidth'\nimport { compose } from 'recompose'\nimport TableHead from '@material-ui/core/TableHead'\nimport TableRow from '@material-ui/core/TableRow'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableBody from '@material-ui/core/TableBody'\nimport Grid from '@material-ui/core/Grid'\nimport cn from 'classnames'\n\ninterface IResponsiveTable extends WithWidth {\n classes: { [key: string]: string }\n columns: ReactNode[]\n rows: {\n content: ReactNode\n cellClass?: string\n }[][]\n}\n\nclass ResponsiveTable extends PureComponent<IResponsiveTable> {\n render() {\n const { classes, rows, columns, width } = this.props\n if (width === 'xs' || width === 'sm') {\n return (\n <div className={classes.smTable}>\n {rows.map((row, idx) => {\n return (\n <div className={classes.smSection} key={idx}>\n {columns.map((col, columnIdx) => (\n <Grid\n container\n alignItems=\"flex-start\"\n key={columnIdx}\n className={classes.item}\n >\n <div className={classes.smTitle}>{col}</div>\n <div className={classes.flex}>{row[columnIdx].content}</div>\n </Grid>\n ))}\n </div>\n )\n })}\n </div>\n )\n }\n\n return (\n <Table className={classes.table}>\n <TableHead>\n <TableRow>\n {columns.map((column, idx) => (\n <TableCell key={idx} className={classes.cell}>\n {column}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {rows.map((row, idx) => {\n return (\n <TableRow key={idx} className={classes.row}>\n {row.map((cell, cellIdx) => {\n return (\n <TableCell\n key={cellIdx}\n className={cn(classes.cell, cell.cellClass)}\n >\n {cell.content}\n </TableCell>\n )\n })}\n </TableRow>\n )\n })}\n </TableBody>\n </Table>\n )\n }\n}\n\nexport default compose<any, any>(\n withStyles(styles),\n withWidth()\n)(ResponsiveTable)\n","import createStyles from '@material-ui/core/styles/createStyles'\nimport { Theme } from '@material-ui/core'\n\nexport default ({ palette }: Theme) =>\n // @ts-ignore\n createStyles({\n table: {\n tableLayout: 'auto'\n },\n smTable: {\n fontSize: '0.8125rem',\n color: '#808080'\n },\n smTitle: {\n color: 'black',\n width: 100,\n fontWeight: '500'\n },\n smSection: {\n padding: 24,\n paddingBottom: 12,\n borderBottom: `1px solid ${palette.divider}`\n },\n cell: {\n padding: 12,\n '&:first-child': {\n paddingLeft: 24\n }\n },\n item: {\n marginBottom: 12\n },\n flex: {\n flex: 1,\n overflow: 'hidden'\n }\n })\n","var map = {\n\t\"./af\": 462,\n\t\"./af.js\": 462,\n\t\"./ar\": 463,\n\t\"./ar-dz\": 464,\n\t\"./ar-dz.js\": 464,\n\t\"./ar-kw\": 465,\n\t\"./ar-kw.js\": 465,\n\t\"./ar-ly\": 466,\n\t\"./ar-ly.js\": 466,\n\t\"./ar-ma\": 467,\n\t\"./ar-ma.js\": 467,\n\t\"./ar-sa\": 468,\n\t\"./ar-sa.js\": 468,\n\t\"./ar-tn\": 469,\n\t\"./ar-tn.js\": 469,\n\t\"./ar.js\": 463,\n\t\"./az\": 470,\n\t\"./az.js\": 470,\n\t\"./be\": 471,\n\t\"./be.js\": 471,\n\t\"./bg\": 472,\n\t\"./bg.js\": 472,\n\t\"./bm\": 473,\n\t\"./bm.js\": 473,\n\t\"./bn\": 474,\n\t\"./bn.js\": 474,\n\t\"./bo\": 475,\n\t\"./bo.js\": 475,\n\t\"./br\": 476,\n\t\"./br.js\": 476,\n\t\"./bs\": 477,\n\t\"./bs.js\": 477,\n\t\"./ca\": 478,\n\t\"./ca.js\": 478,\n\t\"./cs\": 479,\n\t\"./cs.js\": 479,\n\t\"./cv\": 480,\n\t\"./cv.js\": 480,\n\t\"./cy\": 481,\n\t\"./cy.js\": 481,\n\t\"./da\": 482,\n\t\"./da.js\": 482,\n\t\"./de\": 483,\n\t\"./de-at\": 484,\n\t\"./de-at.js\": 484,\n\t\"./de-ch\": 485,\n\t\"./de-ch.js\": 485,\n\t\"./de.js\": 483,\n\t\"./dv\": 486,\n\t\"./dv.js\": 486,\n\t\"./el\": 487,\n\t\"./el.js\": 487,\n\t\"./en-au\": 488,\n\t\"./en-au.js\": 488,\n\t\"./en-ca\": 489,\n\t\"./en-ca.js\": 489,\n\t\"./en-gb\": 490,\n\t\"./en-gb.js\": 490,\n\t\"./en-ie\": 491,\n\t\"./en-ie.js\": 491,\n\t\"./en-il\": 492,\n\t\"./en-il.js\": 492,\n\t\"./en-nz\": 493,\n\t\"./en-nz.js\": 493,\n\t\"./eo\": 494,\n\t\"./eo.js\": 494,\n\t\"./es\": 495,\n\t\"./es-do\": 496,\n\t\"./es-do.js\": 496,\n\t\"./es-us\": 497,\n\t\"./es-us.js\": 497,\n\t\"./es.js\": 495,\n\t\"./et\": 498,\n\t\"./et.js\": 498,\n\t\"./eu\": 499,\n\t\"./eu.js\": 499,\n\t\"./fa\": 500,\n\t\"./fa.js\": 500,\n\t\"./fi\": 501,\n\t\"./fi.js\": 501,\n\t\"./fo\": 502,\n\t\"./fo.js\": 502,\n\t\"./fr\": 503,\n\t\"./fr-ca\": 504,\n\t\"./fr-ca.js\": 504,\n\t\"./fr-ch\": 505,\n\t\"./fr-ch.js\": 505,\n\t\"./fr.js\": 503,\n\t\"./fy\": 506,\n\t\"./fy.js\": 506,\n\t\"./gd\": 507,\n\t\"./gd.js\": 507,\n\t\"./gl\": 508,\n\t\"./gl.js\": 508,\n\t\"./gom-latn\": 509,\n\t\"./gom-latn.js\": 509,\n\t\"./gu\": 510,\n\t\"./gu.js\": 510,\n\t\"./he\": 511,\n\t\"./he.js\": 511,\n\t\"./hi\": 512,\n\t\"./hi.js\": 512,\n\t\"./hr\": 513,\n\t\"./hr.js\": 513,\n\t\"./hu\": 514,\n\t\"./hu.js\": 514,\n\t\"./hy-am\": 515,\n\t\"./hy-am.js\": 515,\n\t\"./id\": 516,\n\t\"./id.js\": 516,\n\t\"./is\": 517,\n\t\"./is.js\": 517,\n\t\"./it\": 518,\n\t\"./it.js\": 518,\n\t\"./ja\": 519,\n\t\"./ja.js\": 519,\n\t\"./jv\": 520,\n\t\"./jv.js\": 520,\n\t\"./ka\": 521,\n\t\"./ka.js\": 521,\n\t\"./kk\": 522,\n\t\"./kk.js\": 522,\n\t\"./km\": 523,\n\t\"./km.js\": 523,\n\t\"./kn\": 524,\n\t\"./kn.js\": 524,\n\t\"./ko\": 525,\n\t\"./ko.js\": 525,\n\t\"./ky\": 526,\n\t\"./ky.js\": 526,\n\t\"./lb\": 527,\n\t\"./lb.js\": 527,\n\t\"./lo\": 528,\n\t\"./lo.js\": 528,\n\t\"./lt\": 529,\n\t\"./lt.js\": 529,\n\t\"./lv\": 530,\n\t\"./lv.js\": 530,\n\t\"./me\": 531,\n\t\"./me.js\": 531,\n\t\"./mi\": 532,\n\t\"./mi.js\": 532,\n\t\"./mk\": 533,\n\t\"./mk.js\": 533,\n\t\"./ml\": 534,\n\t\"./ml.js\": 534,\n\t\"./mn\": 535,\n\t\"./mn.js\": 535,\n\t\"./mr\": 536,\n\t\"./mr.js\": 536,\n\t\"./ms\": 537,\n\t\"./ms-my\": 538,\n\t\"./ms-my.js\": 538,\n\t\"./ms.js\": 537,\n\t\"./mt\": 539,\n\t\"./mt.js\": 539,\n\t\"./my\": 540,\n\t\"./my.js\": 540,\n\t\"./nb\": 541,\n\t\"./nb.js\": 541,\n\t\"./ne\": 542,\n\t\"./ne.js\": 542,\n\t\"./nl\": 543,\n\t\"./nl-be\": 544,\n\t\"./nl-be.js\": 544,\n\t\"./nl.js\": 543,\n\t\"./nn\": 545,\n\t\"./nn.js\": 545,\n\t\"./pa-in\": 546,\n\t\"./pa-in.js\": 546,\n\t\"./pl\": 547,\n\t\"./pl.js\": 547,\n\t\"./pt\": 548,\n\t\"./pt-br\": 549,\n\t\"./pt-br.js\": 549,\n\t\"./pt.js\": 548,\n\t\"./ro\": 550,\n\t\"./ro.js\": 550,\n\t\"./ru\": 551,\n\t\"./ru.js\": 551,\n\t\"./sd\": 552,\n\t\"./sd.js\": 552,\n\t\"./se\": 553,\n\t\"./se.js\": 553,\n\t\"./si\": 554,\n\t\"./si.js\": 554,\n\t\"./sk\": 555,\n\t\"./sk.js\": 555,\n\t\"./sl\": 556,\n\t\"./sl.js\": 556,\n\t\"./sq\": 557,\n\t\"./sq.js\": 557,\n\t\"./sr\": 558,\n\t\"./sr-cyrl\": 559,\n\t\"./sr-cyrl.js\": 559,\n\t\"./sr.js\": 558,\n\t\"./ss\": 560,\n\t\"./ss.js\": 560,\n\t\"./sv\": 561,\n\t\"./sv.js\": 561,\n\t\"./sw\": 562,\n\t\"./sw.js\": 562,\n\t\"./ta\": 563,\n\t\"./ta.js\": 563,\n\t\"./te\": 564,\n\t\"./te.js\": 564,\n\t\"./tet\": 565,\n\t\"./tet.js\": 565,\n\t\"./tg\": 566,\n\t\"./tg.js\": 566,\n\t\"./th\": 567,\n\t\"./th.js\": 567,\n\t\"./tl-ph\": 568,\n\t\"./tl-ph.js\": 568,\n\t\"./tlh\": 569,\n\t\"./tlh.js\": 569,\n\t\"./tr\": 570,\n\t\"./tr.js\": 570,\n\t\"./tzl\": 571,\n\t\"./tzl.js\": 571,\n\t\"./tzm\": 572,\n\t\"./tzm-latn\": 573,\n\t\"./tzm-latn.js\": 573,\n\t\"./tzm.js\": 572,\n\t\"./ug-cn\": 574,\n\t\"./ug-cn.js\": 574,\n\t\"./uk\": 575,\n\t\"./uk.js\": 575,\n\t\"./ur\": 576,\n\t\"./ur.js\": 576,\n\t\"./uz\": 577,\n\t\"./uz-latn\": 578,\n\t\"./uz-latn.js\": 578,\n\t\"./uz.js\": 577,\n\t\"./vi\": 579,\n\t\"./vi.js\": 579,\n\t\"./x-pseudo\": 580,\n\t\"./x-pseudo.js\": 580,\n\t\"./yo\": 581,\n\t\"./yo.js\": 581,\n\t\"./zh-cn\": 582,\n\t\"./zh-cn.js\": 582,\n\t\"./zh-hk\": 583,\n\t\"./zh-hk.js\": 583,\n\t\"./zh-tw\": 584,\n\t\"./zh-tw.js\": 584\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 596;","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _withStyles = _interopRequireDefault(require(\"../styles/withStyles\"));\n\nvar styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center'\n },\n\n /* Styles applied to the root element if `disableGutters={false}`. */\n gutters: theme.mixins.gutters(),\n\n /* Styles applied to the root element if `variant=\"regular\"`. */\n regular: theme.mixins.toolbar,\n\n /* Styles applied to the root element if `variant=\"dense\"`. */\n dense: {\n minHeight: 48\n }\n };\n};\n\nexports.styles = styles;\n\nfunction Toolbar(props) {\n var children = props.children,\n classes = props.classes,\n classNameProp = props.className,\n disableGutters = props.disableGutters,\n variant = props.variant,\n other = (0, _objectWithoutProperties2.default)(props, [\"children\", \"classes\", \"className\", \"disableGutters\", \"variant\"]);\n var className = (0, _classnames.default)(classes.root, classes[variant], (0, _defineProperty2.default)({}, classes.gutters, !disableGutters), classNameProp);\n return _react.default.createElement(\"div\", (0, _extends2.default)({\n className: className\n }, other), children);\n}\n\nToolbar.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Toolbar children, usually a mixture of `IconButton`, `Button` and `Typography`.\n */\n children: _propTypes.default.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css-api) below for more details.\n */\n classes: _propTypes.default.object.isRequired,\n\n /**\n * @ignore\n */\n className: _propTypes.default.string,\n\n /**\n * If `true`, disables gutter padding.\n */\n disableGutters: _propTypes.default.bool,\n\n /**\n * The variant to use.\n */\n variant: _propTypes.default.oneOf(['regular', 'dense'])\n} : {};\nToolbar.defaultProps = {\n disableGutters: false,\n variant: 'regular'\n};\n\nvar _default = (0, _withStyles.default)(styles, {\n name: 'MuiToolbar'\n})(Toolbar);\n\nexports.default = _default;","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","/**\r\n * Compiles a querystring\r\n * Returns string representation of the object\r\n *\r\n * @param {Object}\r\n * @api private\r\n */\r\n\r\nexports.encode = function (obj) {\r\n var str = '';\r\n\r\n for (var i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n if (str.length) str += '&';\r\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n }\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/**\r\n * Parses a simple querystring into an object\r\n *\r\n * @param {String} qs\r\n * @api private\r\n */\r\n\r\nexports.decode = function(qs){\r\n var qry = {};\r\n var pairs = qs.split('&');\r\n for (var i = 0, l = pairs.length; i < l; i++) {\r\n var pair = pairs[i].split('=');\r\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n }\r\n return qry;\r\n};\r\n","\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar binary = require('./binary');\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n 'CONNECT',\n 'DISCONNECT',\n 'EVENT',\n 'ACK',\n 'ERROR',\n 'BINARY_EVENT',\n 'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\nvar ERROR_PACKET = exports.ERROR + '\"encode error\"';\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n debug('encoding packet %j', obj);\n\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n encodeAsBinary(obj, callback);\n } else {\n var encoding = encodeAsString(obj);\n callback([encoding]);\n }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n\n // first is type\n var str = '' + obj.type;\n\n // attachments if we have them\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n str += obj.attachments + '-';\n }\n\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && '/' !== obj.nsp) {\n str += obj.nsp + ',';\n }\n\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n\n // json data\n if (null != obj.data) {\n var payload = tryStringify(obj.data);\n if (payload !== false) {\n str += payload;\n } else {\n return ERROR_PACKET;\n }\n }\n\n debug('encoded %j as %s', obj, str);\n return str;\n}\n\nfunction tryStringify(str) {\n try {\n return JSON.stringify(str);\n } catch(e){\n return false;\n }\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n function writeEncoding(bloblessData) {\n var deconstruction = binary.deconstructPacket(bloblessData);\n var pack = encodeAsString(deconstruction.packet);\n var buffers = deconstruction.buffers;\n\n buffers.unshift(pack); // add packet info to beginning of data list\n callback(buffers); // write all the buffers\n }\n\n binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an ecoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n var packet;\n if (typeof obj === 'string') {\n packet = decodeString(obj);\n if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n\n // no attachments, labeled binary but no binary data to follow\n if (this.reconstructor.reconPack.attachments === 0) {\n this.emit('decoded', packet);\n }\n } else { // non-binary full packet\n this.emit('decoded', packet);\n }\n }\n else if (isBuf(obj) || obj.base64) { // raw binary data\n if (!this.reconstructor) {\n throw new Error('got binary data when not reconstructing a packet');\n } else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) { // received final buffer\n this.reconstructor = null;\n this.emit('decoded', packet);\n }\n }\n }\n else {\n throw new Error('Unknown type: ' + obj);\n }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n var i = 0;\n // look up type\n var p = {\n type: Number(str.charAt(0))\n };\n\n if (null == exports.types[p.type]) {\n return error('unknown packet type ' + p.type);\n }\n\n // look up attachments if type binary\n if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n var buf = '';\n while (str.charAt(++i) !== '-') {\n buf += str.charAt(i);\n if (i == str.length) break;\n }\n if (buf != Number(buf) || str.charAt(i) !== '-') {\n throw new Error('Illegal attachments');\n }\n p.attachments = Number(buf);\n }\n\n // look up namespace (if any)\n if ('/' === str.charAt(i + 1)) {\n p.nsp = '';\n while (++i) {\n var c = str.charAt(i);\n if (',' === c) break;\n p.nsp += c;\n if (i === str.length) break;\n }\n } else {\n p.nsp = '/';\n }\n\n // look up id\n var next = str.charAt(i + 1);\n if ('' !== next && Number(next) == next) {\n p.id = '';\n while (++i) {\n var c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n p.id += str.charAt(i);\n if (i === str.length) break;\n }\n p.id = Number(p.id);\n }\n\n // look up json data\n if (str.charAt(++i)) {\n var payload = tryParse(str.substr(i));\n var isPayloadValid = payload !== false && (p.type === exports.ERROR || isArray(payload));\n if (isPayloadValid) {\n p.data = payload;\n } else {\n return error('invalid payload');\n }\n }\n\n debug('decoded %s as %j', str, p);\n return p;\n}\n\nfunction tryParse(str) {\n try {\n return JSON.parse(str);\n } catch(e){\n return false;\n }\n}\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n this.reconPack = packet;\n this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n this.reconPack = null;\n this.buffers = [];\n};\n\nfunction error(msg) {\n return {\n type: exports.ERROR,\n data: 'parser error: ' + msg\n };\n}\n","// browser shim for xmlhttprequest module\n\nvar hasCORS = require('has-cors');\n\nmodule.exports = function (opts) {\n var xdomain = opts.xdomain;\n\n // scheme must be same when usign XDomainRequest\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n var xscheme = opts.xscheme;\n\n // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n // https://github.com/Automattic/engine.io-client/pull/217\n var enablesXDR = opts.enablesXDR;\n\n // XMLHttpRequest can be disabled on IE\n try {\n if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n } catch (e) { }\n\n // Use XDomainRequest for IE8 if enablesXDR is true\n // because loading bar keeps flashing when using jsonp-polling\n // https://github.com/yujiosaka/socke.io-ie8-loading-example\n try {\n if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n return new XDomainRequest();\n }\n } catch (e) { }\n\n if (!xdomain) {\n try {\n return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n } catch (e) { }\n }\n};\n","/**\n * Module dependencies.\n */\n\nvar parser = require('engine.io-parser');\nvar Emitter = require('component-emitter');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n","/**\r\n * Parses an URI\r\n *\r\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\r\n * @api private\r\n */\r\n\r\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n\r\nvar parts = [\r\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\r\n];\r\n\r\nmodule.exports = function parseuri(str) {\r\n var src = str,\r\n b = str.indexOf('['),\r\n e = str.indexOf(']');\r\n\r\n if (b != -1 && e != -1) {\r\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\r\n }\r\n\r\n var m = re.exec(str || ''),\r\n uri = {},\r\n i = 14;\r\n\r\n while (i--) {\r\n uri[parts[i]] = m[i] || '';\r\n }\r\n\r\n if (b != -1 && e != -1) {\r\n uri.source = src;\r\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\r\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\r\n uri.ipv6uri = true;\r\n }\r\n\r\n return uri;\r\n};\r\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","\nmodule.exports = isBuf;\n\nvar withNativeBuffer = typeof global.Buffer === 'function' && typeof global.Buffer.isBuffer === 'function';\nvar withNativeArrayBuffer = typeof global.ArrayBuffer === 'function';\n\nvar isView = (function () {\n if (withNativeArrayBuffer && typeof global.ArrayBuffer.isView === 'function') {\n return global.ArrayBuffer.isView;\n } else {\n return function (obj) { return obj.buffer instanceof global.ArrayBuffer; };\n }\n})();\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n return (withNativeBuffer && global.Buffer.isBuffer(obj)) ||\n (withNativeArrayBuffer && (obj instanceof global.ArrayBuffer || isView(obj)));\n}\n","\n/**\n * Module dependencies.\n */\n\nvar eio = require('engine.io-client');\nvar Socket = require('./socket');\nvar Emitter = require('component-emitter');\nvar parser = require('socket.io-parser');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:manager');\nvar indexOf = require('indexof');\nvar Backoff = require('backo2');\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n if (!(this instanceof Manager)) return new Manager(uri, opts);\n if (uri && ('object' === typeof uri)) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n\n opts.path = opts.path || '/socket.io';\n this.nsps = {};\n this.subs = [];\n this.opts = opts;\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor(opts.randomizationFactor || 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor()\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this.readyState = 'closed';\n this.uri = uri;\n this.connecting = [];\n this.lastPing = null;\n this.encoding = false;\n this.packetBuffer = [];\n var _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this.autoConnect = opts.autoConnect !== false;\n if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n this.emit.apply(this, arguments);\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n }\n }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].id = this.generateId(nsp);\n }\n }\n};\n\n/**\n * generate `socket.id` for the given `nsp`\n *\n * @param {String} nsp\n * @return {String}\n * @api private\n */\n\nManager.prototype.generateId = function (nsp) {\n return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n if (!arguments.length) return this._reconnection;\n this._reconnection = !!v;\n return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n if (!arguments.length) return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n if (!arguments.length) return this._reconnectionDelay;\n this._reconnectionDelay = v;\n this.backoff && this.backoff.setMin(v);\n return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n if (!arguments.length) return this._randomizationFactor;\n this._randomizationFactor = v;\n this.backoff && this.backoff.setJitter(v);\n return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n if (!arguments.length) return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n this.backoff && this.backoff.setMax(v);\n return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n if (!arguments.length) return this._timeout;\n this._timeout = v;\n return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n // Only try to reconnect if it's the first time we're connecting\n if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n debug('readyState %s', this.readyState);\n if (~this.readyState.indexOf('open')) return this;\n\n debug('opening %s', this.uri);\n this.engine = eio(this.uri, this.opts);\n var socket = this.engine;\n var self = this;\n this.readyState = 'opening';\n this.skipReconnect = false;\n\n // emit `open`\n var openSub = on(socket, 'open', function () {\n self.onopen();\n fn && fn();\n });\n\n // emit `connect_error`\n var errorSub = on(socket, 'error', function (data) {\n debug('connect_error');\n self.cleanup();\n self.readyState = 'closed';\n self.emitAll('connect_error', data);\n if (fn) {\n var err = new Error('Connection error');\n err.data = data;\n fn(err);\n } else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n\n // emit `connect_timeout`\n if (false !== this._timeout) {\n var timeout = this._timeout;\n debug('connect attempt will timeout after %d', timeout);\n\n // set timer\n var timer = setTimeout(function () {\n debug('connect attempt timed out after %d', timeout);\n openSub.destroy();\n socket.close();\n socket.emit('error', 'timeout');\n self.emitAll('connect_timeout', timeout);\n }, timeout);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n\n this.subs.push(openSub);\n this.subs.push(errorSub);\n\n return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n debug('open');\n\n // clear old subs\n this.cleanup();\n\n // mark as open\n this.readyState = 'open';\n this.emit('open');\n\n // add new subs\n var socket = this.engine;\n this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n this.lastPing = new Date();\n this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n debug('error', err);\n this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n var socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n var self = this;\n socket.on('connecting', onConnecting);\n socket.on('connect', function () {\n socket.id = self.generateId(nsp);\n });\n\n if (this.autoConnect) {\n // manually call here since connecting event is fired before listening\n onConnecting();\n }\n }\n\n function onConnecting () {\n if (!~indexOf(self.connecting, socket)) {\n self.connecting.push(socket);\n }\n }\n\n return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n var index = indexOf(this.connecting, socket);\n if (~index) this.connecting.splice(index, 1);\n if (this.connecting.length) return;\n\n this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n debug('writing packet %j', packet);\n var self = this;\n if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n if (!self.encoding) {\n // encode, then write to engine with result\n self.encoding = true;\n this.encoder.encode(packet, function (encodedPackets) {\n for (var i = 0; i < encodedPackets.length; i++) {\n self.engine.write(encodedPackets[i], packet.options);\n }\n self.encoding = false;\n self.processPacketQueue();\n });\n } else { // add packet to the queue\n self.packetBuffer.push(packet);\n }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n if (this.packetBuffer.length > 0 && !this.encoding) {\n var pack = this.packetBuffer.shift();\n this.packet(pack);\n }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n debug('cleanup');\n\n var subsLength = this.subs.length;\n for (var i = 0; i < subsLength; i++) {\n var sub = this.subs.shift();\n sub.destroy();\n }\n\n this.packetBuffer = [];\n this.encoding = false;\n this.lastPing = null;\n\n this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n debug('disconnect');\n this.skipReconnect = true;\n this.reconnecting = false;\n if ('opening' === this.readyState) {\n // `onclose` will not fire because\n // an open event never happened\n this.cleanup();\n }\n this.backoff.reset();\n this.readyState = 'closed';\n if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n debug('onclose');\n\n this.cleanup();\n this.backoff.reset();\n this.readyState = 'closed';\n this.emit('close', reason);\n\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n if (this.reconnecting || this.skipReconnect) return this;\n\n var self = this;\n\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug('reconnect failed');\n this.backoff.reset();\n this.emitAll('reconnect_failed');\n this.reconnecting = false;\n } else {\n var delay = this.backoff.duration();\n debug('will wait %dms before reconnect attempt', delay);\n\n this.reconnecting = true;\n var timer = setTimeout(function () {\n if (self.skipReconnect) return;\n\n debug('attempting reconnect');\n self.emitAll('reconnect_attempt', self.backoff.attempts);\n self.emitAll('reconnecting', self.backoff.attempts);\n\n // check again for the case socket closed in above events\n if (self.skipReconnect) return;\n\n self.open(function (err) {\n if (err) {\n debug('reconnect attempt error');\n self.reconnecting = false;\n self.reconnect();\n self.emitAll('reconnect_error', err.data);\n } else {\n debug('reconnect success');\n self.onreconnect();\n }\n });\n }, delay);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n var attempt = this.backoff.attempts;\n this.reconnecting = false;\n this.backoff.reset();\n this.updateSocketIds();\n this.emitAll('reconnect', attempt);\n};\n","/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar XHR = require('./polling-xhr');\nvar JSONP = require('./polling-jsonp');\nvar websocket = require('./websocket');\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n var xhr;\n var xd = false;\n var xs = false;\n var jsonp = false !== opts.jsonp;\n\n if (global.location) {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if ('open' in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error('JSONP disabled');\n return new JSONP(opts);\n }\n}\n","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parseqs = require('parseqs');\nvar parser = require('engine.io-parser');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n var XMLHttpRequest = require('xmlhttprequest-ssl');\n var xhr = new XMLHttpRequest({ xdomain: false });\n return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (!hasXHR2 || forceBase64) {\n this.supportsBinary = false;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n var self = this;\n\n this.readyState = 'pausing';\n\n function pause () {\n debug('paused');\n self.readyState = 'paused';\n onPause();\n }\n\n if (this.polling || !this.writable) {\n var total = 0;\n\n if (this.polling) {\n debug('we are currently polling - waiting to pause');\n total++;\n this.once('pollComplete', function () {\n debug('pre-pause polling complete');\n --total || pause();\n });\n }\n\n if (!this.writable) {\n debug('we are currently writing - waiting to pause');\n total++;\n this.once('drain', function () {\n debug('pre-pause writing complete');\n --total || pause();\n });\n }\n } else {\n pause();\n }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n debug('polling');\n this.polling = true;\n this.doPoll();\n this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n var self = this;\n debug('polling got data %s', data);\n var callback = function (packet, index, total) {\n // if its the first message we consider the transport open\n if ('opening' === self.readyState) {\n self.onOpen();\n }\n\n // if its a close packet, we close the ongoing requests\n if ('close' === packet.type) {\n self.onClose();\n return false;\n }\n\n // otherwise bypass onData and handle the message\n self.onPacket(packet);\n };\n\n // decode payload\n parser.decodePayload(data, this.socket.binaryType, callback);\n\n // if an event did not trigger closing\n if ('closed' !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit('pollComplete');\n\n if ('open' === this.readyState) {\n this.poll();\n } else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n var self = this;\n\n function close () {\n debug('writing close packet');\n self.write([{ type: 'close' }]);\n }\n\n if ('open' === this.readyState) {\n debug('transport open - closing');\n close();\n } else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug('transport not open - deferring close');\n this.once('open', close);\n }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n var callbackfn = function () {\n self.writable = true;\n self.emit('drain');\n };\n\n parser.encodePayload(packets, this.supportsBinary, function (data) {\n self.doWrite(data, callbackfn);\n });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'https' : 'http';\n var port = '';\n\n // cache busting is forced\n if (false !== this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // avoid port if default for schema\n if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n ('http' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n","/* global Blob File */\n\n/*\n * Module requirements.\n */\n\nvar isArray = require('isarray');\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof Blob === 'function' ||\n typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof File === 'function' ||\n typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]';\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Supports Buffer, ArrayBuffer, Blob and File.\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary (obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (isArray(obj)) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n\n if ((typeof Buffer === 'function' && Buffer.isBuffer && Buffer.isBuffer(obj)) ||\n (typeof ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)\n ) {\n return true;\n }\n\n // see: https://github.com/Automattic/has-binary/pull/4\n if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n\n return false;\n}\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","\n/**\n * Module dependencies.\n */\n\nvar parser = require('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar toArray = require('to-array');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:socket');\nvar parseqs = require('parseqs');\nvar hasBin = require('has-binary2');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n connect: 1,\n connect_error: 1,\n connect_timeout: 1,\n connecting: 1,\n disconnect: 1,\n error: 1,\n reconnect: 1,\n reconnect_attempt: 1,\n reconnect_failed: 1,\n reconnect_error: 1,\n reconnecting: 1,\n ping: 1,\n pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n this.io = io;\n this.nsp = nsp;\n this.json = this; // compat\n this.ids = 0;\n this.acks = {};\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.connected = false;\n this.disconnected = true;\n this.flags = {};\n if (opts && opts.query) {\n this.query = opts.query;\n }\n if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n if (this.subs) return;\n\n var io = this.io;\n this.subs = [\n on(io, 'open', bind(this, 'onopen')),\n on(io, 'packet', bind(this, 'onpacket')),\n on(io, 'close', bind(this, 'onclose'))\n ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n if (this.connected) return this;\n\n this.subEvents();\n this.io.open(); // ensure open\n if ('open' === this.io.readyState) this.onopen();\n this.emit('connecting');\n return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n var args = toArray(arguments);\n args.unshift('message');\n this.emit.apply(this, args);\n return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n if (events.hasOwnProperty(ev)) {\n emit.apply(this, arguments);\n return this;\n }\n\n var args = toArray(arguments);\n var packet = {\n type: (this.flags.binary !== undefined ? this.flags.binary : hasBin(args)) ? parser.BINARY_EVENT : parser.EVENT,\n data: args\n };\n\n packet.options = {};\n packet.options.compress = !this.flags || false !== this.flags.compress;\n\n // event ack callback\n if ('function' === typeof args[args.length - 1]) {\n debug('emitting packet with ack id %d', this.ids);\n this.acks[this.ids] = args.pop();\n packet.id = this.ids++;\n }\n\n if (this.connected) {\n this.packet(packet);\n } else {\n this.sendBuffer.push(packet);\n }\n\n this.flags = {};\n\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n packet.nsp = this.nsp;\n this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n debug('transport is open - connecting');\n\n // write connect packet if necessary\n if ('/' !== this.nsp) {\n if (this.query) {\n var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;\n debug('sending connect packet with query %s', query);\n this.packet({type: parser.CONNECT, query: query});\n } else {\n this.packet({type: parser.CONNECT});\n }\n }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n debug('close (%s)', reason);\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n var sameNamespace = packet.nsp === this.nsp;\n var rootNamespaceError = packet.type === parser.ERROR && packet.nsp === '/';\n\n if (!sameNamespace && !rootNamespaceError) return;\n\n switch (packet.type) {\n case parser.CONNECT:\n this.onconnect();\n break;\n\n case parser.EVENT:\n this.onevent(packet);\n break;\n\n case parser.BINARY_EVENT:\n this.onevent(packet);\n break;\n\n case parser.ACK:\n this.onack(packet);\n break;\n\n case parser.BINARY_ACK:\n this.onack(packet);\n break;\n\n case parser.DISCONNECT:\n this.ondisconnect();\n break;\n\n case parser.ERROR:\n this.emit('error', packet.data);\n break;\n }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n var args = packet.data || [];\n debug('emitting event %j', args);\n\n if (null != packet.id) {\n debug('attaching ack callback to event');\n args.push(this.ack(packet.id));\n }\n\n if (this.connected) {\n emit.apply(this, args);\n } else {\n this.receiveBuffer.push(args);\n }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n var self = this;\n var sent = false;\n return function () {\n // prevent double callbacks\n if (sent) return;\n sent = true;\n var args = toArray(arguments);\n debug('sending ack %j', args);\n\n self.packet({\n type: hasBin(args) ? parser.BINARY_ACK : parser.ACK,\n id: id,\n data: args\n });\n };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n var ack = this.acks[packet.id];\n if ('function' === typeof ack) {\n debug('calling ack %s with %j', packet.id, packet.data);\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n } else {\n debug('bad ack %s', packet.id);\n }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n this.connected = true;\n this.disconnected = false;\n this.emit('connect');\n this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n var i;\n for (i = 0; i < this.receiveBuffer.length; i++) {\n emit.apply(this, this.receiveBuffer[i]);\n }\n this.receiveBuffer = [];\n\n for (i = 0; i < this.sendBuffer.length; i++) {\n this.packet(this.sendBuffer[i]);\n }\n this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n debug('server disconnect (%s)', this.nsp);\n this.destroy();\n this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n for (var i = 0; i < this.subs.length; i++) {\n this.subs[i].destroy();\n }\n this.subs = null;\n }\n\n this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n if (this.connected) {\n debug('performing disconnect (%s)', this.nsp);\n this.packet({ type: parser.DISCONNECT });\n }\n\n // remove socket from pool\n this.destroy();\n\n if (this.connected) {\n // fire events\n this.onclose('io client disconnect');\n }\n return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n this.flags.compress = compress;\n return this;\n};\n\n/**\n * Sets the binary flag\n *\n * @param {Boolean} whether the emitted data contains binary\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.binary = function (binary) {\n this.flags.binary = binary;\n return this;\n};\n","\n/**\n * Module exports.\n */\n\nmodule.exports = on;\n\n/**\n * Helper for subscriptions.\n *\n * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`\n * @param {String} event name\n * @param {Function} callback\n * @api public\n */\n\nfunction on (obj, ev, fn) {\n obj.on(ev, fn);\n return {\n destroy: function () {\n obj.removeListener(ev, fn);\n }\n };\n}\n","/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n","'use strict';\n\nvar _AnimatedNumber = require('./AnimatedNumber');\n\nvar _AnimatedNumber2 = _interopRequireDefault(_AnimatedNumber);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _AnimatedNumber2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ANIMATION_DURATION = 300;\n\nvar AnimatedNumber = function (_Component) {\n _inherits(AnimatedNumber, _Component);\n\n function AnimatedNumber(props) {\n _classCallCheck(this, AnimatedNumber);\n\n var _this = _possibleConstructorReturn(this, (AnimatedNumber.__proto__ || Object.getPrototypeOf(AnimatedNumber)).call(this, props));\n\n _this.state = {\n currentValue: props.initialValue\n };\n return _this;\n }\n\n _createClass(AnimatedNumber, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.prepareTween(this.props);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n\n if (this.state.currentValue === nextProps.value) {\n return;\n }\n\n if (this.tweenHandle) {\n this.endTween();\n }\n\n this.prepareTween(nextProps);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.endTween();\n }\n }, {\n key: 'prepareTween',\n value: function prepareTween() {\n var _this2 = this;\n\n this.tweenHandle = (0, _raf2.default)(function (timestamp) {\n _this2.tweenValue(timestamp, true);\n });\n }\n }, {\n key: 'endTween',\n value: function endTween() {\n _raf2.default.cancel(this.tweenHandle);\n this.setState(_extends({}, this.state, {\n currentValue: this.props.value\n }));\n }\n }, {\n key: 'ensureSixtyFps',\n value: function ensureSixtyFps(timestamp) {\n var currentTime = this.state.currentTime;\n\n\n return !currentTime || timestamp - currentTime > 16;\n }\n }, {\n key: 'tweenValue',\n value: function tweenValue(timestamp, start) {\n\n if (!this.ensureSixtyFps(timestamp)) {\n this.tweenHandle = (0, _raf2.default)(this.tweenValue.bind(this));\n return;\n }\n\n var _props = this.props,\n value = _props.value,\n duration = _props.duration;\n var currentValue = this.state.currentValue;\n\n var currentTime = timestamp;\n var startTime = start ? timestamp : this.state.startTime;\n var fromValue = start ? currentValue : this.state.fromValue;\n var newValue = void 0;\n\n if (currentTime - startTime >= duration) {\n newValue = value;\n } else {\n newValue = fromValue + (value - fromValue) * ((currentTime - startTime) / duration);\n }\n\n if (newValue === value) {\n this.endTween();\n return;\n }\n\n this.setState({\n currentValue: newValue,\n startTime: startTime ? startTime : currentTime,\n fromValue: fromValue, currentTime: currentTime\n });\n this.tweenHandle = (0, _raf2.default)(this.tweenValue.bind(this));\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n formatValue = _props2.formatValue,\n value = _props2.value,\n className = _props2.className,\n frameStyle = _props2.frameStyle,\n stepPrecision = _props2.stepPrecision;\n var _state = this.state,\n currentValue = _state.currentValue,\n fromValue = _state.fromValue;\n var style = this.props.style;\n\n var adjustedValue = currentValue;\n var direction = value - fromValue;\n\n if (currentValue !== value) {\n if (stepPrecision > 0) {\n adjustedValue = Number(currentValue.toFixed(stepPrecision));\n } else if (direction < 0 && stepPrecision === 0) {\n adjustedValue = Math.floor(currentValue);\n } else if (direction > 0 && stepPrecision === 0) {\n adjustedValue = Math.ceil(currentValue);\n }\n }\n\n var perc = Math.abs((adjustedValue - fromValue) / (value - fromValue) * 100);\n\n var currStyle = frameStyle(perc);\n\n if (style && currStyle) {\n style = _extends({}, style, currStyle);\n } else if (currStyle) {\n style = currStyle;\n }\n\n return _react2.default.createElement(this.props.component, _extends({}, filterKnownProps(this.props), { className: className, style: style }), formatValue(adjustedValue));\n }\n }]);\n\n return AnimatedNumber;\n}(_react.Component);\n\nAnimatedNumber.propTypes = {\n component: _propTypes2.default.any,\n formatValue: _propTypes2.default.func,\n value: _propTypes2.default.number,\n initialValue: _propTypes2.default.number,\n duration: _propTypes2.default.number,\n frameStyle: _propTypes2.default.func,\n stepPrecision: _propTypes2.default.number,\n style: _propTypes2.default.object,\n className: _propTypes2.default.string\n};\nAnimatedNumber.defaultProps = {\n component: 'span',\n formatValue: function formatValue(n) {\n return n;\n },\n initialValue: 0,\n duration: ANIMATION_DURATION,\n frameStyle: function frameStyle() {\n return {};\n },\n value: 0\n};\nexports.default = AnimatedNumber;\n\n\nfunction filterKnownProps(props) {\n var sanitized = {};\n var propNames = Object.keys(props);\n var validProps = Object.keys(AnimatedNumber.propTypes);\n\n propNames.filter(function (p) {\n return validProps.indexOf(p) < 0;\n }).forEach(function (p) {\n sanitized[p] = props[p];\n });\n\n return sanitized;\n};","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setTranslateValue = setTranslateValue;\nexports.default = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf3 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactEventListener = _interopRequireDefault(require(\"react-event-listener\"));\n\nvar _debounce = _interopRequireDefault(require(\"debounce\"));\n\nvar _Transition = _interopRequireDefault(require(\"react-transition-group/Transition\"));\n\nvar _ownerWindow = _interopRequireDefault(require(\"../utils/ownerWindow\"));\n\nvar _withTheme = _interopRequireDefault(require(\"../styles/withTheme\"));\n\nvar _transitions = require(\"../styles/transitions\");\n\nvar _utils = require(\"../transitions/utils\");\n\n// @inheritedComponent Transition\n// < 1kb payload overhead when lodash/debounce is > 3kb.\nvar GUTTER = 24; // Translate the node so he can't be seen on the screen.\n// Later, we gonna translate back the node to his original location\n// with `translate3d(0, 0, 0)`.`\n\nfunction getTranslateValue(props, node) {\n var direction = props.direction;\n var rect = node.getBoundingClientRect();\n var transform;\n\n if (node.fakeTransform) {\n transform = node.fakeTransform;\n } else {\n var computedStyle = (0, _ownerWindow.default)(node).getComputedStyle(node);\n transform = computedStyle.getPropertyValue('-webkit-transform') || computedStyle.getPropertyValue('transform');\n }\n\n var offsetX = 0;\n var offsetY = 0;\n\n if (transform && transform !== 'none' && typeof transform === 'string') {\n var transformValues = transform.split('(')[1].split(')')[0].split(',');\n offsetX = parseInt(transformValues[4], 10);\n offsetY = parseInt(transformValues[5], 10);\n }\n\n if (direction === 'left') {\n return \"translateX(100vw) translateX(-\".concat(rect.left - offsetX, \"px)\");\n }\n\n if (direction === 'right') {\n return \"translateX(-\".concat(rect.left + rect.width + GUTTER - offsetX, \"px)\");\n }\n\n if (direction === 'up') {\n return \"translateY(100vh) translateY(-\".concat(rect.top - offsetY, \"px)\");\n } // direction === 'down'\n\n\n return \"translateY(-\".concat(rect.top + rect.height + GUTTER - offsetY, \"px)\");\n}\n\nfunction setTranslateValue(props, node) {\n var transform = getTranslateValue(props, node);\n\n if (transform) {\n node.style.webkitTransform = transform;\n node.style.transform = transform;\n }\n}\n/**\n * The Slide transition is used by the [Snackbar](/demos/snackbars) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\n\nvar Slide =\n/*#__PURE__*/\nfunction (_React$Component) {\n (0, _inherits2.default)(Slide, _React$Component);\n\n function Slide() {\n var _getPrototypeOf2;\n\n var _this;\n\n (0, _classCallCheck2.default)(this, Slide);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(Slide)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.mounted = false;\n _this.transition = null;\n _this.handleResize = (0, _debounce.default)(function () {\n // Skip configuration where the position is screen size invariant.\n if (_this.props.in || _this.props.direction === 'down' || _this.props.direction === 'right') {\n return;\n }\n\n if (_this.transitionRef) {\n setTranslateValue(_this.props, _this.transitionRef);\n }\n }, 166);\n\n _this.handleEnter = function (node) {\n setTranslateValue(_this.props, node);\n (0, _utils.reflow)(node);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node);\n }\n };\n\n _this.handleEntering = function (node) {\n var theme = _this.props.theme;\n var transitionProps = (0, _utils.getTransitionProps)(_this.props, {\n mode: 'enter'\n });\n node.style.webkitTransition = theme.transitions.create('-webkit-transform', (0, _extends2.default)({}, transitionProps, {\n easing: theme.transitions.easing.easeOut\n }));\n node.style.transition = theme.transitions.create('transform', (0, _extends2.default)({}, transitionProps, {\n easing: theme.transitions.easing.easeOut\n }));\n node.style.webkitTransform = 'translate(0, 0)';\n node.style.transform = 'translate(0, 0)';\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node);\n }\n };\n\n _this.handleExit = function (node) {\n var theme = _this.props.theme;\n var transitionProps = (0, _utils.getTransitionProps)(_this.props, {\n mode: 'exit'\n });\n node.style.webkitTransition = theme.transitions.create('-webkit-transform', (0, _extends2.default)({}, transitionProps, {\n easing: theme.transitions.easing.sharp\n }));\n node.style.transition = theme.transitions.create('transform', (0, _extends2.default)({}, transitionProps, {\n easing: theme.transitions.easing.sharp\n }));\n setTranslateValue(_this.props, node);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.handleExited = function (node) {\n // No need for transitions when the component is hidden\n node.style.webkitTransition = '';\n node.style.transition = '';\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n return _this;\n }\n\n (0, _createClass2.default)(Slide, [{\n key: \"componentDidMount\",\n // Corresponds to 10 frames at 60 Hz.\n value: function componentDidMount() {\n // state.mounted handle SSR, once the component is mounted, we need\n // to properly hide it.\n if (!this.props.in) {\n // We need to set initial translate values of transition element\n // otherwise component will be shown when in=false.\n this.updatePosition();\n }\n\n this.mounted = true;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.direction !== this.props.direction && !this.props.in) {\n // We need to update the position of the drawer when the direction change and\n // when it's hidden.\n this.updatePosition();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.handleResize.clear();\n }\n }, {\n key: \"updatePosition\",\n value: function updatePosition() {\n if (this.transitionRef) {\n this.transitionRef.style.visibility = 'inherit';\n setTranslateValue(this.props, this.transitionRef);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n onEnter = _this$props.onEnter,\n onEntering = _this$props.onEntering,\n onExit = _this$props.onExit,\n onExited = _this$props.onExited,\n styleProp = _this$props.style,\n theme = _this$props.theme,\n other = (0, _objectWithoutProperties2.default)(_this$props, [\"children\", \"onEnter\", \"onEntering\", \"onExit\", \"onExited\", \"style\", \"theme\"]);\n var style = {}; // We use this state to handle the server-side rendering.\n // We don't know the width of the children ahead of time.\n // We need to render it.\n\n if (!this.props.in && !this.mounted) {\n style.visibility = 'hidden';\n }\n\n style = (0, _extends2.default)({}, style, styleProp, _react.default.isValidElement(children) ? children.props.style : {});\n return _react.default.createElement(_reactEventListener.default, {\n target: \"window\",\n onResize: this.handleResize\n }, _react.default.createElement(_Transition.default, (0, _extends2.default)({\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onExit: this.handleExit,\n onExited: this.handleExited,\n appear: true,\n style: style,\n ref: function ref(_ref) {\n _this2.transitionRef = _reactDom.default.findDOMNode(_ref);\n }\n }, other), children));\n }\n }]);\n return Slide;\n}(_react.default.Component);\n\nSlide.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A single child content element.\n */\n children: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),\n\n /**\n * Direction the child node will enter from.\n */\n direction: _propTypes.default.oneOf(['left', 'right', 'up', 'down']),\n\n /**\n * If `true`, show the component; triggers the enter or exit animation.\n */\n in: _propTypes.default.bool,\n\n /**\n * @ignore\n */\n onEnter: _propTypes.default.func,\n\n /**\n * @ignore\n */\n onEntering: _propTypes.default.func,\n\n /**\n * @ignore\n */\n onExit: _propTypes.default.func,\n\n /**\n * @ignore\n */\n onExited: _propTypes.default.func,\n\n /**\n * @ignore\n */\n style: _propTypes.default.object,\n\n /**\n * @ignore\n */\n theme: _propTypes.default.object.isRequired,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n timeout: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number\n })])\n} : {};\nSlide.defaultProps = {\n direction: 'down',\n timeout: {\n enter: _transitions.duration.enteringScreen,\n exit: _transitions.duration.leavingScreen\n }\n};\n\nvar _default = (0, _withTheme.default)()(Slide);\n\nexports.default = _default;","\n/**\n * Module dependencies.\n */\n\nvar url = require('./url');\nvar parser = require('socket.io-parser');\nvar Manager = require('./manager');\nvar debug = require('debug')('socket.io-client');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = lookup;\n\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\n/**\n * Looks up an existing `Manager` for multiplexing.\n * If the user summons:\n *\n * `io('http://localhost/a');`\n * `io('http://localhost/b');`\n *\n * We reuse the existing instance based on same scheme/port/host,\n * and we initialize sockets for each namespace.\n *\n * @api public\n */\n\nfunction lookup (uri, opts) {\n if (typeof uri === 'object') {\n opts = uri;\n uri = undefined;\n }\n\n opts = opts || {};\n\n var parsed = url(uri);\n var source = parsed.source;\n var id = parsed.id;\n var path = parsed.path;\n var sameNamespace = cache[id] && path in cache[id].nsps;\n var newConnection = opts.forceNew || opts['force new connection'] ||\n false === opts.multiplex || sameNamespace;\n\n var io;\n\n if (newConnection) {\n debug('ignoring socket cache for %s', source);\n io = Manager(source, opts);\n } else {\n if (!cache[id]) {\n debug('new io instance for %s', source);\n cache[id] = Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.query;\n }\n return io.socket(parsed.path, opts);\n}\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = parser.protocol;\n\n/**\n * `connect`.\n *\n * @param {String} uri\n * @api public\n */\n\nexports.connect = lookup;\n\n/**\n * Expose constructors for standalone build.\n *\n * @api public\n */\n\nexports.Manager = require('./manager');\nexports.Socket = require('./socket');\n","\n/**\n * Module dependencies.\n */\n\nvar parseuri = require('parseuri');\nvar debug = require('debug')('socket.io-client:url');\n\n/**\n * Module exports.\n */\n\nmodule.exports = url;\n\n/**\n * URL parser.\n *\n * @param {String} url\n * @param {Object} An object meant to mimic window.location.\n * Defaults to window.location.\n * @api public\n */\n\nfunction url (uri, loc) {\n var obj = uri;\n\n // default to window.location\n loc = loc || global.location;\n if (null == uri) uri = loc.protocol + '//' + loc.host;\n\n // relative path support\n if ('string' === typeof uri) {\n if ('/' === uri.charAt(0)) {\n if ('/' === uri.charAt(1)) {\n uri = loc.protocol + uri;\n } else {\n uri = loc.host + uri;\n }\n }\n\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n debug('protocol-less url %s', uri);\n if ('undefined' !== typeof loc) {\n uri = loc.protocol + '//' + uri;\n } else {\n uri = 'https://' + uri;\n }\n }\n\n // parse\n debug('parse %s', uri);\n obj = parseuri(uri);\n }\n\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = '80';\n } else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = '443';\n }\n }\n\n obj.path = obj.path || '/';\n\n var ipv6 = obj.host.indexOf(':') !== -1;\n var host = ipv6 ? '[' + obj.host + ']' : obj.host;\n\n // define unique id\n obj.id = obj.protocol + '://' + host + ':' + obj.port;\n // define href\n obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : (':' + obj.port));\n\n return obj;\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","/*global Blob,File*/\n\n/**\n * Module requirements\n */\n\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';\n\n/**\n * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.\n * Anything with blobs or files should be fed through removeBlobs before coming\n * here.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @api public\n */\n\nexports.deconstructPacket = function(packet) {\n var buffers = [];\n var packetData = packet.data;\n var pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return {packet: pack, buffers: buffers};\n};\n\nfunction _deconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (isBuf(data)) {\n var placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n } else if (isArray(data)) {\n var newData = new Array(data.length);\n for (var i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n } else if (typeof data === 'object' && !(data instanceof Date)) {\n var newData = {};\n for (var key in data) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n return newData;\n }\n return data;\n}\n\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @api public\n */\n\nexports.reconstructPacket = function(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n};\n\nfunction _reconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n } else if (isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n } else if (typeof data === 'object') {\n for (var key in data) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n\n return data;\n}\n\n/**\n * Asynchronously removes Blobs or Files from data via\n * FileReader's readAsArrayBuffer method. Used before encoding\n * data as msgpack. Calls callback with the blobless data.\n *\n * @param {Object} data\n * @param {Function} callback\n * @api private\n */\n\nexports.removeBlobs = function(data, callback) {\n function _removeBlobs(obj, curKey, containingObject) {\n if (!obj) return obj;\n\n // convert any blob\n if ((withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)) {\n pendingBlobs++;\n\n // async filereader\n var fileReader = new FileReader();\n fileReader.onload = function() { // this.result == arraybuffer\n if (containingObject) {\n containingObject[curKey] = this.result;\n }\n else {\n bloblessData = this.result;\n }\n\n // if nothing pending its callback time\n if(! --pendingBlobs) {\n callback(bloblessData);\n }\n };\n\n fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer\n } else if (isArray(obj)) { // handle array\n for (var i = 0; i < obj.length; i++) {\n _removeBlobs(obj[i], i, obj);\n }\n } else if (typeof obj === 'object' && !isBuf(obj)) { // and object\n for (var key in obj) {\n _removeBlobs(obj[key], key, obj);\n }\n }\n }\n\n var pendingBlobs = 0;\n var bloblessData = data;\n _removeBlobs(bloblessData);\n if (!pendingBlobs) {\n callback(bloblessData);\n }\n};\n","\nmodule.exports = require('./socket');\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = require('engine.io-parser');\n","/**\n * Module dependencies.\n */\n\nvar transports = require('./transports/index');\nvar Emitter = require('component-emitter');\nvar debug = require('debug')('engine.io-client:socket');\nvar index = require('indexof');\nvar parser = require('engine.io-parser');\nvar parseuri = require('parseuri');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n opts = opts || {};\n\n if (uri && 'object' === typeof uri) {\n opts = uri;\n uri = null;\n }\n\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n opts.port = uri.port;\n if (uri.query) opts.query = uri.query;\n } else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n\n this.secure = null != opts.secure ? opts.secure\n : (global.location && 'https:' === location.protocol);\n\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? '443' : '80';\n }\n\n this.agent = opts.agent || false;\n this.hostname = opts.hostname ||\n (global.location ? location.hostname : 'localhost');\n this.port = opts.port || (global.location && location.port\n ? location.port\n : (this.secure ? 443 : 80));\n this.query = opts.query || {};\n if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n this.upgrade = false !== opts.upgrade;\n this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n this.forceJSONP = !!opts.forceJSONP;\n this.jsonp = false !== opts.jsonp;\n this.forceBase64 = !!opts.forceBase64;\n this.enablesXDR = !!opts.enablesXDR;\n this.timestampParam = opts.timestampParam || 't';\n this.timestampRequests = opts.timestampRequests;\n this.transports = opts.transports || ['polling', 'websocket'];\n this.transportOptions = opts.transportOptions || {};\n this.readyState = '';\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.policyPort = opts.policyPort || 843;\n this.rememberUpgrade = opts.rememberUpgrade || false;\n this.binaryType = null;\n this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n this.perMessageDeflate.threshold = 1024;\n }\n\n // SSL options for Node.js client\n this.pfx = opts.pfx || null;\n this.key = opts.key || null;\n this.passphrase = opts.passphrase || null;\n this.cert = opts.cert || null;\n this.ca = opts.ca || null;\n this.ciphers = opts.ciphers || null;\n this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n this.forceNode = !!opts.forceNode;\n\n // other options for Node.js client\n var freeGlobal = typeof global === 'object' && global;\n if (freeGlobal.global === freeGlobal) {\n if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n this.extraHeaders = opts.extraHeaders;\n }\n\n if (opts.localAddress) {\n this.localAddress = opts.localAddress;\n }\n }\n\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n\n // set on heartbeat\n this.pingIntervalTimer = null;\n this.pingTimeoutTimer = null;\n\n this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = require('./transport');\nSocket.transports = require('./transports/index');\nSocket.parser = require('engine.io-parser');\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n debug('creating transport \"%s\"', name);\n var query = clone(this.query);\n\n // append engine.io protocol identifier\n query.EIO = parser.protocol;\n\n // transport name\n query.transport = name;\n\n // per-transport options\n var options = this.transportOptions[name] || {};\n\n // session id if we already have one\n if (this.id) query.sid = this.id;\n\n var transport = new transports[name]({\n query: query,\n socket: this,\n agent: options.agent || this.agent,\n hostname: options.hostname || this.hostname,\n port: options.port || this.port,\n secure: options.secure || this.secure,\n path: options.path || this.path,\n forceJSONP: options.forceJSONP || this.forceJSONP,\n jsonp: options.jsonp || this.jsonp,\n forceBase64: options.forceBase64 || this.forceBase64,\n enablesXDR: options.enablesXDR || this.enablesXDR,\n timestampRequests: options.timestampRequests || this.timestampRequests,\n timestampParam: options.timestampParam || this.timestampParam,\n policyPort: options.policyPort || this.policyPort,\n pfx: options.pfx || this.pfx,\n key: options.key || this.key,\n passphrase: options.passphrase || this.passphrase,\n cert: options.cert || this.cert,\n ca: options.ca || this.ca,\n ciphers: options.ciphers || this.ciphers,\n rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n extraHeaders: options.extraHeaders || this.extraHeaders,\n forceNode: options.forceNode || this.forceNode,\n localAddress: options.localAddress || this.localAddress,\n requestTimeout: options.requestTimeout || this.requestTimeout,\n protocols: options.protocols || void (0)\n });\n\n return transport;\n};\n\nfunction clone (obj) {\n var o = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n var transport;\n if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n transport = 'websocket';\n } else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n var self = this;\n setTimeout(function () {\n self.emit('error', 'No transports available');\n }, 0);\n return;\n } else {\n transport = this.transports[0];\n }\n this.readyState = 'opening';\n\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n } catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n\n transport.open();\n this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n debug('setting transport %s', transport.name);\n var self = this;\n\n if (this.transport) {\n debug('clearing existing transport %s', this.transport.name);\n this.transport.removeAllListeners();\n }\n\n // set up transport\n this.transport = transport;\n\n // set up transport listeners\n transport\n .on('drain', function () {\n self.onDrain();\n })\n .on('packet', function (packet) {\n self.onPacket(packet);\n })\n .on('error', function (e) {\n self.onError(e);\n })\n .on('close', function () {\n self.onClose('transport close');\n });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n debug('probing transport \"%s\"', name);\n var transport = this.createTransport(name, { probe: 1 });\n var failed = false;\n var self = this;\n\n Socket.priorWebsocketSuccess = false;\n\n function onTransportOpen () {\n if (self.onlyBinaryUpgrades) {\n var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n failed = failed || upgradeLosesBinary;\n }\n if (failed) return;\n\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: 'ping', data: 'probe' }]);\n transport.once('packet', function (msg) {\n if (failed) return;\n if ('pong' === msg.type && 'probe' === msg.data) {\n debug('probe transport \"%s\" pong', name);\n self.upgrading = true;\n self.emit('upgrading', transport);\n if (!transport) return;\n Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n debug('pausing current transport \"%s\"', self.transport.name);\n self.transport.pause(function () {\n if (failed) return;\n if ('closed' === self.readyState) return;\n debug('changing transport and sending upgrade packet');\n\n cleanup();\n\n self.setTransport(transport);\n transport.send([{ type: 'upgrade' }]);\n self.emit('upgrade', transport);\n transport = null;\n self.upgrading = false;\n self.flush();\n });\n } else {\n debug('probe transport \"%s\" failed', name);\n var err = new Error('probe error');\n err.transport = transport.name;\n self.emit('upgradeError', err);\n }\n });\n }\n\n function freezeTransport () {\n if (failed) return;\n\n // Any callback called by transport should be ignored since now\n failed = true;\n\n cleanup();\n\n transport.close();\n transport = null;\n }\n\n // Handle any error that happens while probing\n function onerror (err) {\n var error = new Error('probe error: ' + err);\n error.transport = transport.name;\n\n freezeTransport();\n\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n self.emit('upgradeError', error);\n }\n\n function onTransportClose () {\n onerror('transport closed');\n }\n\n // When the socket is closed while we're probing\n function onclose () {\n onerror('socket closed');\n }\n\n // When the socket is upgraded while we're probing\n function onupgrade (to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n\n // Remove all listeners on the transport and on self\n function cleanup () {\n transport.removeListener('open', onTransportOpen);\n transport.removeListener('error', onerror);\n transport.removeListener('close', onTransportClose);\n self.removeListener('close', onclose);\n self.removeListener('upgrading', onupgrade);\n }\n\n transport.once('open', onTransportOpen);\n transport.once('error', onerror);\n transport.once('close', onTransportClose);\n\n this.once('close', onclose);\n this.once('upgrading', onupgrade);\n\n transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n debug('socket open');\n this.readyState = 'open';\n Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n this.emit('open');\n this.flush();\n\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n debug('starting upgrade probes');\n for (var i = 0, l = this.upgrades.length; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n if ('opening' === this.readyState || 'open' === this.readyState ||\n 'closing' === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n this.emit('packet', packet);\n\n // Socket is live - any packet counts\n this.emit('heartbeat');\n\n switch (packet.type) {\n case 'open':\n this.onHandshake(JSON.parse(packet.data));\n break;\n\n case 'pong':\n this.setPing();\n this.emit('pong');\n break;\n\n case 'error':\n var err = new Error('server error');\n err.code = packet.data;\n this.onError(err);\n break;\n\n case 'message':\n this.emit('data', packet.data);\n this.emit('message', packet.data);\n break;\n }\n } else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n this.emit('handshake', data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if ('closed' === this.readyState) return;\n this.setPing();\n\n // Prolong liveness of socket on heartbeat\n this.removeListener('heartbeat', this.onHeartbeat);\n this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n clearTimeout(this.pingTimeoutTimer);\n var self = this;\n self.pingTimeoutTimer = setTimeout(function () {\n if ('closed' === self.readyState) return;\n self.onClose('ping timeout');\n }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n var self = this;\n clearTimeout(self.pingIntervalTimer);\n self.pingIntervalTimer = setTimeout(function () {\n debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n self.ping();\n self.onHeartbeat(self.pingTimeout);\n }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n var self = this;\n this.sendPacket('ping', function () {\n self.emit('ping');\n });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n this.writeBuffer.splice(0, this.prevBufferLen);\n\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n\n if (0 === this.writeBuffer.length) {\n this.emit('drain');\n } else {\n this.flush();\n }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n if ('closed' !== this.readyState && this.transport.writable &&\n !this.upgrading && this.writeBuffer.length) {\n debug('flushing %d packets in socket', this.writeBuffer.length);\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emit('flush');\n }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n this.sendPacket('message', msg, options, fn);\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n if ('function' === typeof data) {\n fn = data;\n data = undefined;\n }\n\n if ('function' === typeof options) {\n fn = options;\n options = null;\n }\n\n if ('closing' === this.readyState || 'closed' === this.readyState) {\n return;\n }\n\n options = options || {};\n options.compress = false !== options.compress;\n\n var packet = {\n type: type,\n data: data,\n options: options\n };\n this.emit('packetCreate', packet);\n this.writeBuffer.push(packet);\n if (fn) this.once('flush', fn);\n this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.readyState = 'closing';\n\n var self = this;\n\n if (this.writeBuffer.length) {\n this.once('drain', function () {\n if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n });\n } else if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n }\n\n function close () {\n self.onClose('forced close');\n debug('socket closing - telling transport to close');\n self.transport.close();\n }\n\n function cleanupAndClose () {\n self.removeListener('upgrade', cleanupAndClose);\n self.removeListener('upgradeError', cleanupAndClose);\n close();\n }\n\n function waitForUpgrade () {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n self.once('upgrade', cleanupAndClose);\n self.once('upgradeError', cleanupAndClose);\n }\n\n return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n debug('socket error %j', err);\n Socket.priorWebsocketSuccess = false;\n this.emit('error', err);\n this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n var self = this;\n\n // clear timers\n clearTimeout(this.pingIntervalTimer);\n clearTimeout(this.pingTimeoutTimer);\n\n // stop event from firing again for transport\n this.transport.removeAllListeners('close');\n\n // ensure transport won't stay open\n this.transport.close();\n\n // ignore further transport communication\n this.transport.removeAllListeners();\n\n // set ready state\n this.readyState = 'closed';\n\n // clear session id\n this.id = null;\n\n // emit close event\n this.emit('close', reason, desc);\n\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n self.writeBuffer = [];\n self.prevBufferLen = 0;\n }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n var filteredUpgrades = [];\n for (var i = 0, j = upgrades.length; i < j; i++) {\n if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n};\n","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n","/**\n * Module requirements.\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar Polling = require('./polling');\nvar Emitter = require('component-emitter');\nvar inherit = require('component-inherit');\nvar debug = require('debug')('engine.io-client:polling-xhr');\n\n/**\n * Module exports.\n */\n\nmodule.exports = XHR;\nmodule.exports.Request = Request;\n\n/**\n * Empty function\n */\n\nfunction empty () {}\n\n/**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction XHR (opts) {\n Polling.call(this, opts);\n this.requestTimeout = opts.requestTimeout;\n this.extraHeaders = opts.extraHeaders;\n\n if (global.location) {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n this.xd = opts.hostname !== global.location.hostname ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(XHR, Polling);\n\n/**\n * XHR supports binary\n */\n\nXHR.prototype.supportsBinary = true;\n\n/**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n\nXHR.prototype.request = function (opts) {\n opts = opts || {};\n opts.uri = this.uri();\n opts.xd = this.xd;\n opts.xs = this.xs;\n opts.agent = this.agent || false;\n opts.supportsBinary = this.supportsBinary;\n opts.enablesXDR = this.enablesXDR;\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n opts.requestTimeout = this.requestTimeout;\n\n // other options for Node.js client\n opts.extraHeaders = this.extraHeaders;\n\n return new Request(opts);\n};\n\n/**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n\nXHR.prototype.doWrite = function (data, fn) {\n var isBinary = typeof data !== 'string' && data !== undefined;\n var req = this.request({ method: 'POST', data: data, isBinary: isBinary });\n var self = this;\n req.on('success', fn);\n req.on('error', function (err) {\n self.onError('xhr post error', err);\n });\n this.sendXhr = req;\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nXHR.prototype.doPoll = function () {\n debug('xhr poll');\n var req = this.request();\n var self = this;\n req.on('data', function (data) {\n self.onData(data);\n });\n req.on('error', function (err) {\n self.onError('xhr poll error', err);\n });\n this.pollXhr = req;\n};\n\n/**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n\nfunction Request (opts) {\n this.method = opts.method || 'GET';\n this.uri = opts.uri;\n this.xd = !!opts.xd;\n this.xs = !!opts.xs;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.agent = opts.agent;\n this.isBinary = opts.isBinary;\n this.supportsBinary = opts.supportsBinary;\n this.enablesXDR = opts.enablesXDR;\n this.requestTimeout = opts.requestTimeout;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n\n this.create();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n\nRequest.prototype.create = function () {\n var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n\n var xhr = this.xhr = new XMLHttpRequest(opts);\n var self = this;\n\n try {\n debug('xhr open %s: %s', this.method, this.uri);\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (var i in this.extraHeaders) {\n if (this.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.extraHeaders[i]);\n }\n }\n }\n } catch (e) {}\n\n if ('POST' === this.method) {\n try {\n if (this.isBinary) {\n xhr.setRequestHeader('Content-type', 'application/octet-stream');\n } else {\n xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');\n }\n } catch (e) {}\n }\n\n try {\n xhr.setRequestHeader('Accept', '*/*');\n } catch (e) {}\n\n // ie6 check\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n if (this.requestTimeout) {\n xhr.timeout = this.requestTimeout;\n }\n\n if (this.hasXDR()) {\n xhr.onload = function () {\n self.onLoad();\n };\n xhr.onerror = function () {\n self.onError(xhr.responseText);\n };\n } else {\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 2) {\n try {\n var contentType = xhr.getResponseHeader('Content-Type');\n if (self.supportsBinary && contentType === 'application/octet-stream') {\n xhr.responseType = 'arraybuffer';\n }\n } catch (e) {}\n }\n if (4 !== xhr.readyState) return;\n if (200 === xhr.status || 1223 === xhr.status) {\n self.onLoad();\n } else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n setTimeout(function () {\n self.onError(xhr.status);\n }, 0);\n }\n };\n }\n\n debug('xhr data %s', this.data);\n xhr.send(this.data);\n } catch (e) {\n // Need to defer since .create() is called directly fhrom the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n setTimeout(function () {\n self.onError(e);\n }, 0);\n return;\n }\n\n if (global.document) {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n};\n\n/**\n * Called upon successful response.\n *\n * @api private\n */\n\nRequest.prototype.onSuccess = function () {\n this.emit('success');\n this.cleanup();\n};\n\n/**\n * Called if we have data.\n *\n * @api private\n */\n\nRequest.prototype.onData = function (data) {\n this.emit('data', data);\n this.onSuccess();\n};\n\n/**\n * Called upon error.\n *\n * @api private\n */\n\nRequest.prototype.onError = function (err) {\n this.emit('error', err);\n this.cleanup(true);\n};\n\n/**\n * Cleans up house.\n *\n * @api private\n */\n\nRequest.prototype.cleanup = function (fromError) {\n if ('undefined' === typeof this.xhr || null === this.xhr) {\n return;\n }\n // xmlhttprequest\n if (this.hasXDR()) {\n this.xhr.onload = this.xhr.onerror = empty;\n } else {\n this.xhr.onreadystatechange = empty;\n }\n\n if (fromError) {\n try {\n this.xhr.abort();\n } catch (e) {}\n }\n\n if (global.document) {\n delete Request.requests[this.index];\n }\n\n this.xhr = null;\n};\n\n/**\n * Called upon load.\n *\n * @api private\n */\n\nRequest.prototype.onLoad = function () {\n var data;\n try {\n var contentType;\n try {\n contentType = this.xhr.getResponseHeader('Content-Type');\n } catch (e) {}\n if (contentType === 'application/octet-stream') {\n data = this.xhr.response || this.xhr.responseText;\n } else {\n data = this.xhr.responseText;\n }\n } catch (e) {\n this.onError(e);\n }\n if (null != data) {\n this.onData(data);\n }\n};\n\n/**\n * Check if it has XDomainRequest.\n *\n * @api private\n */\n\nRequest.prototype.hasXDR = function () {\n return 'undefined' !== typeof global.XDomainRequest && !this.xs && this.enablesXDR;\n};\n\n/**\n * Aborts the request.\n *\n * @api public\n */\n\nRequest.prototype.abort = function () {\n this.cleanup();\n};\n\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\n\nRequest.requestsCount = 0;\nRequest.requests = {};\n\nif (global.document) {\n if (global.attachEvent) {\n global.attachEvent('onunload', unloadHandler);\n } else if (global.addEventListener) {\n global.addEventListener('beforeunload', unloadHandler, false);\n }\n}\n\nfunction unloadHandler () {\n for (var i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","\n/**\n * Gets the keys for an object.\n *\n * @return {Array} keys\n * @api private\n */\n\nmodule.exports = Object.keys || function keys (obj){\n var arr = [];\n var has = Object.prototype.hasOwnProperty;\n\n for (var i in obj) {\n if (has.call(obj, i)) {\n arr.push(i);\n }\n }\n return arr;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n var bytes = arraybuffer.byteLength;\n start = start || 0;\n end = end || bytes;\n\n if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n if (start < 0) { start += bytes; }\n if (end < 0) { end += bytes; }\n if (end > bytes) { end = bytes; }\n\n if (start >= bytes || start >= end || bytes === 0) {\n return new ArrayBuffer(0);\n }\n\n var abv = new Uint8Array(arraybuffer);\n var result = new Uint8Array(end - start);\n for (var i = start, ii = 0; i < end; i++, ii++) {\n result[ii] = abv[i];\n }\n return result.buffer;\n};\n","module.exports = after\n\nfunction after(count, callback, err_cb) {\n var bail = false\n err_cb = err_cb || noop\n proxy.count = count\n\n return (count === 0) ? callback() : proxy\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times')\n }\n --proxy.count\n\n // after first error, rest are passed to err_cb\n if (err) {\n bail = true\n callback(err)\n // future error callbacks will go to error handler\n callback = err_cb\n } else if (proxy.count === 0 && !bail) {\n callback(null, result)\n }\n }\n}\n\nfunction noop() {}\n","/*! https://mths.be/utf8js v2.1.2 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint, strict) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tif (strict) {\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t\t' is not a scalar value'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint, strict) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tif (!checkScalarValue(codePoint, strict)) {\n\t\t\t\tcodePoint = 0xFFFD;\n\t\t\t}\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint, strict);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol(strict) {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\treturn checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol(strict)) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.1.2',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn utf8;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","/**\n * Create a blob builder even when vendor prefixes exist\n */\n\nvar BlobBuilder = global.BlobBuilder\n || global.WebKitBlobBuilder\n || global.MSBlobBuilder\n || global.MozBlobBuilder;\n\n/**\n * Check if Blob constructor is supported\n */\n\nvar blobSupported = (function() {\n try {\n var a = new Blob(['hi']);\n return a.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if Blob constructor supports ArrayBufferViews\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\n */\n\nvar blobSupportsArrayBufferView = blobSupported && (function() {\n try {\n var b = new Blob([new Uint8Array([1,2])]);\n return b.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if BlobBuilder is supported\n */\n\nvar blobBuilderSupported = BlobBuilder\n && BlobBuilder.prototype.append\n && BlobBuilder.prototype.getBlob;\n\n/**\n * Helper function that maps ArrayBufferViews to ArrayBuffers\n * Used by BlobBuilder constructor and old browsers that didn't\n * support it in the Blob constructor.\n */\n\nfunction mapArrayBufferViews(ary) {\n for (var i = 0; i < ary.length; i++) {\n var chunk = ary[i];\n if (chunk.buffer instanceof ArrayBuffer) {\n var buf = chunk.buffer;\n\n // if this is a subarray, make a copy so we only\n // include the subarray region from the underlying buffer\n if (chunk.byteLength !== buf.byteLength) {\n var copy = new Uint8Array(chunk.byteLength);\n copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\n buf = copy.buffer;\n }\n\n ary[i] = buf;\n }\n }\n}\n\nfunction BlobBuilderConstructor(ary, options) {\n options = options || {};\n\n var bb = new BlobBuilder();\n mapArrayBufferViews(ary);\n\n for (var i = 0; i < ary.length; i++) {\n bb.append(ary[i]);\n }\n\n return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\n};\n\nfunction BlobConstructor(ary, options) {\n mapArrayBufferViews(ary);\n return new Blob(ary, options || {});\n};\n\nmodule.exports = (function() {\n if (blobSupported) {\n return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;\n } else if (blobBuilderSupported) {\n return BlobBuilderConstructor;\n } else {\n return undefined;\n }\n})();\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n var prevTime;\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n exports.instances.push(debug);\n\n return debug;\n}\n\nfunction destroy () {\n var index = exports.instances.indexOf(this);\n if (index !== -1) {\n exports.instances.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < exports.instances.length; i++) {\n var instance = exports.instances[i];\n instance.enabled = exports.enabled(instance.namespace);\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","\n/**\n * Module requirements.\n */\n\nvar Polling = require('./polling');\nvar inherit = require('component-inherit');\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n Polling.call(this, opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n if (!global.___eio) global.___eio = [];\n callbacks = global.___eio;\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n var self = this;\n callbacks.push(function (msg) {\n self.onData(msg);\n });\n\n // append to query string\n this.query.j = this.index;\n\n // prevent spurious errors from being emitted when the window is unloaded\n if (global.document && global.addEventListener) {\n global.addEventListener('beforeunload', function () {\n if (self.script) self.script.onerror = empty;\n }, false);\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n var self = this;\n var script = document.createElement('script');\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = function (e) {\n self.onError('jsonp poll error', e);\n };\n\n var insertAt = document.getElementsByTagName('script')[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n setTimeout(function () {\n var iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n var self = this;\n\n if (!this.form) {\n var form = document.createElement('form');\n var area = document.createElement('textarea');\n var id = this.iframeId = 'eio_iframe_' + this.index;\n var iframe;\n\n form.className = 'socketio';\n form.style.position = 'absolute';\n form.style.top = '-1000px';\n form.style.left = '-1000px';\n form.target = id;\n form.method = 'POST';\n form.setAttribute('accept-charset', 'utf-8');\n area.name = 'd';\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete () {\n initIframe();\n fn();\n }\n\n function initIframe () {\n if (self.iframe) {\n try {\n self.form.removeChild(self.iframe);\n } catch (e) {\n self.onError('jsonp polling iframe removal error', e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n var html = '<iframe src=\"javascript:0\" name=\"' + self.iframeId + '\">';\n iframe = document.createElement(html);\n } catch (e) {\n iframe = document.createElement('iframe');\n iframe.name = self.iframeId;\n iframe.src = 'javascript:0';\n }\n\n iframe.id = self.iframeId;\n\n self.form.appendChild(iframe);\n self.iframe = iframe;\n }\n\n initIframe();\n\n // escape \\n to prevent it from being converted into \\r\\n by some UAs\n // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side\n data = data.replace(rEscapedNewline, '\\\\\\n');\n this.area.value = data.replace(rNewline, '\\\\n');\n\n try {\n this.form.submit();\n } catch (e) {}\n\n if (this.iframe.attachEvent) {\n this.iframe.onreadystatechange = function () {\n if (self.iframe.readyState === 'complete') {\n complete();\n }\n };\n } else {\n this.iframe.onload = complete;\n }\n};\n","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parser = require('engine.io-parser');\nvar parseqs = require('parseqs');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:websocket');\nvar BrowserWebSocket = global.WebSocket || global.MozWebSocket;\nvar NodeWebSocket;\nif (typeof window === 'undefined') {\n try {\n NodeWebSocket = require('ws');\n } catch (e) { }\n}\n\n/**\n * Get either the `WebSocket` or `MozWebSocket` globals\n * in the browser or try to resolve WebSocket-compatible\n * interface exposed by `ws` for Node-like environment.\n */\n\nvar WebSocket = BrowserWebSocket;\nif (!WebSocket && typeof window === 'undefined') {\n WebSocket = NodeWebSocket;\n}\n\n/**\n * Module exports.\n */\n\nmodule.exports = WS;\n\n/**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n\nfunction WS (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (forceBase64) {\n this.supportsBinary = false;\n }\n this.perMessageDeflate = opts.perMessageDeflate;\n this.usingBrowserWebSocket = BrowserWebSocket && !opts.forceNode;\n this.protocols = opts.protocols;\n if (!this.usingBrowserWebSocket) {\n WebSocket = NodeWebSocket;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(WS, Transport);\n\n/**\n * Transport name.\n *\n * @api public\n */\n\nWS.prototype.name = 'websocket';\n\n/*\n * WebSockets support binary\n */\n\nWS.prototype.supportsBinary = true;\n\n/**\n * Opens socket.\n *\n * @api private\n */\n\nWS.prototype.doOpen = function () {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n\n var uri = this.uri();\n var protocols = this.protocols;\n var opts = {\n agent: this.agent,\n perMessageDeflate: this.perMessageDeflate\n };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n if (this.extraHeaders) {\n opts.headers = this.extraHeaders;\n }\n if (this.localAddress) {\n opts.localAddress = this.localAddress;\n }\n\n try {\n this.ws = this.usingBrowserWebSocket ? (protocols ? new WebSocket(uri, protocols) : new WebSocket(uri)) : new WebSocket(uri, protocols, opts);\n } catch (err) {\n return this.emit('error', err);\n }\n\n if (this.ws.binaryType === undefined) {\n this.supportsBinary = false;\n }\n\n if (this.ws.supports && this.ws.supports.binary) {\n this.supportsBinary = true;\n this.ws.binaryType = 'nodebuffer';\n } else {\n this.ws.binaryType = 'arraybuffer';\n }\n\n this.addEventListeners();\n};\n\n/**\n * Adds event listeners to the socket\n *\n * @api private\n */\n\nWS.prototype.addEventListeners = function () {\n var self = this;\n\n this.ws.onopen = function () {\n self.onOpen();\n };\n this.ws.onclose = function () {\n self.onClose();\n };\n this.ws.onmessage = function (ev) {\n self.onData(ev.data);\n };\n this.ws.onerror = function (e) {\n self.onError('websocket error', e);\n };\n};\n\n/**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n\nWS.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n var total = packets.length;\n for (var i = 0, l = total; i < l; i++) {\n (function (packet) {\n parser.encodePacket(packet, self.supportsBinary, function (data) {\n if (!self.usingBrowserWebSocket) {\n // always create a new object (GH-437)\n var opts = {};\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n\n if (self.perMessageDeflate) {\n var len = 'string' === typeof data ? global.Buffer.byteLength(data) : data.length;\n if (len < self.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (self.usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n self.ws.send(data);\n } else {\n self.ws.send(data, opts);\n }\n } catch (e) {\n debug('websocket closed before onclose event');\n }\n\n --total || done();\n });\n })(packets[i]);\n }\n\n function done () {\n self.emit('flush');\n\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n setTimeout(function () {\n self.writable = true;\n self.emit('drain');\n }, 0);\n }\n};\n\n/**\n * Called upon close\n *\n * @api private\n */\n\nWS.prototype.onClose = function () {\n Transport.prototype.onClose.call(this);\n};\n\n/**\n * Closes socket.\n *\n * @api private\n */\n\nWS.prototype.doClose = function () {\n if (typeof this.ws !== 'undefined') {\n this.ws.close();\n }\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nWS.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'wss' : 'ws';\n var port = '';\n\n // avoid port if default for schema\n if (this.port && (('wss' === schema && Number(this.port) !== 443) ||\n ('ws' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // append timestamp to URI\n if (this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n/**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n\nWS.prototype.check = function () {\n return !!WebSocket && !('__initialize' in WebSocket && this.name === WS.prototype.name);\n};\n","module.exports = toArray\n\nfunction toArray(list, index) {\n var array = []\n\n index = index || 0\n\n for (var i = index || 0; i < list.length; i++) {\n array[i - index] = list[i]\n }\n\n return array\n}\n","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","import React, { PureComponent } from 'react'\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles'\nimport Grid from '@material-ui/core/Grid/Grid'\nimport SearchContainer from 'App/containers/SearchContainer/SearchContainer'\nimport Typography from '@material-ui/core/Typography/Typography'\nimport styles from './MetaData.styles'\nimport Timer = NodeJS.Timer\n// @ts-ignore\nimport AnimatedNumber from 'react-animated-number'\nimport { FormattedMessage } from 'react-intl'\n\ninterface IMetaDataProps extends WithStyles {\n blockNumber?: number\n}\n\ninterface IMetaDataState {\n timeSince: number\n}\n\nclass MetaData extends PureComponent<IMetaDataProps, IMetaDataState> {\n interval?: Timer\n state = {\n timeSince: 0\n }\n\n componentDidUpdate({ blockNumber }: IMetaDataProps) {\n if (this.props.blockNumber !== blockNumber) {\n this.resetTimer()\n }\n }\n\n resetTimer = () => {\n if (this.interval) {\n clearInterval(this.interval)\n this.setState({ timeSince: 0 })\n }\n this.interval = setInterval(() => {\n this.setState({ timeSince: this.state.timeSince + 166 })\n }, 166)\n }\n\n formatBlockTime = (blockTime: number): string => {\n return blockTime.toFixed(3)\n }\n\n render() {\n const { classes, blockNumber } = this.props\n return (\n <Grid\n container={true}\n alignItems=\"flex-start\"\n justify=\"center\"\n className={classes.container}\n direction=\"column\"\n >\n <Grid\n className={classes.infoContainer}\n container={true}\n alignItems=\"center\"\n >\n <Grid item={true} className={classes.infoSection}>\n <Typography variant=\"display2\" className={classes.value}>\n <AnimatedNumber value={blockNumber || 0} stepPrecision={0} />\n </Typography>\n <Typography variant=\"subheading\">\n <FormattedMessage id=\"Home.components.MetaData.blockHieght\" />\n </Typography>\n </Grid>\n <Grid item={true} className={classes.infoSection}>\n <Typography variant=\"display2\" className={classes.value}>\n <AnimatedNumber\n value={this.state.timeSince / 1000}\n stepPrecision={3}\n formatValue={this.formatBlockTime}\n />\n <FormattedMessage id=\"Home.components.MetaData.seconds\" />\n </Typography>\n <Typography variant=\"subheading\">\n <FormattedMessage id=\"Home.components.MetaData.lastBlock\" />\n </Typography>\n </Grid>\n </Grid>\n <SearchContainer className={classes.searchContainer} />\n </Grid>\n )\n }\n}\nexport const Unconnected = MetaData\nexport default withStyles(styles)(MetaData)\n","import createStyles from '@material-ui/core/styles/createStyles'\nimport { Theme } from '@material-ui/core'\nimport { padding } from 'common/utils/styles'\n\nexport default ({ spacing, palette, breakpoints }: Theme) =>\n createStyles({\n container: {\n height: '100%'\n },\n infoContainer: {\n marginBottom: spacing.unit * 4\n },\n section: {\n position: 'relative',\n zIndex: 5\n },\n searchContainer: {\n position: 'relative',\n background: 'white',\n height: 50,\n marginBottom: spacing.unit * 4,\n padding: padding(0, spacing.unit * 2),\n width: '100%'\n },\n infoSection: {\n textAlign: 'center',\n marginRight: 64\n },\n title: {\n backgroundColor: 'white',\n borderBottom: `1px solid ${palette.background.default}`,\n justifyContent: 'space-between'\n },\n [breakpoints.down('xs')]: {\n infoContainer: {\n paddingLeft: 24,\n flexDirection: 'column',\n alignItems: 'flex-start'\n },\n infoSection: {\n margin: 0,\n display: 'flex',\n alignItems: 'center'\n },\n value: {\n fontSize: '2rem',\n marginRight: 32\n },\n searchContainer: {\n marginBottom: spacing.unit * 2\n }\n }\n })\n","import createStyles from '@material-ui/core/styles/createStyles'\nimport { Theme } from '@material-ui/core'\n\nexport default ({ transitions }: Theme) =>\n createStyles({\n container: {\n height: '100%'\n },\n block: {\n transition: transitions.create('all', {\n easing: transitions.easing.easeInOut,\n duration: transitions.duration.standard\n })\n },\n blockRow: {\n width: '100%',\n position: 'absolute',\n transition: transitions.create('all', {\n easing: transitions.easing.easeInOut,\n duration: transitions.duration.standard\n })\n }\n })\n","import React, { PureComponent } from 'react'\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles'\nimport styles from './BlockVisualizer.styles'\nimport Grid from '@material-ui/core/Grid/Grid'\nimport Slide from '@material-ui/core/Slide/Slide'\n\ninterface IVisualizedBlockProps extends WithStyles {\n alpha: number\n size: number\n slide?: boolean\n spacing: number\n}\n\nclass VisualizedBlock extends PureComponent<IVisualizedBlockProps> {\n render() {\n const { classes, slide, alpha, size, spacing } = this.props\n const style = {\n backgroundColor: `rgba(0,0,0,${alpha})`,\n height: size,\n width: size\n }\n const block = (\n <div>\n <div className={classes.block} style={style} />\n </div>\n )\n return (\n <Grid item={true} style={{ padding: spacing / 2 }}>\n {!slide ? (\n block\n ) : (\n <Slide direction=\"down\" in={true} timeout={350}>\n {block}\n </Slide>\n )}\n </Grid>\n )\n }\n}\n\nexport const Unconnected = VisualizedBlock\nexport default withStyles(styles)(VisualizedBlock)\n","import React, { PureComponent } from 'react'\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles'\nimport styles from './BlockVisualizer.styles'\nimport Grid from '@material-ui/core/Grid/Grid'\nimport VisualizedBlock from 'Home/components/BlockVisualizer/VisualizedBlock'\n\ninterface IBlockRowProps extends WithStyles {\n row: number\n count: number\n size: number\n spacing: number\n totalRows: number\n}\n\nclass BlockRow extends PureComponent<IBlockRowProps> {\n render() {\n const { classes, row, totalRows, count, size, spacing } = this.props\n const offset = totalRows - row\n return (\n <div\n className={classes.blockRow}\n style={{ top: offset * (size + spacing) }}\n >\n <Grid\n container={true}\n // spacing={8}\n style={{\n margin: -spacing,\n width: `calc(100% + ${2 * spacing}px)`\n }}\n direction=\"row-reverse\"\n >\n {Array.from(Array(count)).map((_, idx) => {\n const alpha =\n offset > 12 ? 0.25 : offset * 0.015 - idx * 0.0125 + 0.04\n return (\n <VisualizedBlock\n spacing={spacing}\n size={size}\n key={`row${row}${idx}`}\n alpha={alpha}\n slide={row === totalRows}\n />\n )\n })}\n </Grid>\n </div>\n )\n }\n}\nexport const Unconnected = BlockRow\nexport default withStyles(styles)(BlockRow)\n","import React, { PureComponent } from 'react'\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles'\nimport styles from './BlockVisualizer.styles'\nimport debounce from 'debounce'\nimport EventListener from 'react-event-listener'\nimport BlockRow from 'Home/components/BlockVisualizer/BlockRow'\nimport { withWidth } from '@material-ui/core'\nimport { WithWidth } from '@material-ui/core/withWidth'\nimport { compose } from 'recompose'\n\nconst DEFAULT_ROWS = 9\n\nconst RESIZE_INTERVAL = 166 // Corresponds to 10 frames at 60 Hz.\n\nconst BLOCKS_PER_ROW = 3\n\ninterface IBlockVisualizerProps extends WithStyles {\n blockNum: number\n}\n\ninterface IBlockVisualizerState {\n rowsToShow: number\n blockSize: number\n spacing: number\n}\n\nconst WidthSize = {\n xs: 32,\n sm: 80\n}\nconst SpacingSize = {\n xs: 2,\n sm: 6\n}\n\nclass BlockVisualizer extends PureComponent<\n IBlockVisualizerProps,\n IBlockVisualizerState\n> {\n static getDerivedStateFromProps({ width }: WithWidth) {\n return {\n // @ts-ignore\n blockSize: WidthSize[width] ? WidthSize[width] : 96,\n // @ts-ignore\n spacing: SpacingSize[width] ? SpacingSize[width] : 8\n }\n }\n\n resizer: { (params: any): void; clear(): any }\n div = React.createRef<HTMLDivElement>()\n\n constructor(props: IBlockVisualizerProps) {\n super(props)\n // initial height before div is rendered\n this.state = { rowsToShow: DEFAULT_ROWS, blockSize: 96, spacing: 8 }\n this.resizer = debounce(\n () => {\n const element = this.div.current\n if (element) {\n this.updateRows()\n }\n },\n RESIZE_INTERVAL,\n true\n )\n }\n\n componentWillUnmount() {\n this.resizer.clear()\n }\n\n componentDidUpdate() {\n this.updateRows()\n }\n\n updateRows = () => {\n const rowsToShow = Math.ceil(\n this.div.current!.clientHeight /\n (this.state.blockSize + this.state.spacing)\n )\n if (rowsToShow !== this.state.rowsToShow) {\n this.setState({ rowsToShow })\n }\n }\n\n renderRows = () => {\n const { rowsToShow, blockSize, spacing } = this.state\n const totalRows = Math.ceil(this.props.blockNum / BLOCKS_PER_ROW)\n const rows = []\n for (let i = 0; i <= rowsToShow; i++) {\n const row = totalRows - i\n let count = BLOCKS_PER_ROW\n if (i === 0) {\n count = this.props.blockNum % BLOCKS_PER_ROW || BLOCKS_PER_ROW\n }\n rows.push(\n <BlockRow\n key={row}\n row={row}\n totalRows={totalRows}\n count={count}\n size={blockSize}\n spacing={spacing}\n />\n )\n }\n return rows\n }\n\n render() {\n const { classes } = this.props\n const { blockSize, spacing } = this.state\n return (\n <div\n ref={this.div}\n className={classes.container}\n style={{\n width: (blockSize + spacing) * 3\n }}\n >\n <EventListener target=\"window\" onResize={this.resizer} />\n {this.renderRows()}\n </div>\n )\n }\n}\n\nexport const Unconnected = BlockVisualizer\nexport default compose<any, any>(\n withWidth(),\n withStyles(styles)\n // @ts-ignore\n)(BlockVisualizer)\n","import React, { PureComponent } from 'react'\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles'\nimport Toolbar from '@material-ui/core/Toolbar/Toolbar'\nimport { List } from 'immutable'\nimport { TransactionRecord } from 'Transactions/types/transactions'\nimport MetaData from 'Home/components/MetaData/MetaData'\nimport TransactionsTable from 'Transactions/components/TransactionsTable/TransactionsTable'\nimport Typography from '@material-ui/core/Typography/Typography'\nimport BlockVisualizer from 'Home/components/BlockVisualizer/BlockVisualizer'\nimport styles from './Home.styles'\nimport Icon from '@material-ui/core/Icon/Icon'\nimport Grid from '@material-ui/core/Grid/Grid'\nimport { ButtonWithTracking, IconButtonWithTracking } from 'tracking/components'\nimport { NavLink } from 'react-router-dom'\nimport { Hidden } from '@material-ui/core'\nimport { FormattedMessage } from 'react-intl'\n\ninterface IHomeProps extends WithStyles {\n variant: 'sm' | 'lg'\n transactions?: List<TransactionRecord>\n loading: boolean\n blockNumber?: number\n rows: number\n error: string\n retry(): any\n}\n\nclass Home extends PureComponent<IHomeProps> {\n render() {\n const {\n variant,\n retry,\n classes,\n blockNumber,\n rows,\n transactions,\n loading,\n error\n } = this.props\n return (\n <div className={classes.home}>\n <div className={classes.visualizerContainer}>\n {blockNumber && <BlockVisualizer blockNum={blockNumber} />}\n </div>\n <div className={classes.metaContainer}>\n <MetaData blockNumber={blockNumber} />\n </div>\n <div className={classes.section}>\n <Toolbar className={classes.titleContainer}>\n <Typography variant=\"title\">\n <FormattedMessage id=\"Home.components.Home.latestTrasactions\" />\n </Typography>\n <Grid\n container={true}\n alignItems=\"center\"\n className={classes.title}\n >\n <IconButtonWithTracking\n className={classes.button}\n label=\"Retry Transactions\"\n id=\"refresh\"\n color=\"secondary\"\n onClick={retry}\n >\n <Icon fontSize=\"small\">refresh</Icon>\n </IconButtonWithTracking>\n <Hidden xsDown>\n <ButtonWithTracking\n id=\"View_ALL\"\n variant=\"outlined\"\n size=\"small\"\n label=\"All Transaction\"\n component={NavLink}\n to=\"/transactions\"\n >\n <FormattedMessage id=\"Home.components.Home.viewAll\" />\n </ButtonWithTracking>\n </Hidden>\n </Grid>\n </Toolbar>\n <TransactionsTable\n variant={variant}\n error={error}\n rows={rows}\n loading={loading}\n retry={retry}\n transactions={transactions}\n />\n <Hidden smUp>\n <Toolbar className={classes.titleContainer}>\n <ButtonWithTracking\n id=\"View_ALL\"\n fullWidth\n variant=\"outlined\"\n label=\"All Transaction\"\n component={NavLink}\n to=\"/transactions\"\n >\n <FormattedMessage id=\"Home.components.Home.viewAll\" />\n </ButtonWithTracking>\n </Toolbar>\n </Hidden>\n </div>\n </div>\n )\n }\n}\n\nexport const Unconnected = Home\nexport default withStyles(styles)(Home)\n","import createStyles from '@material-ui/core/styles/createStyles'\nimport { Theme } from '@material-ui/core'\nimport { padding } from 'common/utils/styles'\n\nexport default ({ spacing, palette, breakpoints }: Theme) =>\n createStyles({\n home: {\n position: 'relative'\n },\n visualizerContainer: {\n position: 'absolute',\n right: 8,\n bottom: 0,\n top: 0\n },\n metaContainer: {\n marginTop: 32,\n position: 'relative',\n zIndex: 50\n },\n section: {\n position: 'relative',\n zIndex: 5,\n marginBottom: spacing.unit * 4\n },\n titleContainer: {\n backgroundColor: 'white',\n borderBottom: `1px solid ${palette.background.default}`,\n justifyContent: 'space-between'\n },\n title: {\n width: 'initial'\n },\n button: {\n marginRight: 0\n },\n error: {\n padding: padding(spacing.unit * 10, 0)\n },\n [breakpoints.up('sm')]: {\n metaContainer: {\n minWidth: 520,\n height: 360,\n width: '60%'\n }\n },\n [breakpoints.up('md')]: {\n metaContainer: {\n marginTop: 0,\n height: 'calc(100vh - 60px - 64px)',\n maxHeight: 550\n },\n visualizerContainer: {\n right: -spacing.unit,\n top: spacing.unit * 18\n },\n button: {\n marginRight: spacing.unit\n }\n }\n })\n","import React, { PureComponent } from 'react'\nimport Home from 'Home/components/Home/Home'\nimport { connect } from 'react-redux'\nimport { bindActionCreators, Dispatch } from 'redux'\nimport { transactionActions } from 'Transactions/redux/transactionStore'\nimport {\n ITransactionQueryActionCreator,\n TransactionRecord\n} from 'Transactions/types/transactions'\nimport { Subscription } from 'rxjs'\nimport { List } from 'immutable'\nimport openSocket from 'socket.io-client'\nimport { BlockType } from 'Blocks/types/blocks'\nimport Socket = SocketIOClient.Socket\nimport { appUrls } from 'App/constants/urls'\nimport { compose } from 'recompose'\nimport { withWidth } from '@material-ui/core'\nimport { WithWidth } from '@material-ui/core/withWidth'\n\ninterface IHomePageContainerState {\n transactions?: List<TransactionRecord>\n blockNumber?: number\n variant: 'sm' | 'lg'\n loading: boolean\n error: string\n}\n\nclass HomePageContainer extends PureComponent<\n IDispatchProps & WithWidth,\n IHomePageContainerState\n> {\n static getDerivedStateFromProps({ width }: WithWidth) {\n return {\n variant: width === 'xs' || width === 'sm' ? 'sm' : 'lg'\n }\n }\n\n subscription?: Subscription\n state = {\n variant: 'lg' as 'lg',\n transactions: undefined,\n loading: true,\n error: '',\n blockNumber: undefined\n }\n socket?: Socket\n\n componentDidMount() {\n this.socket = openSocket(appUrls.SOCKET_URL)\n this.socket.on('newBlock', (block: BlockType) => {\n this.setState({ blockNumber: block.number })\n })\n this.getLatestTransactions()\n }\n\n componentDidUpdate(\n _: Readonly<IDispatchProps & WithWidth>,\n prevState: Readonly<IHomePageContainerState>\n ): void {\n if (prevState.variant !== this.state.variant) {\n this.getLatestTransactions()\n }\n }\n\n getLatestTransactions = () => {\n this.setState({ loading: true, error: '' })\n this.subscription = this.props.transactionActions\n .query({\n limit: this.state.variant === 'lg' ? 25 : 10\n })\n .observable.subscribe(\n ({ transactions }) => this.setState({ transactions, loading: false }),\n error => this.setState({ loading: false, error })\n )\n }\n\n componentWillUnmount() {\n this.socket && this.socket.close()\n this.subscription && this.subscription.unsubscribe()\n }\n\n render() {\n const { blockNumber, transactions, loading, error, variant } = this.state\n return (\n <Home\n variant={variant}\n retry={this.getLatestTransactions}\n rows={variant === 'lg' ? 25 : 10}\n transactions={transactions}\n blockNumber={blockNumber}\n loading={loading}\n error={error}\n />\n )\n }\n}\n\ninterface IDispatchProps {\n transactionActions: {\n query: ITransactionQueryActionCreator\n }\n}\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchProps => ({\n transactionActions: {\n query: bindActionCreators(transactionActions.query.create, dispatch)\n }\n})\n\nexport const Unconnected = HomePageContainer\n\n// @ts-ignore\nexport default compose<any, any>(\n withWidth(),\n connect(\n null,\n mapDispatchToProps\n )\n)(HomePageContainer)\n"],"sourceRoot":""}